Unity脚本生命周期

生命周期函数的概念

所有继承MonoBehavior的脚本,最终都会挂在到GameObject游戏对象上

生命周期函数,就是该脚本对象依附的GameObject对象从出生到消亡整个生命周期中

会通过反射自动调用一些特殊函数

Unity帮助我们记录了一个GameObject对象依附了哪些脚本

会自动的得到这些对象,通过反射去执行一些固定名字的函数

 

生命周期函数

 

生命周期函数的访问修饰符一般为private和protected,因为不需要外部再调用生命周期的函数 都是Unity自己帮助我们调用的

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson01 : MonoBehaviour
{
    // 当对象(自己这个类的对象)被创建时才会调用该生命周期函数
    private void Awake()
    {
        // 在Unity中打印信息的两种方式
        // 1.没有继承MonoBehavior类的时候 (假设没有继承的话,为了挂载这里只能继承)
        Debug.Log("123");
        //Debug.LogError("出错了");
        //Debug.LogWarning("警告!!");

        // 2.继承了MonoBehavior的时候 有一个现成的方法可以使用
        print("1234567");
    }

    // 对于我们来说 想要当一个对象被激活时 进行一些逻辑处理,就可以使用这个函数
    private void OnEnable()
    {
        print("已激活!");
    }

    private void Start()
    {
        print("start");
    }

    // 该函数主要是用于 进行物理更新
    // 它是每一帧 执行的 但是这里的帧 和游戏帧有些不同
    // 它的时间间隔 是可以在project setting中的Time中设置的
    private void FixedUpdate()
    {
        print("FixedUpdate");
    }

    // 主要用于处理游戏核心逻辑更新的一个函数
    private void Update()
    {
        print("Update");
    }

    // 一般这个函数适用于处理摄像机更新相关内容的
    // Update和LateUpdate之间 Unity进了一些处理 处理我们动画相关的更新
    private void LateUpdate()
    {
        print("LateUpdate");
    }

    // 如果我们希望在一个对象被禁用时做一些处理,就可以在该函数中写逻辑
    private void OnDisable()
    {
        print("OnDisable"); 
    }

    private void OnDestroy()
    {
        print("OnDestroy");
    }
}

生命周期函数支持继承多态

下面代码虽然没有继承MonoBehaviour,依然能够挂载到物体上面,因为他的父类是MonoBehaviour的子类,这也体现了多态。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson01Son : Lesson01
{
    protected override void Awake()
    {
        base.Awake();
        print("子类的Awake");
    }
}

 

注:@唐老狮

posted @ 2024-08-11 10:45  yuny0u1o24  阅读(18)  评论(0编辑  收藏  举报