Unity 继承MonoBehaviour脚本 执行顺序 详解
先看结果
Awake ->OnEnable-> Start ->-> FixedUpdate-> Update -> LateUpdate ->OnGUI ->OnDisable ->OnDestroy
如果Script0, Script1,Script2脚本上都有Awake OnEnable Start这些函数

执行顺序
Script0, Script1,Script2脚本上Awake函数
Script0, Script1,Script2脚本上OnEnable函数
Script0, Script1,Script2脚本上Start函数
。。。。。。。。。。
如果一定要明确Script0的Awake函数执行顺序高于Script1,Script2的Awake函数
则需要设置脚本执行的顺序


点击红色框的+号 添加对应的脚本
*数值越小的脚本将先执行,如果没有设置的脚本将按默认的顺序执行。
详解
Awake(执行一次)
官方解释:当一个脚本实例被载入时Awake被调用
最最最最开始被调用
执行代码
Instantiate("实例化的预设");

*同时预设上Inspector红色圈为勾选状态
预设上的脚本会立马执行Awake函数;
OnEnable(执行多次)
官方解释:当对象变为可用或激活状态时此函数被调用。
每次激活对象时 对象上继承MonoBehaciour上脚本 会调用一次
执行代码
gameObject.SetActive(false);//先隐藏对象
gameObject.SetActive(true);//显示对象
或
enabled = false;//先关闭启用 enabled = true;//开启启用
*都会立马会执行OnEnable函数
*函数里适合放适配的逻辑
Start(执行一次)
官方解释:Start仅在Update函数第一次被调用前调用。

红色框勾选对应继承MonoBehaciour脚本的继承变量enabled
enabled 官方解释:启用行为被更新,禁用行为不更新。
即enabled == false 不执行Update函数 enabled == true 执行Update函数
*如果运行前不勾选红色框勾选或者在Awake函数里调用 enabled == false 则不会执行Start函数。
*Start函数适合放界面初始化 设置文本内容 过去子级对象 逻辑
FixedUpdate(执行N次)
官方解释: 当MonoBehaviour启用时,其 FixedUpdate 在每一帧被调用。

FixedUpdate时间在Edit->ProjectSettings->Time修改
最好不要去修改这个时间
*FixedUpdate函数适合调用Rigidbody逻辑
Update(执行N次)
官方解释: 当MonoBehaviour启用时,其Update在每一帧被调用。
实现各种游戏行为最常用的函数
*当enabled == false 不执行Update函数
LateUpdate(执行N次)
官方解释: 当Behaviour启用时,其LateUpdate在每一帧被调用。
*先执行Updatee然后执行lateUpdate。
OnGUI(执行N次)
官方解释: 渲染和处理GUI事件时调用。
OnDisable(执行多次)
官方解释: 当对象变为不可用或非激活状态时此函数被调用。
于OnEnable相对应 一个是打开后会调用 一个是关闭后调用。
OnDestroy(执行多次)
官方解释: 当MonoBehaviour将被销毁时,这个函数被调用。
执行
Destroy(gameObject);
挂载在gameObject上的脚本立马会执行OnDestroy函数。
Unity 继承MonoBehaviour脚本 执行顺序 详解的更多相关文章
- Java学习之继承中的执行顺序详解
代码块(理解) (1)用{}括起来的代码. (2)分类: A:局部代码块 用于限定变量的生命周期,及早释放,提高内存利用率. B:构造代码块 把多个构造方法中相同的代码可以放到这里,每个构造方法执行前 ...
- javascript运行机制之执行顺序详解(转)
转自http://www.admin10000.com/document/3385.html JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言, ...
- javascript 执行顺序详解
JavaScript是一种描述 型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行.如果你不能理解javaScript 语言的运行机制,或者简 ...
- JavaScript 运行机制之执行顺序详解
JavaScript是一种描述型脚本语言,它不同于 Java 或 C# 等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行.如果你不能理解 JavaScript 语言的运行机制 ...
- 【Node.js】Event Loop执行顺序详解
本文基于node 0.10.22版本 关于EventLoop是什么,请看阮老师写的什么是EventLoop 本文讲述的是EventLoop中的执行顺序(着重讲setImmediate, setTime ...
- async/await 执行顺序详解
随着async/await正式纳入ES7标准,越来越多的人开始研究据说是异步编程终级解决方案的 async/await.但是很多人对这个方法中内部怎么执行的还不是很了解,本文是我看了一遍技术博客理解 ...
- Python装饰器执行顺序详解
探究多个装饰器执行顺序 装饰器是Python用于封装函数或代码的工具,网上可以搜到很多文章可以学习,我在这里要讨论的是多个装饰器执行顺序的一个迷思. 疑问 大部分涉及多个装饰器装饰的函数调用顺序时都会 ...
- React生命周期执行顺序详解
文章内容转载于https://www.cnblogs.com/faith3/p/9216165.html 一.组件生命周期的执行次数是什么样子的??? 只执行一次: constructor.compo ...
- ASP.NET 页面执行顺序详解
今天整理了一下ASP执行过程,从.net页码的执行周期开始做一个详细的了解.我重写了页面的绝大多数方法.然后加载执行.所得的顺序如下. 方法是每个重写的事件中都输出一个字符,按字符打印出来的先后判断事 ...
随机推荐
- golang中defer的使用规则
转自个人博客chinazt.cc 在golang当中,defer代码块会在函数调用链表中增加一个函数调用.这个函数调用不是普通的函数调用,而是会在函数正常返回,也就是return之后添加一个函数调用. ...
- JS组件系列——自己动手扩展BootstrapTable的 冻结列 功能:彻底解决高度问题
前言:一年前,博主分享过一篇关于bootstrapTable组件冻结列的解决方案 JS组件系列——Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案 ,通过该篇,确实可以实现bo ...
- 【Android Developers Training】 31. 序言:共享简单数据
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- Java添加JDBC
添加JDBC 1.SQL Server SQL Server2005 下载 sqljdbc_4.0 https://www.microsoft.com/en-us/download/details.a ...
- ionic ios项目真机运行-不用开发者账号
ionic ios项目真机运行-不用开发者账号 1. 添加ios平台 ionic platform add ios 2.使用XCODE打开项目 3.使用APPID登录XCODE 打开XCODE账号登录 ...
- [Android FrameWork 6.0源码学习] LayoutInflater 类分析
LayoutInflater是用来解析XML布局文件,然后生成对象的ViewTree的工具类.是这个工具类的存在,才能让我们写起Layout来那么省劲. 我们接下来进去刨析,看看里边的奥秘 //调用i ...
- c# 中事务处理
1.在c#中,使用以下语句,就可以不用再数据库中进行事务语句处理了. TransactionOptions transactionOption = new TransactionOptions() ; ...
- Java系列 - 用Java8新特性进行Java开发太爽了
本人博客文章网址:https://www.peretang.com/using-java8s-new-features-to-coding-is-awesome/ 前言 从开始写博客到现在已经过去3个 ...
- Oracle数据迁移笔记-Rownum与序列的自增长的组合用法技巧
Rownum与序列的自增长的组合用法技巧 根据序列自增长的步长规律,结合表行记录Rownum值的规则批量生成表的行记录主键的用法技巧 案例如下: CREATE OR REPLACE PROCEDURE ...
- Android studio中找不到so文件的问题:java.lang.UnsatisfiedLinkError
解决Android studio中找不到so文件的问题:java.lang.UnsatisfiedLinkError 表示我们不编译jni代码,直接从libs里面复制so库 文件路径:app\buil ...