Unity 之 Start 与 Awake 的区别

文章目录

在这里插入图片描述

在Unity中,AwakeStart都是用于脚本中的生命周期方法,用于控制游戏对象在不同阶段的初始化和行为。它们之间的区别在于调用的时间和用途。

  1. Awake:

    • Awake 是一个在游戏对象被实例化时首先调用的方法。它在对象被加载到场景中但在启用之前调用。
    • 适合在这个阶段进行初始化工作,如查找其他组件、获取引用、设置初始数值等。
    • 由于在对象加载时调用,即使对象处于非活动状态(SetActive(false)),Awake 方法也会被执行。
    • 就是说即使物体被禁用,Awake 方法也会被调用
  2. Start:

    • Start 方法在 Awake 方法之后被调用,用于在游戏对象启用后执行一次性初始化操作。
    • 适合在这个阶段进行需要在对象启用后进行的初始化,比如启动协程、开始动画、订阅事件等。
    • Start 方法只在对象处于激活状态时被调用。如果对象被禁用(SetActive(false)),Start 方法不会执行。

总结区别:

  • Awake 在对象实例化时调用,适用于初始化和查找引用等操作,不受对象是否激活影响。
  • Start 在对象启用后调用,适用于一次性初始化操作,只在对象激活状态下执行。

在实际使用中,通常将一些更基础的初始化工作放在 Awake 中,然后将需要在对象激活后进行的操作放在 Start 中。这样可以确保对象初始化顺利完成,然后在激活后执行特定的操作。

当涉及代码时,我会使用伪代码来说明概念。以下是使用C#伪代码的示例,来说明AwakeStart方法的区别:

using UnityEngine;public class ExampleScript : MonoBehaviour
{private void Awake(){// 在这里进行初始化工作,比如查找引用等Debug.Log("Awake called");}private void Start(){// 在这里进行一次性初始化,只在对象激活后执行Debug.Log("Start called");}private void Update(){// 在每一帧更新中执行的代码}
}

在这个示例中,Awake方法将在对象被实例化后立即调用:

  • 如果将对象直接拖放到场景中,那么在场景加载时会触发Awake方法。
  • 如果通过代码动态实例化对象,那么在实例化时会触发Awake方法。

Start方法将在对象被激活后调用:

  • 如果将对象直接拖放到场景中,当场景加载完成后,Start方法会被调用。只有在对象激活时,Start方法才会执行。
  • 如果通过代码动态实例化对象,当调用SetActive(true)使对象激活时,Start方法会被调用。

总之,Awake用于对象的基本初始化,而Start用于需要在对象激活后执行的初始化操作。如果您需要在对象加载时进行设置,不论对象是否激活,可以在Awake中进行;如果您需要等到对象激活后执行一次性操作,那么可以在Start中实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/90392.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊店铺出新品时,应该注意什么?

要想提升产品销量的话,产品质量不仅要好,同时还需要做好推广宣传,这样单单还不够,还需要做好买家评论。 现如今,由于开亚马逊店铺的人越来越多,导致开亚马逊店铺的市场竞争力也变得越来越大,以…

十年测试工程师叙述自动化测试学习思路

自动化测试介绍 自动化测试(Automated Testing),是指把以人为驱动的测试行为转化为机器执行的过程。实际上自动化测试往往通过一些测试工具或框架,编写自动化测试用例,来模拟手工测试过程。比如说,在项目迭代过程中,持…

六、DataGrip的基础使用

创建新数据库 1、点击MySQL图标,右键点击新建,然后选择框架(数据库) 2、输入数据库名称: 此处schema代表框架,和database(数据库)是同一性质的东西。 创建新的表 1、右键点击数据库,点击新建,再点击表 2…

ZooKeeper基础命令和Java客户端操作

1、zkCli的常用命令操作 (1)Help (2)ls 使用 ls 命令来查看当前znode中所包含的内容 (3)ls2查看当前节点数据并能看到更新次数等数据 (4)stat查看节点状态 (5&#xf…

耐世特Nexteer EDI解决方案

耐世特Nexteer曾经为美国通用汽车全资子公司,是一家集研发、制造、销售于一体的全球化集团公司。耐世特汽车系统公司是转向系统及相关先进技术的全球供应商。该公司为60多家汽车制造商设计、制造、销售电动助力转向器、液压助力转向器、转向管柱和传动轴产品&#x…

【ACM出版】第四届人工智能与计算工程国际学术会议(ICAICE 2023)

ACM出版|第四届人工智能与计算工程国际学术会议 The 4th International Conference on Artificial Intelligence and Computer Engineering 为了在人工智能技术应用与计算工程领域进一步的探索,与国内外学界和业界相关人员交流新问题、新发现、新成果、新应用&…

Spring Boot 中 Nacos 配置中心使用实战

官方参考文档 https://nacos.io/zh-cn/docs/quick-start-spring-boot.html 本人实践 1、新建一个spring boot项目 我的spirngboot版本为2.5.6 2、添加一下依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-…

Linux:ansible自动化运维工具

环境介绍 当前所有执行权限我是在root下执行的&#xff0c;如果提示权限之类的&#xff0c;可以在每句命令前 加上 sudo ansible主服务器 192.168.0.194 另外两个客户端分别为 192.168.0.193 192.168.0.192 软件只需要在主服务器上安装&#xff0c;客户端不需…

2017. 网格游戏;2397. 被列覆盖的最多行数;2202. K 次操作后最大化顶端元素

2017. 网格游戏 核心思想&#xff1a;前缀和枚举。读完题后可以发现&#xff0c;第一个机器人走的路线就像一条分割线&#xff0c;第二个机器人只能获得上面白色部分或者下面白色部分的最大值。这个最大值怎么求&#xff0c;我们可以通过前缀和来求&#xff0c;然后通过枚举转…

idea 显示内存占用,分配内存实时内存

1、打开项目 2、双击“shift” 3、输入show memory indicator 4、打开开关&#xff0c;搞定&#xff01; 5、效果

F5服务器负载均衡能力如何?一文了解

但凡知道服务器负载均衡这个名词的&#xff0c;基本都知道 F5&#xff0c;因为负载均衡是 F5 的代表作&#xff0c;换句话来说&#xff0c;负载均衡就是由 F5 发明的。提到F5服务器负载均衡能力如何&#xff1f;不得不关注F5提出的关于安全、网络全面优化的解决方案&#xff0c…

QTday1

1. #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {this->setFixedSize(520,420);this->setWindowIcon(QIcon("C:\\Users\\79889\\Desktop\\wzg.jpg"));this->setWindowTitle("华清远见");QPushButton *btn1 …