作为一名学生并完成了我的学业,我研究了C#中Unity的开发,以学习如何使用引擎,而且首先要获得乐趣。
Unity的优点之一是您可以直接在拖放中传递游戏对象参数,但要使此变量成为可能,则必须将所述变量公开,这与我在课堂上学到的相反(属性必须尽可能经常是私有的。)
我的问题是,如何确保具有私有属性的结果相同,即在不使用拖放系统的情况下手动恢复游戏对象?
预先感谢,对不起我的英语水平。
答案 0 :(得分:8)
为了使它出现在编辑器中,不必将变量标记为public
。只需将SerializeField
属性放在private
变量之上,它就会显示在编辑器中。
[SerializeField]
private GameObject cam1;
您还可以执行相反的操作,即make public
变量不在编辑器中显示。这可以通过HideInInspector
属性来完成。
[HideInInspector]
public GameObject cam1;
但是Unity中还有另一种方法可以避免 拖放?
是的。很多方法。
如果场景中已经存在GameObject,则可以使用GameObject.FindXXX
,GameObject.Find
之类的GameObject.FindGameObjectWithTag
函数之一
例如,
[HideInInspector]
public GameObject cam1;
// Use this for initialization
void Start()
{
cam1 = GameObject.Find("Name of GameObject");
}
如果GameObject只是一个预制件,则将预制件放入名为 Resources 的文件夹中,然后使用Resources.Load
进行加载。有关更详尽的示例,请参见this。
最后,如果您只想获取该GameObject的组件,就像您的cam1
变量(不是GameObject而是组件)一样,首先,像上面一样找到GameObject,然后使用{{1} }函数从中获取组件。
GetComponent