当前位置:   article > 正文

Unity中,继承MonoBehaviour游戏对象的生命周期_unity 继承生命周期调用

unity 继承生命周期调用

本文介绍下Unity对象的生命周期。

我们知道,继承monobehaviour的类,都要按照一定的顺序执行一些事件函数,比如
awake, onenable, start, update等,如果要从事Unity相关的开发工作,这些顺序是必须要掌握的,说白了,面试必考题!哈哈

这幅流程图是官网的截图

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
从上述流程图中可以看出,有好多的事件函数,这里只记录一些写代码比较常用的,

1、Awake
始终在任何 Start 函数之前并在实例化预制件之后调用此函数。(如果游戏对象在启动期间处于非活动状态,则在激活之后才会调用 Awake。)这个函数整个周期只会调用一次,而且按照括号里面的介绍,只有在实例化之后才会调用。

2、OnEnable
在Awake之后,在Start之前调用,这个函数有可能会被执行多次,比如在脚本中通过setActive(true),那么就会调到这个事件函数里面来,setActive(false)会调用到OnDisable时间函数中去,所以相当于是监听该对象的setActive用的。

3、Start
仅当启用脚本实例后,才会在第一次帧更新之前调用 Start。意思就是在开始执行update函数之前,一定会调用一次这个函数,这个函数整个周期只会调用一次,可以作为函数的构造函数使用,初始化一些游戏信息可以在这里面做。

4、FixedUpdate
固定频率更新的update函数,一般用作更新物理模拟,如果遇到某一帧很卡,比如在某一帧进行GC了或者复杂的渲染操作,有可能会导致这一帧很卡,那么在下一次执行到这里的时候,会执行多次这个函数,保证其正确的频率。

5、Update
一般些游戏逻辑写在这里面

6、LateUpdate

一般做相机方向及其位置修改

7、PreCull
在摄像机剔除场景之前调用。剔除操作将确定摄像机可以看到哪些对象。正好在进行剔除之前调用 OnPreCull。这里有一堆渲染相关的事件函数调用,通常不怎么用得到,在这里简单额记录下

8、OnDisable
在脚本中通过setActive(false),会调用到这里

9、OnApplicationQuit
在退出应用程序之前在所有游戏对象上调用此函数。在编辑器中,用户停止播放模式时,调用函数。

10、OnDestroy
对象存在的最后一帧完成所有帧更新之后,调用此函数

小伙伴门当作练习,可以新建一个脚本,Debug测试下,就可以知道顺序了,代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FunOrderTest : MonoBehaviour {

	GameObject Sphere;
	void Awake() {
		Debug.Log("Awake");
	}

	void OnEnable()
    {
		Debug.Log("OnEnable");
	}

	// Use this for initialization
	void Start () {
		Debug.Log("Start");
    }


	void FixedUpdate()
    {
		Debug.Log("FixedUpdate");
	}
	
	// Update is called once per frame
	void Update () {
		Debug.Log("Update");
	}
	void LateUpdate()
    {
		Debug.Log("LateUpdate");
	}


	void OnPreCull()
    {
		Debug.Log("OnPreCull");
	}

	void OnGUI()
    {
		Debug.Log("OnGUI");
	}

	void OnApplicationQuit()
    {
		Debug.Log("OnApplicationQuit");
	}

	void OnDisable()
    {
		Debug.Log("OnDisable");
	}

	void OnDestroy()
    {
		Debug.Log("OnDestroy");
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/682875
推荐阅读
相关标签
  

闽ICP备14008679号