Unity-生命周期

这篇具有很好参考价值的文章主要介绍了Unity-生命周期。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity 中,有一个特别重要的知识点,生命周期函数。这些东西全部都是系统定义好的,运行时自动调用,但需要继承 MonoBehaviour 类才能使用。这个类是从 Unity 中创建脚本就自动继承了。
正是因为继承了 MonoBehaviour 这个类,Unity 才能依次调用我们的脚本代码,执行游戏逻辑。

常用生命周期函数

1> 什么是生命周期
在 Unity 中,脚本可以理解为附加在游戏对象上的,用于定义游戏对象行为的指令代码。一个脚本必须绑定在游戏对象上才能被调用,才能开始它的生命周期。比如一颗子弹,从按下鼠标左键被生成时,附属于此游戏对象的脚本开始了它的生命周期,直到触发某个逻辑而被销毁时,才结束它的生命周期。期间可能依次调用了 Awake,Start,OnDestroy 等周期函数,也可能一直循环执行了 Update,FixedUpdate 等函数,而着一条或多条的执行线就是贯穿此脚本的生命周期。

2> Reset() + 示例
这个函数会在用户首次添加该组件时或单击 Reset 按钮时被调用,且只在编辑器生效。可应用于大批量生成修改编辑器节点,这么说大家可能不明白,举个例子。

假如我们有一个地图,需要添加大量的树(这里用圆柱代替),这些树需要组成特定图案,且以一定规则命名,这个时候笔刷就无法胜任工作了,或许程序运行时可通过代码动态修改,但是一旦程序运行结束,这些树又要被销毁了,且还很消耗程序运行资源。这个时候,通过 Reset 函数,可直接在编辑器阶段完成此需求。

在编辑器创建一个空节点"Reset",将脚本"Reset_Test.cs"赋予此空节点,代码和运行结果如下
Unity-生命周期,Unity,游戏开发,C#,unity,游戏引擎,c#
需要注意的是,所有初始化操作都应在 Reset 中完成,因为它仅调用 Reset 函数,不会调用 Start 等函数,因为这是在编辑器中操作,程序还没运行 :

public int row = 3;
public int col = 9;
private void Reset()
{
   
    GameObject t = null;
    GameObject tree = GameObject.Find("Cylinder");
    for (int i = 0; i < row; i++)
    {
   
        for (int j = 0; j < col; j++)
        {
   
            Vector3 position = new Vector3(i * 2, 0, j * 2);
            t = Instantiate(tree, position, Quaternion.identity);
            t.transform.SetParent(transform, false);
            t.gameObject.name = "tree:" + i + "," + j;
        }
    }
}

3> 常用周期函数简单介绍 :
Unity脚本从唤醒到销毁有着一套比较完整的生命周期,系统自带的几个重要的方法如下 :
Awake -> Start -> FixedUpdate -> Update -> LateUpdate -> OnGUI -> Resourt -> OnDisable -> OnDestroy
Unity-生命周期,Unity,游戏开发,C#,unity,游戏引擎,c#
Awake() : 此函数在脚本实例被载入时调用,仅被调用一次

OnEnable() : 当脚本被启用时调用一次,当游戏对象被禁用时,仅监听响应此函数

Start() : 在 Awake 之后和 Update 之前被调用,仅被调用一次

FixedUpdate() : 物理更新函数,循环执行,每物理帧 0.02 秒执行一次(不受 FPS 帧率影响,时间可更改),所有和物理相关的更新都应在此函数处理

Update() : 更新函数,每帧执行一次,受 FPS 帧率影响

LateUpdate() : 稍后更新函数,在所有 Update 执行完后调用,帧间隔时间和 Update 一样

OnGUI() : 在渲染和处理 GUI 事件时被调用,每帧都执行

OnDisable() : 当脚本被禁用时调用一次,当脚本反复被禁用或启用,则反复调用 OnDisable 和 OnEable

OnDestroy() : 当脚本被销毁时被调用,只会在被激活的物体上调用。当脚本所挂载的游戏物体被销毁时执行

Editor 编辑器

1> void Reset()
调用Reset是在用户点击检视面板的Reset按钮或者首次添加该组件时被调用。此函数只在编辑模式下被调用,Reset最常用于在检视面板中给定一个最常用的默认值

public GameObject target;

void Reset()
{
   
    target = GameObject.FindWithTag("Player");
}

2> OnValidate
每当设置脚本的属性时都会调用OnValidate,包括反序列化对象时,这可能发生在不同的时间,例如在编辑器中打开场景时和域重新加载后

Initialization 初始化

1> void Awake()
当一个脚本实例被载入时Awake被调用。Awake用于在游戏开始之前初始化变量或游戏状态。在脚本整个生命周期内它仅被调用一次Awake在所有对象被初始化之后调用,所以可以安全的与其他对象或用GameObject.FindWithTag这类的函数搜索它们。每个游戏物体上的 Awake 以随机的顺序被调用。Awake 像构造函数一样只被调用一次。 Awake 总是在 Start 之前被调用。

2> void OnEnable()
当对象变为可用或激活状态时此函数被调用,OnEnable 不能用于协同程序。

using UnityEngine;
using System.Collections;

