脚本的生命周期

生命周期的理解

脚本的生命周期从加载到运行结束,通过Awake、OnEnable、Start、FixedUpdata、LateUpdate、OnDisable、OnDestroy、Updata函数来对脚本的运行状态进行操作。

代码验证


新建脚本和场景,在脚本中加入生命周期相关的函数。

将脚本绑定到任意的GameObject上,然后运行。

LifeScripts

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 验证脚本文件生命周期涉及的方法
/// 在脚本文件中添加常用的方法,以便于清晰的观察这些脚本方法的执行流程
/// 通过观察结果,总结脚本中关于生命周期方法的执行过程及其功能
/// </summary>
public class LifeScript1 : MonoBehaviour
{/// <summary>/// Awake()函数/// 整个生命周期中最先调用的方法/// 在脚本被加载时被调用/// </summary>private void Awake(){Debug.Log("Awake()");}/// <summary>/// OnEnable/// 当前对象(或脚本)处于可激活状态时,调用该方法/// </summary>private void OnEnable(){Debug.Log("OnEnable()");}// Start is called before the first frame update/// <summary>/// Start()/// 用于完成初始化工作(变量赋初值、查找指定游戏对象等)/// </summary>void Start(){Debug.Log("Start()");}/// <summary>/// FixedUpdata()/// </summary>private void FixedUpdate(){Debug.Log("FixedUpdate");}private void LateUpdate(){Debug.Log("LateUpdata()");}/// <summary>/// OnDisable():/// 在销毁前调用/// </summary>private void OnDisable(){Debug.Log("OnDisable()");}private void OnDestroy(){Debug.Log("OnDestroy()");}// Update is called once per framevoid Update(){Debug.Log("Updata()");}
}

执行结果

1.点击运行后,Console输出结果如下,可以看到Awake() OnEnable() Start()函数只执行了一次,而Updata() FixedUpdata() LataUpdata()函数一直在执行。

2.在Inspecter视窗中取消脚本前的对勾选框,即将脚本改为未启用状态:

结果如下,执行了OnDisable()函数。

再次点击选框,激活脚本:

结果如下,执行OnEnable()函数,脚本被启用,Updata()函数继续执行。

结束项目运行,先后执行了OnDisable()和OnDestroy()函数。

总结

初始化模块 作用
Awake() 整个生命周期中,只被调用一次;脚本被加载时自动调用
OnEnable() 初始化时被调用一次;之后当对象(脚本文件)被启用时调用;配合OnDiasable()使用
Start() 整个生命周期中,只被调用一次;用于初始化,为变量赋初值
更新模块 作用
FixedUpdata() 以帧为单位刷新,以固定的时间间隔刷新;主要完成与物理相关的更新操作
Updata() 每一帧时间间隔不固定,与机器性能和加载规模有关;主要完成数据更新、逻辑处理操作
LataUpdata() 一帧结束,新的一帧之前执行
销毁模块 作用
OnDisable() 对象(脚本文件)切换为不可用状态时调用;一般与OnEnable()配合使用
Destroy() 整个生命周期中,只被调用一次;当对象(脚本文件)被销毁时,一般先执行OnDisable() 方法

注释1:对象(脚本文件):脚本只有绑定到对象上才会被执行

