业精于勤,荒于嬉;行成于思,毁于随。
一、问题描述
当我们想点击主界面的设置按钮时,我们希望会显示隐藏的设置面板。如果我们通过在脚本中使用GameObject.Find(string n)获取我们的面板,运行时我们会发现问题,就是我们并没有成功获取这个面板。
原因很简单,GameObject.Find(string n)这个API只能找到场景中已经激活(即active的对象),由于我们隐藏了设置面板,那么我们无法获取它的引用。针对这个问题,我给出了以下的解决方式。
二、解决方式
我可以先在脚本中声明一个GameObject类型成员,然后我在 Inspector界面中把设置面板拖拽到脚本上,这样一来,我们就不需要在场景开始时通过代码去找我们的面板,从而避免了我们的设置面板是空引用的问题。
三、总结
总之,就是不用API,靠自己手动把面板对象拖拽到脚本的成员位置上。当然,在面对大型项目时,还是推荐实现一个UI管理器类和面板基类。但是对于小项目,可以用手拖,毕竟Unity提供了这样的一个方式,为何不用呢?XD