首页 > 其他分享 >Unity常用生命周期方法

Unity常用生命周期方法

时间:2025-01-19 18:27:40浏览次数:3  
标签:初始化 常用 生命周期 Update Start Unity 调用 Awake 组件

1. Awake()

作用:
  • Awake() 是 Unity 脚本中的一个生命周期方法,在脚本实例化时被调用。它通常用于进行初始化操作,比如设置初始状态、引用其他组件等。
调用时机:
  • Awake() 在对象激活的时刻调用,并且它会在场景中的所有对象的 Start() 方法之前执行。
  • Awake() 只会在脚本或物体第一次被加载时调用一次。
  • 这意味着 Awake() 适合用来做一些 不依赖于其他对象或场景 的初始化操作。
典型用法:
  • 初始化字段或引用。
  • 设置初始值。
private void Awake()
{
    anim = GetComponentInChildren<Animator>();//获取组件
    rb = GetComponent<Rigidbody2D>();
    cd = GetComponent<CircleCollider2D>();
}
  • GetComponentInChildren<Animator>()GetComponent<Rigidbody2D>()GetComponent<CircleCollider2D>() 是用来获取组件的,它们的调用依赖于组件的存在。如果你将这些调用放在 Start() 中,且其他组件或对象(例如,父对象)还没有准备好,可能会导致找不到这些组件,从而抛出错误。
  • Awake() 中,所有附加到对象上的组件都会在脚本实例化时进行初始化。Awake() 会在 Start() 之前被调用,这样你就能确保获取组件时它们已经被初始化并且可以正确访问。因此,如果你需要确保组件已经存在并准备好,那么最好将 GetComponent 相关的代码放在 Awake() 中。

2. Start()

作用:
  • Start() 也是一个生命周期方法,它主要用于初始化逻辑,和 Awake() 的区别在于,Start() 在场景中的所有 Awake() 被调用之后才会被调用。
  • Start() 在脚本或物体第一次被启用时调用,但它只会在脚本启用后 第一次 调用一次。
调用时机:
  • Start() 会在对象激活并且脚本启用时调用,但它是在所有 Awake() 完成之后。
  • 如果该对象在场景加载时处于启用状态,Start() 会在第一次更新前调用。如果对象在场景加载时被禁用,则只有当对象被激活时才会调用。
典型用法:
  • 进行对象之间的依赖关系初始化(比如引用其他脚本)。
  • 启动需要场景中其他对象或系统初始化完成之后的逻辑。
void Start()
{
    // 例初始化其他对象的引用或执行游戏逻辑
    gameManager = FindObjectOfType<GameManager>();
}

3. Update()

作用:
  • Update() 是 Unity 中 每一帧 被调用的方法。它通常用于 每一帧 需要执行的逻辑,比如处理输入、更新物体位置、检测碰撞等。
  • 如果你需要让某些逻辑根据时间持续变化或基于用户输入来进行反应,这就是使用 Update() 的地方。
调用时机:
  • Update() 在每一帧的 开始 被调用。
  • 如果你运行的是一个游戏,Update() 会在每一帧渲染之前被执行,通常它会随着游戏的帧率变化,每秒执行多次。
  • 注意,Update() 只在脚本启用并且物体被激活时才会调用。如果脚本禁用或物体被禁用,Update() 不会被调用。
典型用法:
  • 处理输入(例如键盘、鼠标或触摸输入)。
  • 更新物体的位置或状态。
  • 调用一些持续的行为,如 AI 控制、物理计算等。
void Update()
{
    // 检查输入或每帧更新物体的位置
    if (Input.GetKey(KeyCode.W))
    {
        transform.Translate(Vector3.forward * Time.deltaTime);
    }
}

关键区别:

方法调用时机常见用途
Awake()在脚本实例化时(在场景加载时)调用一次。初始化组件、设置初始状态,引用其他对象。
Start()Awake() 后、第一帧更新之前调用一次。进行依赖关系初始化,启动游戏逻辑。
Update()每帧调用一次。每帧更新位置、检测输入、处理游戏行为。

