作为一名学生并完成了我的学年,我学习了 C# 中的 Unity 开发,以学习如何使用引擎,而且最重要的是为了获得乐趣。
Unity 的优点之一是您可以直接在拖/放中传递游戏对象参数,但要做到这一点,必须将所述变量公开,这与我在类里面学到的(属性必须尽可能多地是私有(private)的)。
我的问题是,如何确保具有与私有(private)属性相同的结果,即在不使用拖放系统的情况下手动恢复游戏对象?
提前致谢,对我的英语水平感到抱歉。
最佳答案
无需将变量标记为 public
即可使其出现在编辑器中。只需将 SerializeField
属性放在 private
变量的顶部,它就会显示在编辑器中。
[SerializeField]
private GameObject cam1;
您也可以做相反的事情,使
public
变量不显示在编辑器中。这可以通过 HideInInspector
属性来完成。[HideInInspector]
public GameObject cam1;
是的。很多种方法。
如果 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。最后,如果您只想获取该游戏对象的组件,就像您的
cam1
变量一样,它不是一个游戏对象而是一个组件,首先,像我上面所做的那样找到游戏对象,然后使用 GetComponent
函数从中获取组件。private Camera cam1;
// Use this for initialization
void Start()
{
GameObject obj = GameObject.Find("Main Camera");
cam1 = obj.GetComponent<Camera>();
}
关于c# - 如何在 Unity 中防止 "public"?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51072746/