探讨Unity脚本的生命周期

来源:互联网 发布:阿里云资源 编辑:程序博客网 时间:2024/05/18 01:11

在中国使用unity引擎的人很多,因为它上手起来很简单。

但是也正是因为简单,好多人就下意识地忽略掉了它一些很基础的东西。

前几天我就因为unity的生命周期吃点亏,所以我现在想仔细探讨下。

在开始之前,我先贴一张unity官方的图。在这张图,大家会更直观地认清生命周期。

在这里我并不是讨论生命周期排序问题,我说的就是执行顺序问题。

大家都应该用过对象池,对象池的流程我并不需要多说。

当一个对象回收之后,我们需要把该对象setActive(false),进行隐藏,等之后需要的时候再激活。


现在我创建个脚本

分别Awake

Start,

Onenable

update

OnDisable

OnDestroy

然后我再点击运行

当我取消脚本上的“对号”之后,之后调用OnDisable,并没有调用OnDestroy,当我删除对象之后才调用OnDestroy。

而且


当我从新激活之后,只有调用OnEnable和Update,并没有调用Awake和start,这就意味着当重新激活的时候你不可以从新用start和awake对某些变量赋值。

打个比方就是你在start中,int  a=8,之后a在update或者在其他函数中改变,变成7,当你从新启用时,a=7,。


这个问题可大可小,因为要是从对象池中激活对象的话,难免要对对象进行赋值,如果这个变量在之后改变的话,就不会再start中进行重置。


原创粉丝点击