为什么在update里面写obj.SetActive(!obj.activeSelf)只会生效一次

img

img


在里面写obj.SetActive(true) ,只能切换一次,只能输出一组123 321
但是手动写obj.SetActive(false);
obj.SetActive(true);
就能一直切换存在状态,。

你的obj如果是脚本挂载的GameObject的话,使用obj.activeSelf第一次会把GameObject设为inactive,然后就不会再有下一次update调用了,脚本的update只有在GameObject处于active状态并且脚本为enable时才会被调用

gameObject.SetActive(bool b); 的API:

一旦物体被隐藏gameObject.SetActive(false);,则其无法通过通过gameObject.SetActive(true);再显示出来,因为一旦被隐藏之后,表示这个物体已经不在场景中了,用代码GameObject.Find();也找不到 ,本隐藏物体挂载的代码也被禁用,即Update也不会执行,

解决办法:
把脚本挂载在别的物体身上,操作要隐藏的物体,这样就可以通过gameObject.SetActive(true);再次激活