public class OnEnabledTest : MonoBehaviour
{
   
    void OnEnable()
    {
   
        print("This script was enable");
    }
}

3> void Start()
Start 仅在Update 函数第一次被调用前调用,在 behaviour 的生命周期中只被调用一次,它和 Awake的不同是 Start只在脚本实例被启用时调用。可以按需调整延迟初始化代码。
Awake 总是在Start 之前执行,允许你协调初始化顺序,在游戏运行过程中实例化对象时,不能强制执行此调用,初始化目标变量,目标是私有的并且不能在检视面板中编辑。文章来源地址https://www.toymoban.com/news/detail-774949.html

using UnityEngine;
using System.Collections;

public class StartTest : MonoBehaviour
{
   
    private GameObject target;

    void Start()
    {
   
        target = GameObject.

到了这里,关于Unity-生命周期的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 脚本的生命周期

    Unity 脚本的生命周期有哪些?什么时机会触发/执行?什么时候用? 手册 Unity 手册地址 生命周期 初始化 方法说明: Awake:当物体载入时立即调用一次,在 Start 函数之前调用。 OnEnable:在脚本对象启用时调用。 Start:仅当启用脚本实例时,才会在第一帧调用。 Reset:编辑器下

    2024年04月09日
    浏览(70)
  • 【Unity学习笔记】生命周期

    官方文档:事件函数的执行顺序 如图: 脚本的生命周期主要经历以下几个阶段: 初始化阶段,(包括初始化Awake,OnEnable,然后Editor的Reset被穿插在着初始化过程之间,因此我们可以在脚本里重写Reset方法,这将在编辑器中的game的start之前执行。最后Start),当我们开始游戏的

    2024年02月14日
    浏览(41)
  • unity生命周期简单叙述

    1Awake(),2 OnEnable(), 3 Start(), 4 FixedUpdate(), 5 Update(), 6 LateUpdate(), 7 OnGUI(), 8 OnDisable(), 9 OnDestroy(). 特殊一点的方法Reset() Reset 方法是在编辑器中调用的,并且仅在以下情况下执行: 脚本组件被添加到 GameObject 上: 当你将一个脚本组件添加到一个 GameObject 上时,如果该脚本包含 Re

    2024年02月04日
    浏览(41)
  • 【Unity】一文了解生命周期

    又新开一个坑,这个系列主要是记录Unity的干货,就不像之前那几个有点口水话了233 当然我会改正 时隔半个月 经历了开学 换教室等等一系列杂七杂八的事情也算步入正轨了~ 没杂七杂八的介绍什么,不水字数,直接开干!(暴论) 编写顺序会严格按照真实的生命周期顺序

    2023年04月22日
    浏览(34)
  • 【Unity函数执行顺序(Unity脚本生命周期函数)】

    温故而知新,下面我将介绍Unity入门需要了解的常用生命周期函数 生命周期函数就是该脚本对象依附的GameObject对象从出生到消亡整个生命周期中 会通过反射自动调用的一些特殊函数。 下面是对各个函数解锁 a.调用情况: 1.在加载场景时初始化包含脚本激活状态的GameObject时。

    2023年04月23日
    浏览(51)
  • Unity之组件的生命周期

    PS:第二天,依旧在摸鱼学unity 我本身是由Web后端转到了游戏后端,最近因为工作原因在学ET框架。学到了 ECS 编程模式开发(E —— Entity,C —— Component , S —— System)实体、组件、逻辑开发。 我是这么理解的:组件是挂载到实体上的,组件中记录了实体所需要的数据,然

    2024年02月02日
    浏览(39)
  • Unity MonoBehaviour事件函数的生命周期

    Unity运行时候的默认的几个函数的执行顺序: 首先是Awake,OnEnable,Start等,后面是FixUpdate Update 最后是OnDisable、OnDestroy

    2024年02月10日
    浏览(44)
  • unity的函数生命周期以及静态生成方法

    前段时间毕业了,到处跑着玩,玩傻了之后入职了又摸了一个多月鱼~收收心了,近期的学习计划是下半年入门图形学,九月中旬把线性代数学完,所以unity和游戏开发的文章还是很少更新了,等后期学习图形学再慢慢更新和学习记录吧,中间工作中遇到的一些问题还是会记录

    2024年02月03日
    浏览(41)
  • Unity 关于生命周期函数的一些认识

    Unity 生命周期函数主要有以下一些: Awake() : 在脚本被加载时调用。用于初始化对象的状态和引用。 OnEnable() : 在脚本组件被启用时调用。在脚本组件被激活时执行一次,以及在脚本组件被重新激活时执行。 Reset() : 在脚本组件被重置时调用。用于重置脚本的初始状态。 Start

    2024年01月21日
    浏览(54)
  • Unity 开发人员转CGE(castle Game engine)城堡游戏引擎指导手册

    一、简介 2. Unity相当于什么GameObject? 3. 如何设计一个由多种资产、生物等组成的关卡? 4. 在哪里放置特定角色的代码(例如生物、物品)?Unity 中“向 GameObject 添加 MonoBehaviour”相当于什么? 5.Unity子目录相当于什么Assets? 6. 支持哪些模型格式? 7. 支持FBX模型格式吗? 8.

    2024年02月07日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包