生命周期函数的概念
所有继承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");}
}
注:@唐老狮