单个脚本中函数执行顺序为:
唤醒(Awake)
激活(OnEnable)
开始(Start)
固定刷新(FixedUpdate)
模拟物理(Physics)
触发器的进入,离开等(Trigger)
碰撞器的进入,离开等(Collision)
刚体的Transform的位置和旋转的处理(Rigibody)
鼠标按下,抬起等事件(OnMouse)
刷新(Update)
骨骼动画的融合处理等(Animation Blend)
最后刷新(LateUpdate)
渲染(Rendering)
测试:
第一步:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Ac : MonoBehaviour {
private void Awake()
{
Debug.Log(gameObject.name + "---------Awake");
}
// Use this for initialization
void Start()
{
Debug.Log(gameObject.name + "---------Start");
}
private void OnEnable()
{
Debug.Log(gameObject.name + "---------OnEnable");
}
}
第二步:我们建立3个对象(空物体也可以),分别命名为A,B,C,然后顺序拖放TestScriptsSequence脚本到这3个物体上,控制台输出
第三步:接着我们开始运行几秒然后停止,观察控制台输出的顺序:
每个物体的脚本的执行顺序与 第2步挂载的顺序 相反,即后挂载的脚本先执行,先挂载的脚本后执行.
Awake和Enable函数成对出现.
如果脚本隐藏,对象隐藏,awake会还是执行。只是OnEnable和Start不执行。