Unity知识二:显示和隐藏游戏对象

Posted 博士装呗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity知识二:显示和隐藏游戏对象相关的知识,希望对你有一定的参考价值。

游戏中界面需要来回切换,一种方法是把它们都显示出来,用到某个游戏对象的时候让它的位置发生变化,是我们能看到;另一种方法就是游戏对象都放在这里,只是有些显示,而有些要隐藏。当我需要某些物体显示的时候它再显示,同时也可以把不必要的游戏物体给隐藏起来。
隐藏游戏物体用SetActive()方法。
比如:

GameObject gameLoginBackground;
    // Use this for initialization
    void Start () 
        gameLoginBackground = GameObject.Find("LoginBackground");
        gameLoginBackground.SetActive(false);
    

这样,游戏物体LoginBackground就被隐藏掉了。

注意:(这里有一个很重要的点)
我们说可以SetActive()方法将一个显示的游戏对象设置成隐藏的,但是一个本来就隐藏的游戏对象是无法设置成显示的!
什么意思?来看一张图片:

我们可能会想,我在这个Inspector面板中把它的对号给去掉,它的SetActive()方法的值就是false,等到我想让它显示了,我再设置SetActive()方法的值为true,这样就好了。
不行的亲~
这个对号和SetActive()方法一点关系都没有,你把这个对号去掉了,那这个游戏物体就是不能用的,它都不能用,还怎么去调用它的SetActive()方法?那只能找不到而报错:“object reference not set to an instance of an object”,意思是未将对象引用到对象的实例,说简单点就是这个东西找不到。
所以一个本来就隐藏(现在说不可用更合适)的游戏物体是不能通过SetActive()方法设置显示与隐藏的。
那么我们怎么做呢?
不管怎样,这个游戏物体是存在的,所以只要是游戏中物体,我们都要保证它的对号是勾选上的,然后进行隐藏和显示。

//首先声明一个对象
GameObject gameBackground;
//找到游戏对象
gameBackground = GameObject.FindGameObjectWithTag ("GameBackground");
//先设置它的可用为false,就看不见它了
gameBackground.SetActive (false);

XXOO
//经过一系列的XXOO后设置它的可用为true,就可以看见它了
gameBackground.SetActive(true);

注意事项二:
当一个游戏物体的对象的SetActive()设置为false时,那么该游戏物体的Destroy()方法就不能再使用了,原因跟上面类似。所以用不到的话直接Destroy掉吧。

以上是关于Unity知识二:显示和隐藏游戏对象的主要内容,如果未能解决你的问题,请参考以下文章

unity游戏物体隐藏了协程会如何

Unity3D 灵巧小知识点 ☀️ | 获取某个游戏对象下的所有子物体

unity3d 物体scene中隐藏

unity点击按钮出现子按钮

Unity中获取游戏对象的几种方式

转载 ---- Unity3D自学记录代码获取隐藏游戏对象