如何在Unity中防止“公开”?

时间:2018-06-27 23:28:05

标签: c# oop unity3d unityscript

作为一名学生并完成了我的学业,我研究了C#中Unity的开发,以学习如何使用引擎,而且首先要获得乐趣。

Unity的优点之一是您可以直接在拖放中传递游戏对象参数,但要使此变量成为可能,则必须将所述变量公开,这与我在课堂上学到的相反(属性必须尽可能经常是私有的。)

我的问题是,如何确保具有私有属性的结果相同,即在不使用拖放系统的情况下手动恢复游戏对象?

预先感谢,对不起我的英语水平。

enter image description here

1 个答案:

答案 0 :(得分:8)

为了使它出现在编辑器中,不必将变量标记为public。只需将SerializeField属性放在private变量之上,它就会显示在编辑器中。

[SerializeField]
private GameObject cam1;

您还可以执行相反的操作,即make public变量不在编辑器中显示。这可以通过HideInInspector属性来完成。

[HideInInspector]
public GameObject cam1;
  

但是Unity中还有另一种方法可以避免   拖放?

是的。很多方法。

如果场景中已经存在GameObject,则可以使用GameObject.FindXXXGameObject.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