namespace UnityApi:Monobehaviour
{
void Reset()
{
//属性面板右键操作 Reset 时执行,此函数只在编辑模式下被调用。Reset最常用于在检视面板中给定一个默认值。
Debug.Log("Reset 我在重置时执行");
}
void Awake()
{
//只会被调用一次,在Start方法之前被调用! 主要用于字段值的初始化工作,禁用脚本,创建游戏对象,或者Resources.Load(Prefab) 对象
Debug.Log("Awake 我在Statt之前执行");
}
void OnEnable()
{
//脚本可用时被调用、如果脚本是不可用的,将不会被调用!
Debug.Log("OnEnable 我被调用了");
}
// Use this for initialization
void Start()
{
//只执行一次,在Awake方法执行结束后执行,但在Update方法执行前执行, 主要用于程序UI的初始化操作,比如获取游戏对象或者组件
Debug.Log("Start 初始化");
}
void FixedUpdate()
{
//每一帧执行一次!不会跳帧!固定更新。固定更新常用于移动模型等操作
Debug.Log("FixedUpdate 我执行了");
}
// Update is called once per frame
void Update()
{
Debug.Log("Update 每帧执行一次");
}
void LateUpdate()
{
//先执行Update,然后才去执行lateUpdate(Update方法执行完,必定接着执行LateUpdate,而Update和FixedUpdate方法的执行顺序不确定,
//而且有时候FIxedUpdate执行了多帧,而Update却只执行了一帧,这就是因为跳帧的缘故造成的,只有在所有的update执行完了,再执行一次LateUpdate
Debug.Log("LateUpdat 我在update之后执行一次");
}
void OnGUI()
{
//在这里面进行GUI的绘制,且GUI是每帧擦除重绘的!仅仅只是绘制!没有生命周期的概念!所有关于绘制GUI的代码,都要直接或者间接地写到OnGUI方法中!
Debug.Log("OnGUI 执行速度基本是Update的两倍");
}
void OnDisable()
{
//脚本失效时调用,程序结束时调用。如果再启用的话会再调用OnEnable;
Debug.Log("OnDisabule 我在失效时被执行");
}
void OnDestroy()
{
Debug.Log("OnDEstroy 我在销毁时被执行");
}
}
【网图】
生命周期函数执行顺序
Reset -> Awake -> OnEnable -> Start -> FixedUpdate -> Update-> LateUpdate -> OnGUI -> OnDisable -> OnDestroy
Start:仅在Update函数第一次被调用前调用。Start在behaviour的生命周期中只被调用一次。Start总是在Awake之后执行。
FixedUpdate:固定帧更新,在Unity导航菜单栏中,点击“Edit”–>“Project Setting”–>“Time”菜单项后,右侧的Inspector视图将弹出时间管理器,其中“Fixed Timestep”选项用于设置FixedUpdate()的更新频率,更新频率默认为0.02s。
Update:帧更新,用于更新逻辑。每一帧都执行,处理Rigidbody时,需要用FixedUpdate代替Update。例如:给刚体加一个作用力时,你必须应用作用力在 FixedUpdate里的固定帧,而不是Update中的帧。(两者帧长不同)FixedUpdate,每固定帧绘制时执行一次,和update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。
LateUpdate: 在所有Update函数调用后被调用,和Fixedupdate一样都是每一帧都被调用执行,这可用于控制脚本逻辑的执行顺序。例如:当物体在Update里移动时,跟随物体的相机可以在LateUpdate里实现。不然如果物体移动和相机跟随都写在Update就有可能出现获取不到已经更新好的角色位置.
作者:Czhenya
链接:https://blog.csdn.net/Czhenya/article/details/76461301
来源:CSDN
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。