【Unity3d】脚本的生命周期及其相关函数相关推荐

  1. Unity3D脚本的生命周期(执行顺序)

    Unity脚本中有许多固定的函数 例如Start();Update(); 而这些函数都有固定的执行顺序 搞清楚这些函数的执行顺序 对于我们理清代码的逻辑就显得尤为重要 举个简单的例子 //脚本A pu ...

  2. Unity3D 脚本的生命周期

    Unity脚本从唤醒到销毁有着一套比较完善的生命周期,添加任何脚本都必须遵守自身的周期法则. 系统自身调用的比较重要的几个方法: void Update() {}    正常更新,用于更新逻辑.每次创 ...

  3. 一张图彻底了解Unity脚本的生命周期

  4. windows系统bat批处理 管理nginx启动 nginx脚本管理bat脚本管理生命周期windows一键nginx启动

    新建记事本 改后缀 *.bat 复制下内容 注意改下下面nginx的所在盘符和存放路径 @echo off rem 当前bat的作用echo ==================begin====== ...

  5. 【Unity3D 教程系列第 10 篇】Unity 脚本中的生命周期流程图

    这是[Unity3D 教程系列第 10 篇],如果觉得有用的话,欢迎关注专栏. 文章目录 一:生命周期流程图 二:常用的生命周期函数 三:脚本初始化和销毁 四:脚本的动态添加与静态添加 五:Awake ...

  6. unity3d中脚本生命周期(MonoBehaviour lifecycle)

    自:http://blog.csdn.net/qitian67/article/details/18516503 最近在做一个小示例,发现类继承于MonoBehaviour的类,有很多个方法,于是乎必 ...

  7. Unity3D基础31:脚本生命周期

    前文:https://blog.csdn.net/Jaihk662/article/details/86751079(C#脚本) 一.脚本生命周期 脚本的生命周期,就是挂载到的游戏物体"从出 ...

  8. Unity的脚本生命周期

    Start()仅在Update()函数第一次被调用前调用: OnGUI()可以在每帧更新时调用多次: OnDisable()在脚本失效时被调用,被撤销时也会被调用,如果再启动的话,OnEnable() ...

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

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

  10. Unity3D热更新之LuaFramework篇[06]--Lua中是怎么实现脚本生命周期的

    前言 用c#开发的时候,新建的脚本都默认继承自Monobehaviour, 因此脚本才有了自己的生命周期函数,如Awake,Start, Update, OnDestroy等. 在相应的方法中实现游戏 ...

最新文章

  1. GPS NMEA-0183协议常用报文数据格式
  2. Linq to sql与EF零碎知识点总结
  3. “HTTP 500 - 内部服务器错误”解决办法
  4. Screenshot of a full element in Selenium C#
  5. CMake基础 第1节 初识CMake
  6. 第三次学JAVA再学不好就吃翔(part59)--冒泡排序选择排序以及二分查找
  7. 【Unity3D插件】FancyScrollView插件分享《通用UI滑动列表》
  8. c html中让图片反色,图片反色.html
  9. 工程项目管理系统源码
  10. 产品读书《B端产品经理必修课:从业务逻辑到产品构建全攻略》
  11. 2018电大计算机操作题怎么评分,2018年度电大专科计算机应用基础学习知识win7系统上机操作技巧题操作技巧.doc...
  12. 如何解决浏览器音视频video/audio设置自动播放autoplay无效问题?
  13. 成为软件工程师之前,你必须了解这些
  14. sk_buff属性详解
  15. 20.【移动端Web开发之响应式布局】
  16. CentOS7.6 安装配置Amber18/AmberTools18(GPU加速版)
  17. 管理经济学第一遍总结
  18. (附源码)ssm保险办理系统 毕业设计 012232
  19. Android蒙版倒计时,【倒计时海报设计】- 虎课网
  20. Revit 2016 笔记07

热门文章

  1. 局域网助手_IP地址管理和局域网远程助手
  2. 二分排序(java)
  3. LaTeX的安装教程(Texlive 2020 + TeX studio)
  4. 用数字ic产生正弦波的仿真尝试。
  5. 微博html5版转换成网页版,微博网页版html5入口
  6. ADC的DMA多通道数据采集(雨滴传感器+光敏传感器)
  7. 微信撤回软件安卓版_微信强制撤回软件下载-微信强制撤回消息工具(不限时间)v1.0安卓版_5577安卓网...
  8. SQL中ALTER TABLE 语句
  9. android 投屏技术原理,什么是无线投屏技术,无线投屏技术原理解析
  10. UE4+Cesium