1.周期函数调用顺序(PS:吐槽一句,不知道是不是转发的缘故,百度上好多写错的,把FixedUpdate->Update写反了):

Awake->OnEnable->Start->FixedUpdate->Update->LateUpdate->OnGUI->OnDisable->OnDestroy

1)挂载脚本:Reset
①Reset是脚本被挂上的时候执行一次,其他时候不执行,严格来说不算周期函数

2)物体(脚本所挂的游戏对象)加载:Awake->OnEnable->Start
①Awake:加载的时候第一个运行的方法,适合用来构建单例,还可以用来进行一些初始化操作。不知道Awake和OnEnable的顺序是不是被unity存在栈里了,最后挂的最先执行。

//单例
//然后在其他类里调这个类的实例:ClassA.instance.DebugCtr();
public class ClassA{public static ClassA instance;private void Awake(){if(instance == null){instance = this;}}public void DebugCtr(){Debug.Log("This is ClassA instance");}
}

②OnEnable:物体显示时被调用
③Start:如果不在Awake里初始化,就可以放在在Start里;Start里面可以用来开启协程

3)物体加载完成:FixedUpdate->Update->LateUpdate->OnGUI
①FixedUpdate:每固定帧率(默认是0.02s,即1/50 s)调用一次,一般用作物理更新。自定义可以在Edit->Project Settings->Time里修改Fixed Timestep的数值

②Update:每帧调用一次(一般趋近0.02s,跟硬件性能和项目内容有关),用来检测事件;
③LateUpdate:与Update同步,紧随其后。摄像机的跟随可以放在里面。
④OnGUI:unity原生的GUI就需要在这里面写

 protected void OnGUI(){//DebugCtr(ref isOnGUI, "OnGUI()");GUILayout.BeginArea(new Rect(10,1,200,150));GUI.Box(new Rect(10, 1, 100, 100),"This is Unity GUI");GUILayout.EndArea();}

4)物体销毁:OnDisable->OnDestroy
①OnDisable:物体隐藏时调用,可以用来注销事件
②OnDestroy:物体被销毁时调用,可以用来注销事件

5)看到这里的童鞋有没有想过多个脚本之间,周期函数的规律?
(有脚本A、B,A先挂,B后挂)

B:Awake->B:OnEnable ->A:Awake->A:OnEnable->
B:Start->A:Start->B:FixedUpdate->A:FixedUpdate->B:Update->A:Update->B:LateUpdate->A:LateUpdate->B:OnGUI->A:OnGUI
A:OnDisable->B:OnDisable ->A:OnDistroy->B:OnDistroy
(注意,我分成三段了!!! )
总结:
①Awake和OnEnable先后一起出现;
②物体加载的时候,后挂的先执行;物体销毁的时候,先挂的先执行。


---------------最后,挂上测试的代码 0.0-------------------------------------------------

//**基类**
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class NewBehaviourScriptTestBase : MonoBehaviour {protected bool isStart, isAwake, isOnEnable, isNewBehaviourScriptTest,isUpdate, isLateUpdate, isFixedUpdate, isOnDisable, isOndestroy, isOnGUI,isReset;protected virtual void  DebugCtr(ref bool isDebug, string msg){}protected void Reset(){DebugCtr(ref isReset, "Reset()");}protected void Awake(){DebugCtr(ref isAwake, "Awake()");}protected void Start(){DebugCtr(ref isStart, "Start ()");}protected void Update(){DebugCtr(ref isUpdate, "Update ()");}protected void LateUpdate(){DebugCtr(ref isLateUpdate, "LateUpdate()");}protected void FixedUpdate(){DebugCtr(ref isFixedUpdate, "FixedUpdate()");}protected void OnGUI(){DebugCtr(ref isOnGUI, "OnGUI()");}protected void OnDestroy(){DebugCtr(ref isOndestroy, "OnDestroy()");}protected void OnDisable(){DebugCtr(ref isOnDisable, "OnDisable()");}protected void OnEnable(){DebugCtr(ref isOnEnable, "OnEnable()");}
}
//**子类A**
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ClassA : NewBehaviourScriptTestBase {protected override void DebugCtr(ref bool isDebug, string msg){if (!isDebug){Debug.Log("A: " + msg);isDebug = true;}}
}
//**子类B**
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ClassB : NewBehaviourScriptTestBase {protected override void DebugCtr(ref bool isDebug, string msg){if (!isDebug){Debug.Log("B: " + msg);isDebug = true;}}
}

