Unity 生命周期初始化Awake及Start

文章讲述了在Unity中如何正确使用Awake、OnEnable和Start生命周期函数进行物体初始化,避免因误将Init写在Start导致的常见Bug,特别是在动态创建物体和处理UI/数据时要特别注意空指针问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        之前创建物体的时候 一不小心把Init初始化写到start里了 产生了一个很经典的Bug 在此做个笔记加深一下影响 防止自己以后还出现这种错误 

        Unity为物体初始化准备了三个生命周期函数:Awake 、OnEnable 、Start

        很多时候会有动态创建物体的需求 这个时候 被创建的物体的初始化工作就会变得非常重要 特别是涉及到UI管理或者数据管理单例类 很容易出现空指针异常

        下面是测试创建脚本Test

    

public class Test : MonoBehaviour
{
    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Mouse0))
        {
            GameObject temp = Resources.Load("Cube") as GameObject;
            print("前:");
            Instantiate(temp);
            print("后:");
        }
    }
}

        Cube上挂在了一个Test2脚本

public class Test2 : MonoBehaviour
{
    bool isa = true;
    private void Awake()
    {
        print("Awake" + Time.frameCount);
    }
    // Start is called before the first frame update
    private void OnEnable()
    {
        print(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值