码迷,mamicode.com
首页 > 其他好文 > 详细

脚本生命周期

时间:2018-04-08 15:58:41      阅读:437      评论:0      收藏:0      [点我收藏+]

标签:方法   事件   变量   enable   ring   fixed   bubuko   频率   程序   

技术分享图片

Reset:在用户点击检视面板的Reset按钮或者首次添加该组件时被调用。此函数只在编辑模式下被调用。
Reset最常用于在检视面板中给定一个默认值。

Awake(一次):Awake在所有对象被初始化之后调用,用于在游戏开始之前初始化变量或游戏状态。在脚本整个生命周期内Awake仅被调用一次。Awake不能用来执行协同程序。
每个游戏物体上的Awake以随机的顺序被调用。所以在一般时候,用Awake来设置脚本间的引用,然后用Start来传递信息。

OnEnable:在Awake之后调用。控制脚本中组件的启动与禁用。
例如:this.enable=false,则会直接跳转到OnDisable方法执行一次,其它的任何方法,将不再被执行。

Start(一次):Start函数总是在Awake函数之后调用。Start在生命周期中只被调用一次。
Start和Awake的不同是Start只在脚本实例被启用时调用。你可以按需调整延迟初始化代码,协调初始化顺序。

FixedUpdate(每帧):固定帧(固定的时间间隔,不受帧率(FPS)影响)更新,更新频率默认为0.02s。
FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。

Update(每帧):正常帧更新,每一帧都执行,用于更新逻辑。
Update比较适合做控制。如果卡帧了Update就不会再执行,而FixedUpdate则继续执行。

LateUpdate(每帧):在所有Update函数调用后被调用,和fixedupdate一样都是每一帧都被调用执行。
LateUpdate可用于调整脚本执行顺序。例如:相机跟随就可以用这个函数,即人物移动在Update中实现,相机跟随在LateUpdate()中实现,播放后的效果是:角色移动发生在前,相机移动紧跟其后。(如果相机也在Update里执行,就可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。)

OnGUI(每帧)在渲染和处理GUI事件时调用。每帧都执行。
在界面显示一个button或label时常常用到它。

OnDisable:脚本被卸载时,OnDisable将被调用(脚本不会被销毁)。OnDisable不能用于协同程序。
常用于一些用于清理的事件。

OnDestroy:当MonoBehaviour将被销毁时,这个函数被调用。OnDestroy只会在预先已经被激活的游戏物体上被调用。OnDestroy也不能用于协同程序。

函数执行顺序:

**Awake→OnEable→ Start → FixedUpdate→Update →LateUpdate →OnGUI →Reset → OnDisable →OnDestroy **

最先执行的方法是Awake,这是生命周期的开始,用于进行激活时的初始化代码,如果在这个地方将当前脚本禁用:this.enable=false,则会直接执行OnDisable方法,其它的任何方法,都将不再被执行。

如果当前脚本处于可用状态:this.enable =true,则按正常的执行顺序是继续向下执行OnEnable

再向下执行,会进行一个判断,如果Start方法还没有被执行,则会被执行一次,如果已经被执行了,则不会再被执行。这是个什么意思呢?我们可以在某个脚本中将组件禁用this.enable=false,再启用时会转到OnEnable处执行,这时继续向下走,发现Start执行过了,将不再被执行。比如说:第一次启用时,将怪物的初始位置定在了(0,0,0)点,然后怪物可能会发生了位置的变换,后来被禁用了,再次启用时,不会让怪物又回到初始的(0,0,0)位置。

继续向后执行,就是FixedUpdate了,然后是Update,再然后是LateUpdate,如果后面写了Reset,则会又回到Update,在这4个事件间可以进行循环流动

再向后执行,就进入了渲染模块(Rendering),非常重要的一个方法就是OnGUI,用于绘制图形界面,每帧都执行。

再向后,就是卸载模块(TearDown),当被禁用(enable=false)时,会执行OnDisable方法,但是这个时候,脚本并不会被销毁,在这个状态下,可以重新回到OnEnable状态(enable=true)。

当手动销毁或附属的游戏对象被销毁时,OnDestroy才会被执行,当前脚本的生命周期结束。



作者:FLY旳影子
链接:https://www.jianshu.com/p/32ce8768607f
來源:简书

脚本生命周期

标签:方法   事件   变量   enable   ring   fixed   bubuko   频率   程序   

原文地址:https://www.cnblogs.com/CgaNote/p/8744788.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!