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

来源:互联网 发布:mac os 10.12原版安装 编辑:程序博客网 时间:2024/05/22 12:49

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

0 0
原创粉丝点击