标签:初始化,常用,生命周期,Update,Start,Unity,调用,Awake,组件
From: https://blog.csdn.net/2303_81171156/article/details/145244427

相关文章

  • 什么是项目的生命周期?
    项目一定有始有终,从启动到完成的时间段称为项目的生命周期(LifeCycle)。不同的项目,其生命周期的特性也会有所不同,但一般而言都具有如下特征:●成本与资源的投入在项目开始时较低,在执行阶段逐渐增加,并在项目快要结束时迅速回落。●项目的风险/不确定性在开始时最大,随着决策的......
  • Cecil修改UnityDll,不使用反射就能调用internal的函数
    简介在UnityEditor开发过程中,我们会经常使用反射调用一些unity还没开放的接口,比如s_LastControlID,但每个程序集都写一边反射不免显得有些麻烦。本篇文章将介绍注入InternalsVisibleToAttribute注解到unitydll的方法,来帮助大家更便捷地调用unity的内部函数。思路Internals......
  • HTTP 常用方法解析
    一、HTTP协议简介HTTP,即超文本传输协议(HyperTextTransferProtocol),是互联网通信的基石,广泛应用于Web浏览器与服务器之间的数据交互。它构建起客户端与服务器沟通的桥梁,使得我们能够流畅地浏览网页、获取各类信息资源,从新闻资讯、社交媒体到在线购物、视频娱乐,几乎所有网络......
  • jest.spyOn 如何监听vue的 created生命周期
    jest.spyOn是Jest测试框架提供的一个功能,用于创建一个间谍(spy)来监视对象上的方法调用。然而,直接使用jest.spyOn来监听Vue组件的生命周期钩子如created并不是最直观的方法,因为这些钩子并不是组件实例上的公开方法,而是由Vue框架内部管理的。为了测试Vue组件的生命周期......
  • Android程序导入unity工程
    用到的软件1.AndroidStudio2.Unity3D1.AndroidStudio生成Arr包1.1Android中所有的Activity都必须继承Activity类,不能继承默AppCompatActivity1.2修改Res文件下的styles修改前修改后1.3将applyplugin:'com.android.application'改成applyplugin:'com.androi......
  • 开发常用工具
    在项目开发中,工具的使用起到了至关重要的作用,正所谓工欲善其事,必先利其器,掌握一些实用的开发工具能够使我们的开发效率事半功倍。那么我们应该掌握哪些开发工具的使用方法呢?其实一路走来,我们已经介绍的开发工具包括了npm、yarn、webpack以及一些集成在项目中的工具包,这些工......
  • Linux中常用命令详解
        在Linux中,有很多常用命令可以帮助你完成日常操作。以下是一些常用Linux命令的详细介绍:1.ls-列出目录内容语法:ls[选项][目录]常用选项:-l:显示详细信息(权限、文件大小、修改时间等)-a:显示所有文件,包括隐藏文件(以.开头)-h:以可读的方式显示文件......
  • golang:校验库go-playground/validator的常用标记
    一,官网:官方文档:https://pkg.go.dev/github.com/go-playground/validator/v10代码地址:https://github.com/go-playground/validator二、常用标记说明标记标记说明例required必填Field或Struct validate:"required"omitempty空时忽略Field或Struct va......
  • 计算机毕业设计Springboot新能源产品管理系 基于Springboot的新能源产品全生命周期管
    计算机毕业设计Springboot新能源产品管理系统94pp5688(配套有源码程序mysql数据库论文)本套源码可以先看具体功能演示视频领取,文末有联xi可分享随着全球能源危机和环境问题的日益严重,各国政府纷纷提出新能源发展战略,以降低对化石能源的依赖,减少温室气体排放,实现可持续发展......
  • Linux常用命令总结
    Linux常用命令指南文章目录Linux常用命令指南1.文件与目录操作命令(1)ls-列出目录内容(2)cd-改变当前工作目录(3)pwd-显示当前目录(4)mkdir-创建新目录(5)rmdir-删除空目录(6)rm-删除文件或目录(7)mv-移动或重命名文件(8)cp-复制文件或目录2......