Unity 中的 GetComponent (C#)

Posted

技术标签:

【中文标题】Unity 中的 GetComponent (C#)【英文标题】:GetComponent in Unity (C#) 【发布时间】:2016-09-06 13:15:45 【问题描述】:

所以我尝试在另一个 GameObject 中访问脚本组件,但为了更快地做到这一点,我有一个 Component 变量。

Component map = GameObject.FindWithTag("Map").GetComponent<Map>();

现在当我想在地图组件中引用一个变量时

map.selected = true;

它给了我一个错误

UnityEngine.Component 不包含选定的定义。

Selected 是 Map 脚本中的公共 bool,附加到 Map GameObject。

当我走得很远

GameObject.FindWithTag("Map").GetComponent<Map>().selected = true;

一切正常,但我正在寻找一种方法来缩短我的代码(这个脚本在很多情况下都使用 Map 中的变量,所以我想用更短的方式编写它)。

【问题讨论】:

【参考方案1】:

发生这种情况是因为您将变量 map 实例化为组件,因此编译器将在 Component 类中查找选定的属性。 试试这样的:MapScript map = GameObject.FindWithTag("Map").GetComponent&lt;MapScript&gt;(); (将 MapScript 替换为该脚本的实际名称。) 我不完全确定这个确切的语法是否有效,我目前无法测试它,所以请尝试看看它是否有效。如果没有,我会在回家后尽快调查。

【讨论】:

以上是关于Unity 中的 GetComponent (C#)的主要内容,如果未能解决你的问题,请参考以下文章

在unity3D: c# 怎样调用另外一个c#脚本里面东西?

unity3d 全局单例脚本怎么用

unity c#

unity c# 代码示例

Unity3D点击按钮让物体变透明

unity怎么获取一个物体上材质球的名字?有多个材质球,怎么用C#脚本判断这个物体上的材质球是哪个