先看图:

每个cube都吸附了一个一样的脚本。

Awake:

(1) 当我们一个Obj (obj已经enable)吸附了一个脚本,无论该脚本是否Enable,Awake在游戏运行开始都会调用.

(2) 如果脚本吸附的obj,没有enable,那么Awake是不会执行的。(与(1)对比)

(3) 优先于任何Start()之前执行。

(4) 只会执行一次

OnEnable:

(1)什么时候调用: 在脚本enable时(前提:吸附的obj已经enable) 或者 脚本已经enable (吸附的对象才enable)

Start:

(1)优先于任何Update之前执行

(2)只会执行一次

(3)当脚本没有enable或者吸附的obj没有enable时,是不会调用的。

update:

(1)每帧都会执行一次

(2)执行时间不固定

(3)优先于任何LateUpdate之前执行

(4)当脚本没有enable或者吸附的obj没有enable时,是不会调用的。

LateUpdate:

(1)每帧都会执行一次

(2)在所有Update调用完成之后才调用

(3)当脚本没有enable或者吸附的obj没有enable时,是不会调用的。

FixedUpdate:

(1)每隔固定的时间会执行一次(此时间可以设定,Project Setting/Time/Fixed Timestep)

(2)当脚本没有enable或者吸附的obj没有enable时,是不会调用的。

特殊例子(转:http://blog.csdn.net/candycat1992/article/details/22927713):

但是!!!在实际编程中,有一个特例。举一个例子,我们在脚本A里定义了自己的函数function0,脚本A被添加到一个prefab上。当我们在脚本B中使用Instantiate函数实例化了该prefab,并且立刻调用了function0,那么是Awake、Start、Update、function0调用顺序是什么?按我最初的想法,从先到后分别是Awake、Start、Update、function0。

[csharp] view plain copy  print?
  1. GameObject obj = Instantiate(prefab) as GameObject;
  2. obj.GetComponent<A>().function0();

脚本A如下:

[csharp] view plain copy  print?
  1. public int a = 0;
  2. void Awake() {
  3. Debug.Log("Awake " + a);
  4. a = 1;
  5. }
  6. void Start() {
  7. Debug.Log("Start " + a);
  8. a = 2;
  9. }
  10. void Update() {
  11. Debug.Log("Update " + a);
  12. }
  13. public void function0() {
  14. Debug.Log("function0 " + a);
  15. a = 3;
  16. }

结果如下:

从上图可以看出,我们自定义的函数是先于Start和Update函数的。这有什么影响呢?如果你在function0中修改了某些变量,在Start函数里对它们进行了赋值,那么function0所做的更改就会消失;又或者某些变量在Start函数里初始化,那么调用funciton0的时候就会错空指针错误!因此,由于Unity的脚本仅自动生成了Start函数,而没有Awake函数,有些人就喜欢在Start函数里对GameObject等类型的对象初始化,这往往会造成错误。因此,建议就是,请尽量在Awake函数里进行对象初始化!当然,也建议Unity可以自动生成Awake函数,这样也许偷懒的人就会更少啦~

Awake OnEnable Start Update LateUpdate FixedUpdate相关推荐

  1. Update和FixedUpdate的区别

    MonoBehaviour.Update 更新 当MonoBehaviour启用时,其Update在每一帧被调用. MonoBehaviour.FixedUpdate 固定更新 当MonoBehavi ...

  2. Unity之Update与FixedUpdate区别

    下面这段代码演示游戏暂停 using UnityEngine; using System.Collections;public class GamePauseTest : MonoBehaviour ...

  3. unity3d Update()和FixedUpdate()的区别

    从字面上理解,它们都是在更新时会被调用,并且会循环的调用. 但是Update会在每次渲染新的一帧时,被调用. 而FixedUpdate会在每个固定的时间间隔被调用,那么要是Update 和FixedU ...

  4. Unity游戏暂停之Update与FixedUpdate区别

    游戏暂停 示例程序 下面这段代码演示游戏暂停 using UnityEngine; using System.Collections;public class GamePauseTest : Mono ...

  5. Unity3D Update() 和 FixedUpdate()区别--unity3Dday02

    Unity3D Update() 和 FixedUpdate()区别 http://www.cocos2dev.com/?p=307 今天有人问我问什么我在处理物理逻辑的时候把代码放在了FixedUp ...

  6. Unity Awake OnEnable Start 和Update 先后顺序探究

    --记录下看到的有用的东西,免得又搞忘了 原文 Unity中,我们知道Awake,OnEnable,Start和Update是按照先后顺序运行的. 但是,问题是,多个脚本在一个物体身上的时候,一个脚本 ...

  7. update与fixedupdate检测键盘输入的出现的问题

    先看看二者的区别 unity默认设置中,fixedupdate调用频率为50,在这个情况下,它的调用次数一般是比update要高的. 同:当MonoBehaviour启用时,其在每一帧被调用.都是用来 ...

  8. 【Unity】Update()和FixedUpdate()

    Update()每帧调用,FixedUpdate()以指定频率被调用. 可以在 Edit -> project settings -> Time -> Fixed Timestep ...

  9. 学习日志[自我监督与复习用]

    2021/8/24 正式开始学习,写下此日志进行监督和回忆知识点的提醒 今日学习了unity2D的内容有: 1.左上角的五种基本操作 2.新建Tilemap(瓦片地图)-分类- 1.长方形-2.六边形 ...

最新文章

  1. 业务,工程和算法的互殴现场
  2. python3精要(23)-递归与函数列表
  3. LiveVideoStackCon 2020北京站-售票通道关闭倒计时2天
  4. Git 工作区恢复暂存区操作总览
  5. 面试题3:二维数组中的查找
  6. python中集合变量_详解python的变量缓存机制
  7. java如何实现进程间的通信?
  8. No qualifying bean of type;Unsatisfied dependency expressed through field 解决办法(总结全网)
  9. ffmpeg 下载网上m3u8的视频文件
  10. 排列组合——排列公式的推理和组合
  11. 测量网页元素的大小和间距的利器
  12. Mysql——DQL(查询语句语法、格式、举例)以及全部数据库源码,复制就可实现全部功能
  13. 将阿拉伯数字转为中文数字读法
  14. 用计算机制作多媒体作品使用的素材都必须,制作多媒体作品(选择题).doc
  15. 第3章 数据分析工具Pandas
  16. zabbix 监控过程详解
  17. 获取摄像头视频流,进行人脸识别(支持单人脸识别、车牌识别)
  18. Android开发--实现Android引导页
  19. 陆涛喜欢夏琳吗_夏琳·香布利斯(Charlene Chambliss):从心理学到自然语言处理和应用研究
  20. Revit 二次开发 未能加载文件或程序集“Microsoft.Xaml.Behaviors”或它的某一个依赖项

热门文章

  1. Kubernetes服务安全加固
  2. Eclipse中关闭不需要的插件
  3. 【Python-3.3】字典存储调查问卷
  4. Nginx配置Thinkphp3.2.3配置,访问Nginx报 No input file specified. 的问题解决
  5. Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)问题解决
  6. 开发微信小程序 中遇到的坑 及解决方法
  7. .vue文件在webstorm中es6语法报错解决方法
  8. html2canvas+jspdf 完美解决html导出且分页 解决图片显示不全问题
  9. Git不断询问我ssh密钥密码
  10. 用户输入和命令行参数