一、什么是生命周期函数
//所有继承MonoBehaviour的脚本 最终都会挂载到 GameObject游戏对象上
//生命周期函数 就是该脚本对象依附的GameObject对象从出生到消亡整个生命周期中
//会自动反射调用的一些特殊函数
//Unity帮助我们记录了一个GameObject对象依附了哪些脚本
//会自动的得到这些对象,通过反射去执行一些固定名字的函数
二、常用的生命周期函数
//注意:
//生命周期函数的访问修饰符一般为private和protected
//因为不需要再外部自己调用生命周期函数 都是Unity自己帮助我们调用的
①Awake()
void Awake()//游戏对象(自己这个类对象)被创建的时候调用 类似构造函数的存在 我们可以在一个类对象 刚创建时 进行一些初始化操作 出生时调用
{
//在Unity中打印信息的两种方式
//1.没有继承MonoBehaviour的类中
Debug.Log("Awake");
//Debug.LogWarning("警告");//打印警告
//Debug.LogError("出错了");//打印错误
//2.继承MonoBehaviour的类中 有一个线程的方法 可以使用
print("");
}
②OnEnable
//对于我们来说 想要当一个对象被激活时 进行一些逻辑处理 就可以写在这个函数
private void OnEnable()
{
print("每次激活时调用");
}
③Start()
//主要作用还是用来初始化信息的 但是它相对于 Awake()函数 调用时机更靠后
//因为它是在对象 进行第一次帧更新之前调用的
void Start()//游戏对象(自己这个类对象)被激活的时候调用
{
//从自己被创建出来后,第一次帧更新之前调用 一个对象只会调用一次 零帧启动
print("Start");
}
④ FixedUpdate()
//他主要是用于 进行物理更新
//他是每一帧都执行的 但是这里的帧 和游戏帧有点不同
//他的时间间隔 是可以在 project settings中的 time 中设置的
void FixedUpdate()//固定帧会调用
{
print("Fixeddate");
}
⑤Update()
//主要用于处理游戏核心逻辑更新的函数
void Update()//每一帧都会调用 优先级小于Fixeddate
{
print("Update");
}
⑥LateUpdate()
//一般这个更新是用来处理 摄像机位置更新相关内容的
//Update和LateUpdate之间 Unity进了一些处理 处理我们动画相关的更新
private void LateUpdate()
{
print("LateUpdate");
}
⑦OnDisable()
void OnDisable()//游戏对象(自己这个类对象)失活时调用
{
//如果我们希望在一个对象失活时做一些处理 就可以在该函数中写逻辑
print("OnDisable");
}
⑧OnDestroy()
void OnDestroy()//游戏对象(自己这个类对象)被销毁时调用
{
print("OnDestroy");
//依附的GameObject对象被销毁时调用
}
三、生命周期函数也是支持重写的
只要子类继承了父类 通过override重写就行