1.Awake

Awake用于脚本唤醒。此方法为系统执行的第一个方法,用于脚本的初始化,在脚本的生命周期中只执行一次。

2.Start

Start方法在Awake之后执行,在脚本生命周期中只执行一次。

由于Awake和Start函数的特性与C#中的构造函数类似(一般情况下,在整个脚本生命周期中只执行一次),所以在Unity中也常用来初始化类的成员变量。

3.FixedUpdate

FixedUpdate用于固定频率更新

在Unity中依次单击菜单项Edit→Project Settings→Time,可以打开Time Manager面板,其中Fixed Timestep选项用于设置FixedUpdate更新频率,默认为0.02秒,即每秒50次。

通常情况下,FixedUpdate()会比Update()更频繁的调用。当帧率较低时,在某一帧的时间间隔内FixedUpdate可能会被调用多久;而当帧率很高时,在某一帧的时间间隔内FixedUpdate可能根本不会被调用。

还有一点,在Unity中,若设置Time Scale值为0,可以实现动力学特性的暂停,即所有在FixedUpdate函数中的代码都不会被执行。(可以用这个特性来实现游戏暂停的功能)

4.Update

Update用于正常更新,即用于帧更新后同步场景状态。此方法每帧都会由系统自动调用一次。

在使用Update()时,对于一些变量,如速度、移动距离等通常需要乘以Time.deltaTime来抵消帧率带来的影响,使物体状态的改变看起来比较均匀、正常。而在FixedUpdate中,由于其更新帧率固定,所以不需要采用Time.deltaTime来修正状态改变帧率。

5.LateUpdate

LateUpdate用于延迟更新,此方法在Update()之后执行,每一帧调用一次。

6.OnGUI

OnGUI用来绘制用户交互界面,在一帧中会调用多次。其中,与布局(Layout)和重绘(Repaint)相关的事件会被优先处理,然后是键盘和鼠标事件。

7.OnDestroy

OnDestroy在当前脚本销毁时调用。若脚本中动态分配了内存,可以在OnDestroy()中进行释放。

下面脚本可以测试事件函数的顺序。

 public class MyScript : MonoBehaviour
{
void Awake()
{
print("Awake is called");
} void Start()
{
print("Start is called");
} void OnGUI()
{
print("OnGUI is called");
} void Update()
{
print("Update is called");
} void LateUpdate()
{
print("LateUpdate is called");
} void FixedUpdate()
{
print("FixedUpdate is called");
} void OnDestroy()
{
print("OnDestroy is called");
}
}

Unity官方提供的事件顺序图。

Unity脚本时间执行顺序的更多相关文章

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

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

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

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

  3. Unity 脚本的执行顺序

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

  4. 【转】Unity3D中脚本的执行顺序和编译顺序(vs工程引用关系)

    http://www.cnblogs.com/champ/p/execorder.html 在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行.与 ...

  5. (转)Unity3D中脚本的执行顺序和编译顺序(vs工程引用关系)

    自:http://www.cnblogs.com/champ/p/execorder.html 在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行 ...

  6. 【转】Unity3D中脚本的执行顺序和编译顺序

    支持原文,原文请戳: Unity3D中脚本的执行顺序和编译顺序 在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行.与脚本有关的也就是编译和执行啦 ...

  7. Unity中脚本的执行顺序总结(@WhiteTaken)

    (Editor)以上是Unity官方文档中的截图,脚本在被挂载到物体上,会启用Editor的方法Reset. (Initialization)当执行脚本开始,初始化的过程中,依次执行的是Awake-& ...

  8. Unity3D中脚本的执行顺序和编译顺序

    http://www.cnblogs.com/champ/p/execorder.html 在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行.与 ...

  9. Postman集合/文件夹/请求中脚本的执行顺序

    Postman的Collection(集合)/Folder(集合的子文件夹)/Request(请求)中都有Pre-request Script(请求前脚本)和Tests(请求后脚本) 这个功能类似于不 ...

随机推荐

  1. mybatis,sql 批量更新

    <update id="update81OrderStatus" parameterType="java.util.Map">    update ...

  2. Css、javascript、dom(一)

    一:Css 1.1:position定义和用法 position 属性规定元素的定位类型. 可能的值 值 描述 absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定 ...

  3. apache commons math 示例代码

    apache commons Math是一组偏向科学计算为主的函数,主要是针对线性代数,数学分析,概率和统计等方面. 我虽然是数学专业毕业,当年也是抱着<数学分析>啃,但是好久不用,这些概 ...

  4. 扩展GridView实现的一个自定义无刷新分页,排序,支持多种数据源的控件TwfGridView

    最近项目View层越来越趋向于无刷新化,特别是数据展示方面,还要对Linq有很好的支持.在WebFrom模式的开发中,GridView是一个功能很强大,很常用的控件,但是他也不是完美的,没有自带的无刷 ...

  5. redis.conf配置详细翻译解析

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb ...

  6. 设置myeclipse新建jsp文件默认编码为UTF-8

    有三个地方需要改编码设置: 1. window-->preference-->general-->contenttype 然后在content types中展开每一个子项,并在Def ...

  7. javascript高级程序设计---第二、三章

    在HTML中引用javaScript javascript的几个属性  type async(异步加载 只适用于外部JS且IE8以上 HTML5规范 先于load执行) src defer(延迟加载 ...

  8. c++中的重载(Overload)、覆盖(重写,Override) 、隐藏与using声明

    这些概念有时记住了,但可能没多久就忘了,还是记下来吧.网上找的一篇不错:这里  1 重载与覆盖 成员函数被重载的特征: (1)相同的范围(在同一个类中,不包括继承来的): (2)函数名字相同: (3) ...

  9. Android 网络开发之WIFI

    WIFI就是一种无线联网技术,常见的是使用无线路由器.那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网.如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为&qu ...

  10. pure virtual function call

    2015-04-08 10:58:19 基类中定义了纯虚函数,派生类中将其实现. 如果在基类的构造函数或者析构函数中调用了改纯虚函数, 则会出现R6205 Error: pure virtual fu ...