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

    2024年04月09日
    浏览(11)
  • 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日
    浏览(13)
  • Unity-生命周期

    Unity-生命周期

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

    2024年02月03日
    浏览(6)
  • 【Unity学习笔记】生命周期

    【Unity学习笔记】生命周期

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

    2024年02月14日
    浏览(11)
  • 【Unity函数执行顺序(Unity脚本生命周期函数)】

    【Unity函数执行顺序(Unity脚本生命周期函数)】

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

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

    Unity之组件的生命周期

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

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

    Unity MonoBehaviour事件函数的生命周期

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

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

    Unity 关于生命周期函数的一些认识

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

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

    unity的函数生命周期以及静态生成方法

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

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

    Unity 开发人员转CGE(castle Game engine)城堡游戏引擎指导手册

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

    2024年02月07日
    浏览(17)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包