Awake OnEnable Start Update LateUpdate FixedUpdate
先看图:
每个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。
- GameObject obj = Instantiate(prefab) as GameObject;
- obj.GetComponent<A>().function0();
脚本A如下:
- public int a = 0;
- void Awake() {
- Debug.Log("Awake " + a);
- a = 1;
- }
- void Start() {
- Debug.Log("Start " + a);
- a = 2;
- }
- void Update() {
- Debug.Log("Update " + a);
- }
- public void function0() {
- Debug.Log("function0 " + a);
- a = 3;
- }
结果如下:
从上图可以看出,我们自定义的函数是先于Start和Update函数的。这有什么影响呢?如果你在function0中修改了某些变量,在Start函数里对它们进行了赋值,那么function0所做的更改就会消失;又或者某些变量在Start函数里初始化,那么调用funciton0的时候就会错空指针错误!因此,由于Unity的脚本仅自动生成了Start函数,而没有Awake函数,有些人就喜欢在Start函数里对GameObject等类型的对象初始化,这往往会造成错误。因此,建议就是,请尽量在Awake函数里进行对象初始化!当然,也建议Unity可以自动生成Awake函数,这样也许偷懒的人就会更少啦~
Awake OnEnable Start Update LateUpdate FixedUpdate相关推荐
- Update和FixedUpdate的区别
MonoBehaviour.Update 更新 当MonoBehaviour启用时,其Update在每一帧被调用. MonoBehaviour.FixedUpdate 固定更新 当MonoBehavi ...
- Unity之Update与FixedUpdate区别
下面这段代码演示游戏暂停 using UnityEngine; using System.Collections;public class GamePauseTest : MonoBehaviour ...
- unity3d Update()和FixedUpdate()的区别
从字面上理解,它们都是在更新时会被调用,并且会循环的调用. 但是Update会在每次渲染新的一帧时,被调用. 而FixedUpdate会在每个固定的时间间隔被调用,那么要是Update 和FixedU ...
- Unity游戏暂停之Update与FixedUpdate区别
游戏暂停 示例程序 下面这段代码演示游戏暂停 using UnityEngine; using System.Collections;public class GamePauseTest : Mono ...
- Unity3D Update() 和 FixedUpdate()区别--unity3Dday02
Unity3D Update() 和 FixedUpdate()区别 http://www.cocos2dev.com/?p=307 今天有人问我问什么我在处理物理逻辑的时候把代码放在了FixedUp ...
- Unity Awake OnEnable Start 和Update 先后顺序探究
--记录下看到的有用的东西,免得又搞忘了 原文 Unity中,我们知道Awake,OnEnable,Start和Update是按照先后顺序运行的. 但是,问题是,多个脚本在一个物体身上的时候,一个脚本 ...
- update与fixedupdate检测键盘输入的出现的问题
先看看二者的区别 unity默认设置中,fixedupdate调用频率为50,在这个情况下,它的调用次数一般是比update要高的. 同:当MonoBehaviour启用时,其在每一帧被调用.都是用来 ...
- 【Unity】Update()和FixedUpdate()
Update()每帧调用,FixedUpdate()以指定频率被调用. 可以在 Edit -> project settings -> Time -> Fixed Timestep ...
- 学习日志[自我监督与复习用]
2021/8/24 正式开始学习,写下此日志进行监督和回忆知识点的提醒 今日学习了unity2D的内容有: 1.左上角的五种基本操作 2.新建Tilemap(瓦片地图)-分类- 1.长方形-2.六边形 ...
最新文章
- 业务,工程和算法的互殴现场
- python3精要(23)-递归与函数列表
- LiveVideoStackCon 2020北京站-售票通道关闭倒计时2天
- Git 工作区恢复暂存区操作总览
- 面试题3:二维数组中的查找
- python中集合变量_详解python的变量缓存机制
- java如何实现进程间的通信?
- No qualifying bean of type;Unsatisfied dependency expressed through field 解决办法(总结全网)
- ffmpeg 下载网上m3u8的视频文件
- 排列组合——排列公式的推理和组合
- 测量网页元素的大小和间距的利器
- Mysql——DQL(查询语句语法、格式、举例)以及全部数据库源码,复制就可实现全部功能
- 将阿拉伯数字转为中文数字读法
- 用计算机制作多媒体作品使用的素材都必须,制作多媒体作品(选择题).doc
- 第3章 数据分析工具Pandas
- zabbix 监控过程详解
- 获取摄像头视频流,进行人脸识别(支持单人脸识别、车牌识别)
- Android开发--实现Android引导页
- 陆涛喜欢夏琳吗_夏琳·香布利斯(Charlene Chambliss):从心理学到自然语言处理和应用研究
- Revit 二次开发 未能加载文件或程序集“Microsoft.Xaml.Behaviors”或它的某一个依赖项
热门文章
- Kubernetes服务安全加固
- Eclipse中关闭不需要的插件
- 【Python-3.3】字典存储调查问卷
- Nginx配置Thinkphp3.2.3配置,访问Nginx报 No input file specified. 的问题解决
- Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)问题解决
- 开发微信小程序 中遇到的坑 及解决方法
- .vue文件在webstorm中es6语法报错解决方法
- html2canvas+jspdf 完美解决html导出且分页 解决图片显示不全问题
- Git不断询问我ssh密钥密码
- 用户输入和命令行参数