Unity中的GetComponent(C#)

时间:2016-05-11 08:50:42

标签: c# unity3d components

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

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

现在我想在地图组件中引用变量

map.selected = true;

它给我一个错误

  

UnityEngine.Component不包含所选&#34;的定义。

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

当我走很长的路时

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

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

1 个答案:

答案 0 :(得分:2)

这是因为您将变量map实例化为Component,因此编译器将在Component类中查找selected属性。
尝试这样的事情:
MapScript map = GameObject.FindWithTag("Map").GetComponent<MapScript>();
(将MapScript替换为该脚本的实际名称。)
我不完全确定这个确切的语法是否有效,而且我目前无法对此进行测试,所以请试着看看它是否有效。如果没有,我会在我回家后立即调查。