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");
}
}
注:@唐老狮