找回密码
 立即注册
查看: 6476|回复: 90

[常见问题] MonoBehaviour生命周期讲解

[复制链接]
发表于 2015-2-3 17:52 | 显示全部楼层 |阅读模式
[size=0.83em]life.jpg (186.67 KB, 下载次数: 0)
下载附件  [url=]保存到相册[/url]
[color=rgb(153, 153, 153) !important]13 秒前 上传




  蛮牛教育上写到关于MonoBehaviour生命周期的一篇文章,特地拿来分享:
   最先执行的方法是Awake,这是生命周期的开始,用于进行激活时的初始化代码,一般可以在这个地方将当前脚本禁用:this.enable=false,如果这样做了,则会直接跳转到OnDisable方法执行一次,然后其它的任何方法,都将不再被执行。
如果当前脚本处于可用状态,则正常的执行顺序是继续向下执行OnEnable,当然我们可以在另外一个脚本中实现这个脚本组件的启动:this.enab=true;
     再向下执行,会进行一个判断,如果Start方法还没有被执行,则会被执行一次,如果已经被执行了,则不会再被执行。

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

       继续向后执行,就是FixUpdate了,然后是Update,再然后是LateUpdate,如果后面写了Reset,则会又回到Update,在这4个事件间可以进行循环流动。
      再向后执行,就进入了渲染模块(Rendering),非常重要的一个方法就是OnGUI,用于绘制图形界面。当然,如果你使用了NGUI,这个生命周期的事情你就不用考虑了。
      再向后,就是卸载模块(TearDown),这里主要有两个方法OnDisable与OnDestroy。当被禁用(enable=false)时,会执行OnDisable方法,但是这个时候,脚本并不会被销毁,在这个状态下,可以重新回到OnEnable状态(enable=true)。当手动销毁或附属的游戏对象被销毁时,OnDestroy才会被执行,当前脚本的生命周期结束。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2017-4-4 16:49 | 显示全部楼层
很不错
发表于 2017-4-4 16:01 | 显示全部楼层
楼主是超人
发表于 2017-4-4 15:51 | 显示全部楼层
顶顶多好
发表于 2017-4-4 16:10 | 显示全部楼层
真心顶
发表于 2017-4-4 15:52 | 显示全部楼层
难得一见的好帖
发表于 2017-4-19 21:05 | 显示全部楼层
很不错
发表于 2017-4-19 21:40 | 显示全部楼层
楼主是超人
发表于 2017-4-19 21:24 | 显示全部楼层
真心顶
发表于 2017-4-19 21:50 | 显示全部楼层
说的非常好
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-28 01:56 , Processed in 0.096977 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表