总结1_1:常用周期函数相关推荐

  1. Vue 生命周期函数 详细讲解+中文图解 一目了然 ~ 内有干货

    文章目录 一.何为生命周期? 1.含义 2.理解 3.注意点 二.Vue生命周期的主要阶段及其11个周期函数 1.Vue生命周期的主要阶段: 2.图解 3.代码注释(配合理解) 4.面试题? 一.何为 ...

  2. Unity3D常用的生命周期函数

    今天给大家总结一下我们常用的生命周期函数: void Reset() Reset是在用户点击检视面板的Reset按钮或者首次添加该组件时被调用.此函数只在编辑模式下被调用.Reset最常用于在检视面板 ...

  3. 快速学会MySQL常用操作方法

    文章目录 什么是数据库? 数据库管理系统? 数据库存储数据的特点 什么是关系型数据管理系统? MySQL数据库 MySQL数据库服务启动 客户端连接MySQL 导出和导入数据 从MySQL服务器导出数 ...

  4. vue openlayer单击地图事件循环多次执行_VUE生命周期函数面试题

    什么是 vue 生命周期 vue生命周期是指vue实例对象从创建之初到销毁的过程,vue所有功能的实现都是围绕其生命周期进行的,在生命周期的不同阶段调用对应的钩子函数实现组件数据管理和DOM渲染两大重 ...

  5. web开发课程,HTML常用的五种标签,附赠课程+题库

    标准文档流 标准文档流,指的是元素排版布局过程中,元素会默认自动从左往右,从上往下的流式排列方式.前面内容发生了变化,后面的内容位置也会随着发生变化. HTML就是一种标准文档流文件 HTML中的标准 ...

  6. 计算机常用工具软件教案,常用工具软件教案.doc

    文档介绍: 课题:网络遨游--网络软件 教学目的 熟练掌握下载软件的使用方法. 熟练掌握邮件处理软件的使用方法. 熟练掌握FTP工具软件的使用方法. 熟练掌握搜索引擎的使用方法. 熟练掌握网络加速软件 ...

  7. python计算无穷级数求和常用公式_傅里叶变换(二) 从傅里叶级数到傅里叶变换...

    在上一部分当中,得到了利用三角函数表示周期函数的方法,但是对于非周期函数就...凉了.所以有什么办法吗?没办法(划掉).这时候我们就需要拿出来我们的黑科技--傅里叶变换. 一.傅里叶级数的推广 当然这 ...

  8. cressman插值_NCL自带常用插值函数集锦

    NCL作为一门气象专业语言,自带了很多气象届常用的算法和命令,比如各种强大的插值函数. 平时,我们不管做科研也好,还是做业务也好,都逃不了各种各样的插值:站点插到格点上,格点插到站点上,高分辨率插值到 ...

  9. 50个常用不定积分公式表_50个公式,50个快速解题法

    临考冲刺,快速解题是当前该关注的,50个公式,50个快速解题法,让你考试前定心.1 . 适用条件[直线过焦点],必有ecosA=(x-1)/(x+1),其中A为直线与焦点所在轴夹角,是锐角.x为分离比 ...

  10. vue 声明周期函数_vue-router路由守卫-上

    1. 为什么要使用路由守卫?什么是路由守卫? 第一次认识路由守卫:之前我做过的小项目里面,我们直接在浏览器网址的地方进行修改就能跳转页面,这是不安全的,因此就需要路由守卫,实现通过路由拦截,来判断用户 ...

最新文章

  1. 计算机 程序 原理,计算机储存程序和程序原理是谁提出来的
  2. UDP收/发广播包原理及步骤
  3. Android Studio 1.1.0 导入eclipse android project
  4. 微信遇到特殊服务器,解决微信网页授权,出现errcode:40163,errmsg:codebeenused,看似微信访问了2次这个回调接口的问题...
  5. 【转摘】IT人日常的学习—中国消费产业的基本盘和机遇
  6. why fioriSandboxConfig.json is loaded twice
  7. linux下编译安装ACE-6.5.1
  8. Windows Phone 7三触控程序开发
  9. sql索引面试_关于索引的25个最佳SQL面试问答
  10. 2089. 找出数组排序后的目标下标
  11. TNF8SLNO 华为OSN1800全新4路STM-16/8路STM-4/8路STM-1业务板
  12. 苹果计算机怎么切换科学计算机,Mac如何使用科学计算器
  13. ftp文件上传及下载工具类
  14. 脊髓炎起病急 该做好哪些治疗呢?
  15. win10解决 netstart -ano|findstr “8080“出现netstart不适内部或外部命令
  16. (四)u-boot2013.01.01 for s5pv210:《mkconfig分析》
  17. 车架号识别|Vin码识别介绍及APP嵌入集成解决方案
  18. C++中inet_pton、inet_ntop函数
  19. 生信技能树课程记录笔记(七)20220531
  20. 共发射极放大电路---工作

热门文章

  1. 计算机的用途英语作文带翻译,关于旅行的英语作文带翻译(通用7篇)
  2. 谷歌 Chrome 浏览器怎样开启黑暗模式?
  3. 纳韦斯托克斯方程的推导_纳维-斯托克斯方程(N-S方程)详细推导.ppt
  4. 大数运算之C 语言大数演算法
  5. 51单片机引脚内部电路
  6. java3d室外场景构建_3dmax里怎么渲染室外场景
  7. 使用金蝶云星空(以前叫:金蝶K3 CLOUD)后,感觉像踩进了一个坑
  8. DCMI 接口DMA 传送数据问题
  9. macos 升级ruby
  10. ubuntu固定内网ip_Ubuntu 设置固定ip地址