Unity 中 Awake 和 Start 时机与 GameObject Active 的关系

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

AwakeStart很相似,都是在脚本的初始阶段执行
但是有两点重要不同:

  1. Awake先执行
  2. Awake即便在脚本 disabled (即enabled = false)时,也会执行,但是Start就不会执行了

对一个物体:

  • 当初始没有激活时,物体上的所有脚本都不会执行,包括AwakeStart
  • 当初始没有激活,运行后SetActive(true),会执行一次AwakeStart,但是再次禁用物体、激活物体,AwakeStart不会再执行。也就是说,物体的整个生命周期,AwakeStart只会执行一次,就是在物体active的一瞬间
  • 脚本中OnEnableOnDisable会 分别 在SetActive(true)SetActive(false)时执行
  • OnEnable只有在脚本enabled和其所在物体active时,才会执行;而OnDisable会在脚本disabled或其所在物体inactiveSetActive(false)都会执行,也就是满足其中一个,脚本就是禁用状态

使用AwakeStart可以把物体初始化分为两个步骤

例如,一个脚本的自身初始化(如对其他的组件的引用、变量初始化等等)可以放在Awake,这样其他脚本在Start中获取该脚本的数据时,就能避免错误产生。

https://gamedevbeginner.com/start-vs-awake-in-unity/文章来源地址https://www.toymoban.com/news/detail-696032.html

到了这里,关于Unity 中 Awake 和 Start 时机与 GameObject Active 的关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【Unity基础】什么是GameObject

    【Unity基础】什么是GameObject

    环境: UnityHub3.3.0-c8 Unity2021.3.20f1c1 LTS Visual Studio 2022 在 Unity 中, GameObject 是游戏中最基本的实体。它可以被看作是游戏场景中所有其他对象的容器。 GameObject 可以包含许多不同的组件,如 Transform、Renderer、Collider``等。通过添加这些组件,GameObject 可以具有不同的属性和功能,

    2024年02月08日
    浏览(10)
  • unity netcode for gameobject(NGO)逻辑代码教程

    unity netcode for gameobject(NGO)逻辑代码教程

    本文均为作者摸索得出的经验,主要介绍制作联机游戏的逻辑代码,比如生成/销毁物体,逻辑同步等。以下内容仅仅是NGO的冰山一角,用于快速开发联机内容,我会在以后的文章里更新NGO类型的详细介绍 作者的信息源: youtube code monkeyLearn Unity Multiplayer (FREE Complete Course, Net

    2024年02月04日
    浏览(39)
  • 【Unity】API学习 --> GameObject(物体)创建的三种方式

    GameObject 就是Unity中最关键的物体 1 通过构造函数进行创建 可以直接new一个GameObject 在start函数里创建,游戏物体可以在任何地方创建,测试创建一次 默认只有Transform 可以在新建是进行传参,创建指定物体 2 Instance Instantiate是静态方法,可以通过 GameObject.Instantiate(); 调用,需要

    2024年02月06日
    浏览(25)
  • [Unity]将物体(gameObject)与预制体(Prefab)取消关联,解绑

    [Unity]将物体(gameObject)与预制体(Prefab)取消关联,解绑

    在如下Hierarchy窗口中右键点击要解绑的物体  在右键菜单中选择prefab-》Unpack即可将对象与预制体解除关联      

    2024年02月11日
    浏览(12)
  • Unity 3D提示“No valid unity editor license found, please active your license”如何解决?

    Unity 3D提示“No valid unity editor license found, please active your license”如何解决?

            初次安装Unity 3D,打开提示“No valid unity editor license found, please active your license”,不妨尝试一下本文的方法。 进入Unity3D中文下载官网, https://unity.cn/releases(Unity 3D安装包也可以通过此渠道下载); 需要登录(如没有账号先注册,很简单); 下载Unity Hub;  打开

    2024年02月11日
    浏览(9)
  • Unity 之 Start 与Update 方法的区别

    Start 方法: Start 方法在脚本所附加的游戏对象被激活后,仅会在第一帧渲染之前被调用一次。它适用于进行一次性的初始化设置和准备工作。如果游戏对象被多次禁用再激活, Start 方法仍然只会在首次激活时被调用。 适用场景: 在 Start 方法中,您可以进行一次性的初始化

    2024年02月11日
    浏览(10)
  • Unity实战问题-解决UnityHUb的Failed to start the Unity Package Manager local server process

    Unity实战问题-解决UnityHUb的Failed to start the Unity Package Manager local server process

    点击跳转=Unity3D特效百例 点击跳转=案例项目实战源码 点击跳转=游戏脚本-辅助自动化 点击跳转=Android控件全解手册 点击跳转=Scratch编程案例 点击跳转=软考全系列 点击跳转=蓝桥系列 专注于 Android/Unity 和各种游戏开发技巧,以及 各种资源分享 (网站、工具、素材、源码、游

    2024年02月13日
    浏览(11)
  • Unity寻路报错“SetDestination“ can only be called on an active agent that has been placed on a NavMesh.

    Unity寻路报错“SetDestination“ can only be called on an active agent that has been placed on a NavMesh.

    这个报错表示NavMeshAgent所在节点未放置在寻路网格上。出现这个错误一般伴有 \\\"Failed to create agent because it is not close enough to the NavMesh\\\"类似警告。 表明寻路代理创建失败,后续设置目的地肯定就会导致失败。 出现此类问题需要检查: 在调用SetDestination的时候,NavMeshAgent是否启用

    2023年04月08日
    浏览(14)
  • 【Unity 框架】QFramework v1.0 使用指南 架构篇:03. 引入 Command | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏

    【Unity 框架】QFramework v1.0 使用指南 架构篇:03. 引入 Command | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏

    我们回顾一下目前的代码,如下; 现在,数据共享的问题通过 引入 Model 解决了。 这里再次强调一下,需要共享的数据放 Model 里,不需要共享的,能不放就不放。 虽然引入了 Model,但是这套代码随着项目规模的发展还是有很多的问题。 其中最严重也最常见的就是 Controller

    2024年02月06日
    浏览(13)
  • 【Unity 框架】QFramework v1.0 使用指南 工具篇:13. 其他事件工具 | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏

    QFramework 除了支持了 TypeEventSystem、EasyEvent 还支持了 EnumEventSystem、StringEventSystem。 EnumEventSystem 前身是 老版本 QFramework 的 QEventSystem StringEventSystem 的前身是,老版本的 MsgDispatcher TypeEventSystem: 事件体定义简洁 比较适合用于设计框架 支持 struct 获得较好内存性能 使用反射,CPU

    2023年04月17日
    浏览(16)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包