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");
}
}

打印结果例如以下

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd29haWx2bWVuZ21lbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

  以下我们针对每个方法进行具体的说明(摘自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脚本执行顺序

    Awake ->OnEable-> Start ->-> FixedUpdate-> Update  -> LateUpdate ->OnGUI ->R ...

  2. Unity脚本执行顺序自研框架

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/52372611 作者:car ...

  3. unity 脚本编译顺序

    根据官方的解释,它们的编译顺序如下: (1)所有在Standard Assets.Pro Standard Assets或者Plugins文件夹中的脚本会产生一个Assembly-CSharp-fil ...

  4. unity 脚本执行顺序设置 Script Execution Order Settings

     通过Edit->Project Settings->Script Execution Order打开MonoManager面板  或者选择任意脚本在Inspector视图中点击Execu ...

  5. unity脚本的运行顺序以及单例的实现

    unity引擎把所有脚本先行编译后,在运行的时候一批,一批的函数进行执行. unity脚本自带函数执行顺序如下:将下面脚本挂在任意物体运行即可得到 Awake ->OnEable-> St ...

  6. 5. Unity脚本的执行顺序

    Unity是不支持多线程的,也就是说我们必须要在主线程中操作它,可是Unity可以同时创建很多脚本,并且可以分别绑定在不同的游戏对象身上,他们各自都在执行自己的生命周期感觉像是多线程,并行执行脚本的, ...

  7. Unity 脚本中的主要函数的 执行顺序及其介绍

    Awake ->OnEable-> Start -> FixedUpdate-> Update  -> LateUpdate ->OnGUI ->OnDisa ...

  8. Unity 脚本的执行顺序

    在Unity脚本中常用到的函数就是下面这些,他们的顺序也是按照箭头的方向执行的. Awake ->OnEable-> Start -> FixedUpdate-> Update ...

  9. Unity脚本生命周期与执行顺序

    文章目录 脚本生命周期 MonoBehavior生命周期图 脚本执行顺序 自定义执行顺序 在Unity中,脚本可以理解为附加在游戏对象上的用于定义游戏对象行为的指令代码.必须绑定在游戏对象上才能开始它 ...

随机推荐

  1. Java Tread多线程(0)一个简单的多线程实例

    作者 : 卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/39341887 本文演示,一个简单的多线程实例,并简单分析一下线程. 编程多 ...

  2. java单元测试(Junit)

    JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework),供Java开发人员编写单元测试之用. 对不同性质的被 ...

  3. atitit..主流 浏览器 js 发动机 内核 市场份额 attialx总结vOa9

    atitit..主流 浏览器 js 发动机  内核 市场份额 attialx总结vOa9 1. 浏览器内核 1 2. 浏览器的主要组件包含: 2 2.1. 主要组件体系结构 2 2.2. WebCor ...

  4. 程序员联盟有自己的论坛啦!基于Discuz构建,还不来注册~

    我把程序员联盟网站的论坛建好了,哈哈哈.用的是Discuz这个腾讯旗下的中文bbs建设软件.正在完善论坛,添加各种模块和应用.大家可以先去注册一下:coderunity.com/bbs/forum.p ...

  5. 乐在其中设计模式(C#) - 提供者模式(Provider Pattern)

    原文:乐在其中设计模式(C#) - 提供者模式(Provider Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 提供者模式(Provider Pattern) 作者:weba ...

  6. 查看oracle数据库的连接数以及用户

    查看oracle数据库的连接数以及用户 11.查询oracle的连接数2select count(*) from v$session;32.查询oracle的并发连接数4select count(*) ...

  7. Freedur为什么免费?

    难道没有人看到他们官方网站权? Freedur倒闭了...... 一个中国人.Chris Lee,作为Freedur的会计师.窃取了公司的银行帐号.并将Freedur的官方站点指向自己的空间. 而且声 ...

  8. YUV摘要格式

    始终保持视频数据YUV联系,因为基于其产品的组织不同的公司格不同的类型定义,派生出多种不同YUV格公式. 大体,YUV从在点的形式的像素组织中,有两个:1.planer状态.2.packet状态. p ...

  9. 4.帧循环(游戏循环),schedule

     1 概述 游戏乃至图形界面的本质是不断地画图,然而画图并非任意的,不论什么游戏都须要遵循一定的规则来呈现出来,这些规则就体现为游戏逻辑.游戏逻辑会控制游戏内容,使其依据用户输入和时间流逝而改变. ...

  10. TFS:TF30042 数据库已满 处理方法

    原文:TFS:TF30042 数据库已满 处理方法 今天早上,公司打来电话,说TFS(Team Foundation Server)微软源代码管理软件签入不了,报错:TF30042 数据库已满. 经过 ...