Unity中Awake和Start的执行时机及区别

1. 调用时机

  • Awake:

    • 脚本实例被加载时调用,无论脚本是否启用。

    • 即使脚本组件未激活(enabled = false),Awake 也会执行。

  • Start:

    • 在脚本启用后,且在第一次 Update 之前调用。

    • 只有脚本组件激活(enabled = true)时,Start 才会执行。

2. 执行顺序

  • Awake 总是先于 Start 执行。

  • 所有脚本的 Awake 执行完毕后,才会执行 Start

3. 使用场景

  • Awake:

    • 用于初始化不依赖其他对象的变量或组件。

    • 适合在游戏启动时执行一次的操作。

  • Start:

    • 用于初始化依赖其他对象或组件的操作。

    • 适合在游戏正式开始前执行的操作。

4. 脚本实例化

     如果一个场景中的物体没有被激活(即 GameObject 的 SetActive(false)),那么它身上脚本的 Awake 和 Start 都不会被调用。原因在于Awake 是脚本实例化时调用的,场景中未激活的物体,在游戏开始时是不会被加载以及实例化的,因此物体身上的脚本也不会被实例化。

5. 脚本实例化的时机:

  • 场景加载时
  • 当一个场景被加载时,场景中所有激活的物体GameObject)上的脚本会被实例化。

  • 物体被激活时

  • 如果物体一开始是未激活的(SetActive(false)),当它被激活时(SetActive(true)),Unity 会实例化该物体上所有脚本。

  • 物体被实例化时

  • 当一个物体通过 Instantiate 方法动态创建时,Unity 会实例化该物体上所有脚本。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值