unity脚本自带函数执行顺序例如以下:将以下脚本挂在随意物体执行就可以得到

  Awake ->OnEable-> Start ->-> FixedUpdate-> Update  -> LateUpdate ->OnGUI ->Reset -> OnDisable ->OnDestroy

using UnityEngine;
using System.Collections;public class timetest : MonoBehaviour {void LateUpdate(){print("LateUpdate");}void OnGUI(){print("OnGUI");}void Awake(){print("Awake");}void OnEnable(){print("OnEnable");}void Start(){print("Start");}void Update(){print("Update");}void FixedUpdate(){print("FixedUpdate");}void Reset(){print("OnReset");}void OnDestroy(){print("OnDestroy");}void OnDisable(){print("OnDisable");}
}

打印结果例如以下

  以下我们针对每个方法进行具体的说明(摘自http://www.unitymanual.com/thread-14461-1-1.html):

  1.Awake:用于在游戏開始之前初始化变量或游戏状态。在脚本整个生命周期内它仅被调用一次.Awake在全部对象被初始化之后调用。所以你能够安全的与其它对象对话或用诸如GameObject.FindWithTag()这种函数搜索它们。每一个游戏物体上的Awake以随机的顺序被调用。

因此。你应该用Awake来设置脚本间的引用。并用Start来传递信息Awake总是在Start之前被调用。它不能用来运行协同程序。

  2.Start:仅在Update函数第一次被调用前调用。Start在behaviour的生命周期中仅仅被调用一次。

它和Awake的不同是Start仅仅在脚本实例被启用时调用。

你能够按需调整延迟初始化代码。Awake总是在Start之前运行。这同意你协调初始化顺序。在全部脚本实例中。Start函数总是在Awake函数之后调用。

  3.FixedUpdate:固定帧更新。在Unity导航菜单条中。点击“Edit”-->“Project Setting”-->“Time”菜单项后,右側的Inspector视图将弹出时间管理器,当中“Fixed Timestep”选项用于设置FixedUpdate()的更新频率,更新频率默觉得0.02s。
4.Update:正常帧更新,用于更新逻辑。每一帧都运行,处理Rigidbody时。须要用FixedUpdate取代Update。比如:给刚体加一个作用力时,你必须应用作用力在FixedUpdate里的固定帧,而不是Update中的帧。(两者帧长不同)FixedUpdate,每固定帧绘制时运行一次。和update不同的是FixedUpdate是渲染帧运行,假设你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。

FixedUpdate比較适用于物理引擎的计算,由于是跟每帧渲染有关。

Update就比較适合做控制。

  5.LateUpdate:在全部Update函数调用后被调用,和fixedupdate一样都是每一帧都被调用运行,这可用于调整脚本运行顺序。比如:当物体在Update里移动时,尾随物体的相机能够在LateUpdate里实现。LateUpdate,在每帧Update运行完成调用。他是在全部update结束后才调用,比較适合用于命令脚本的运行。官网上样例是摄像机的尾随,都是在全部update操作完才跟进摄像机。不然就有可能出现摄像机已经推进了,可是视角里还未有角色的空帧出现。

  6.OnGUI:在渲染和处理GUI事件时调用。

比方:你画一个button或label时经常常使用到它。

这意味着OnGUI也是每帧运行一次。

  7.Reset:在用户点击检视面板的Resetbutton或者首次加入该组件时被调用。此函数仅仅在编辑模式下被调用。

Reset最经常使用于在检视面板中给定一个默认值。

  8.OnDisable:当物体被销毁时 OnDisable将被调用,而且可用于随意清理代码。脚本被卸载时,OnDisable将被调用,OnEnable在脚本被加载后调用。注意: OnDisable不能用于协同程序。

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

  备注:

  协同程序,即在主程序执行时同一时候开启还有一段逻辑处理,来协同当前程序的执行。换句话说,开启协同程序就是开启一个线程。在Unity3d中。使用MonoBehaviour.StartCoroutine方法就可以开启一个协同程序,也就是说该方法必须在MonoBehaviour或继承于MonoBehaviour的类中调用。
        游戏蛮牛:http://www.unitymanual.com

版权声明:本文博主原创文章,博客,未经同意不得转载。

unity脚本运行顺序具体的解释相关推荐

  1. [Unity脚本运行时更新]C#7新特性

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 本文是该系列<Unity脚本运行时更新带来了什么?>的第5篇. 洪流学堂公众号回复runtime,获取本系列所有文章. Unity2 ...

  2. [Unity脚本运行时更新]C#7.3新特性

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 本文是该系列<Unity脚本运行时更新带来了什么?>的第8篇. 洪流学堂公众号回复runtime,获取本系列所有文章. Unity2 ...

  3. [Unity脚本运行时更新]C#7.2新特性

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 本文是该系列<Unity脚本运行时更新带来了什么?>的第7篇. 洪流学堂公众号回复runtime,获取本系列所有文章. Unity2 ...

  4. [Unity脚本运行时更新]C#7.1新特性

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 本文是该系列<Unity脚本运行时更新带来了什么?>的第6篇. 洪流学堂公众号回复runtime,获取本系列所有文章. Unity2 ...

  5. [Unity脚本运行时更新]C#6新特性

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 本文是该系列<Unity脚本运行时更新带来了什么?>的第4篇. 洪流学堂公众号回复runtime,获取本系列所有文章. Unity2 ...

  6. [Unity脚本运行时更新]C#5新特性

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 本文是该系列<Unity脚本运行时更新带来了什么?>的第3篇. 洪流学堂公众号回复runtime,获取本系列所有文章. Unity2 ...

  7. [Unity脚本运行时更新]C#4新特性

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 本文是该系列<Unity脚本运行时更新带来了什么?>的第2篇. 洪流学堂公众号回复runtime,获取本系列所有文章. Unity2 ...

  8. Unity脚本运行时更新带来了什么?

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 本文是该系列<Unity脚本运行时更新带来了什么?>的第一篇,后续会结合Unity实例介绍C# 4 - C# 6都带来了具体哪些变化 ...

  9. (转)MOMO的Unity3D研究院之深入理解Unity脚本的执行顺序(六十二)

    http://www.xuanyusong.com/archives/2378 Unity是不支持多线程的,也就是说我们必须要在主线程中操作它,可是Unity可以同时创建很多脚本,并且可以分别绑定在不 ...

最新文章

  1. overlay网络的优势
  2. linux中重定向学习总结
  3. 动态代理3之代理工厂实现
  4. 配置FTP服务2(vsftpd 配置虚拟账号)
  5. C#实现网页加载后将页面截取成长图片 | Playwright版
  6. 【渝粤教育】国家开放大学2018年春季 0674-22T财务管理 参考试题
  7. 凡事多找找自己的原因_布袋除尘器灰斗积粉过多、堵灰该咋办?别急,从这8个方面找原因...
  8. 【转】建立公用程序库,提升软件开发生产力
  9. java序列化的方法_【Java常见序列化与反序列方法总结】
  10. es6 Class简介
  11. spark代码中添加logger_Spark RDD中Runtime流程解析
  12. UI设计实用素材|扁平化设计的模板
  13. Gradle教程--基础篇
  14. java高级实训输出张三李四_假设某数据库表中有一个姓名字段,查找姓名为张三和李四的条件是...
  15. android,解决手动创建的桌面快捷方式无法跳转到制定的activity的问题,提示未安装应用程序
  16. 本地事务与分布式事务
  17. autojs自定义Switch
  18. C语言操作SQLite3简明教程
  19. Unity演示场景枫丹白露(Fontainebleau)技术分析
  20. Struct复杂数据类型的UDF编写、GenericUDF编写

热门文章

  1. qsettings mysql_qt连接mysql
  2. c语言 温探程序,学习第二天,再探C语言
  3. mysql索引分析和优化_MySQL索引分析和优化
  4. free mybatis 不生效_关于 Mybatis 设置懒加载无效的问题
  5. java一系列数组的表示方法_Java入门系列-10-数组
  6. python读取fiddler_python3 使用Fiddler捕获的Raw信息带cookie使用GET或POST获取
  7. spring aop搭建(2) :基于代码的实现
  8. spring mvc hello
  9. 记一次某APK的恶意WIFI攻击
  10. elasticsearch api中的delete操作