先看结果

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脚本 执行顺序 详解的更多相关文章

  1. Java学习之继承中的执行顺序详解

    代码块(理解) (1)用{}括起来的代码. (2)分类: A:局部代码块 用于限定变量的生命周期,及早释放,提高内存利用率. B:构造代码块 把多个构造方法中相同的代码可以放到这里,每个构造方法执行前 ...

  2. javascript运行机制之执行顺序详解(转)

    转自http://www.admin10000.com/document/3385.html JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言, ...

  3. javascript 执行顺序详解

    JavaScript是一种描述 型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行.如果你不能理解javaScript 语言的运行机制,或者简 ...

  4. JavaScript 运行机制之执行顺序详解

    JavaScript是一种描述型脚本语言,它不同于 Java 或 C# 等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行.如果你不能理解 JavaScript 语言的运行机制 ...

  5. 【Node.js】Event Loop执行顺序详解

    本文基于node 0.10.22版本 关于EventLoop是什么,请看阮老师写的什么是EventLoop 本文讲述的是EventLoop中的执行顺序(着重讲setImmediate, setTime ...

  6. async/await 执行顺序详解

    随着async/await正式纳入ES7标准,越来越多的人开始研究据说是异步编程终级解决方案的 async/await.但是很多人对这个方法中内部怎么执行的还不是很了解,本文是我看了一遍技术博客理解 ...

  7. Python装饰器执行顺序详解

    探究多个装饰器执行顺序 装饰器是Python用于封装函数或代码的工具,网上可以搜到很多文章可以学习,我在这里要讨论的是多个装饰器执行顺序的一个迷思. 疑问 大部分涉及多个装饰器装饰的函数调用顺序时都会 ...

  8. React生命周期执行顺序详解

    文章内容转载于https://www.cnblogs.com/faith3/p/9216165.html 一.组件生命周期的执行次数是什么样子的??? 只执行一次: constructor.compo ...

  9. ASP.NET 页面执行顺序详解

    今天整理了一下ASP执行过程,从.net页码的执行周期开始做一个详细的了解.我重写了页面的绝大多数方法.然后加载执行.所得的顺序如下. 方法是每个重写的事件中都输出一个字符,按字符打印出来的先后判断事 ...

随机推荐

  1. Spring Boot 集成 Mybatis

    原文:https://github.com/x113773/testall/issues/9 方式一:mybatis-spring-boot-starter---这种方式比较简单,具体步骤如下:1. ...

  2. stringsteam使用之整型转字符串

    最近需要用到整型转字符串的操作,学习了stringstream一些皮毛. 首先需要包含头文件. #include<sstream> 然后用流操作的方式将值传递给stringstream对象 ...

  3. 1.免费安装myeclipse 10以及破解

    1.材料准备 jdk1.8.0_101 网盘地址链接: http://pan.baidu.com/s/1ge8Jaz5 密码: qb6v myeclipse-10.6-offline-installe ...

  4. JavaScript 语言基础

    js语言基础 一 基本知识 UniCode编码 区分大小写(HTML不区分/XHTML区分) Unicode转义序列 \uxxxx (\u加4位16进制表示) 注释 单行注释:// 多行注释:/* * ...

  5. Unity 游戏框架搭建 (二) 单例的模板

      上一篇文章中说到的manager of managers,其中每个manager都是单例的实现,当然也可以使用静态类实现,但是相比于静态类的实现,单例的实现更为通用,可以适用大多数情况. 如何设计 ...

  6. Vijos 1111 小胖的水果 LCS

    描述 xuzhenyi到大同水果店去买水果,但老板huyichen告诉他每次只能买一种,但是xuzhenyi想吃两种,于是在讨价还价之后,huyichen说只要xuzhenyi能把他想要的两种水果合并 ...

  7. 基于REM的移动端响应式适配方案

    视口 在前一段时间,我曾经写过一篇关于viewport的文章.最近由于在接触移动端开发,对viewport有了新的理解.于是,打算重新写一篇文章,介绍移动端视口的相关概念. 关于这篇文章说到的所有知识 ...

  8. Spring事务管理的两种方式

    参考文档: http://www.iteye.com/topic/1123347 http://blog.csdn.net/lcj8/article/details/2835432 PS:好像还是tx ...

  9. Java 9 揭秘(9. 打破模块封装)

    Tips 做一个终身学习的人. 在此章节中,主要介绍以下内容: 什么是打破模块的封装 如何使用命令行选项将依赖项(添加需要)添加到模块 如何使用--add-exports命令行选项导出模块的未导出包, ...

  10. ISO18000-6B和ISO18000-6C(EPC C1G2)标准的区别

    ISO18000-6B和ISO18000-6C(EPC C1G2)标准的区别 日期:2009-4-2 22:10:26 目前,有两个标准可供选择.一是ISO18000-6B,另一个是已被ISO接纳为I ...