物体与组件的激活状态

  有时,我们需要让场景中的某个物体,或是物体上的某个组件,暂时性地停止工作。比如我们想要制作一个暗门机关,当按下一个按钮的时候,墙面会暂时消失,隔一段时间才会恢复原样。

  当然,你可以选择直接直接销毁墙面,这样也算是个暗门,但是销毁物体是非常浪费资源的一种做法,在这里我们完全可以只是让它暂时停止工作,而不是消灭它。想要做到这种功能,来看接下来的内容。

【1】控制组件的激活状态

  如果我们仅仅是想要让一个游戏物体上的某个组件停止工作,我们可以使用enabled来控制组件的激活状态。例如:

1 public MeshRenderer mMesh;
2 
3 void Update()
4 {
5     if(Input.GetKeyDown(KeyCode.Space))
6     {
7         mMesh.enabled = false;
8     }
9 }

这样,这个组件就会暂时性地停止工作,直至开发者重新激活这个组件。当然,更简单的办法就是直接从Inspector面板中把对应组件取消勾选,那它也会停止工作。

【2】控制物体的激活状态

如果需要让整个物体都停止工作的话,就不能使用上文的那种方式了。对于GameObject,我们应该使用SetActive()来操作物体。例如:

1 void Start()
2 {
3     gameObject.SetActive(false);
4 }

当一个物体被关闭,其下所有的组件同样都不会工作。若一个父类物体被关闭,其子类同样会被关闭。同样,我们也可以直接操作Inspector面板来实现这个功能。

【3】相关的Unity函数

当物体激活或停止时,是可以触发一些生命周期函数的。例如:

  • OnEnable():对象激活时调用。
  • OnDisable():对象禁用时调用。
  • OnDestroy():对象被销毁时调用。

配合这些Unity函数,就能够实现很多特定的功能。

猜你喜欢

转载自www.cnblogs.com/inkice/p/10817688.html
今日推荐