销毁附加的行为将导致游戏或场景收到 OnDestroy。
场景或游戏结束时,发生 OnDestroy。
从 Editor 内部运行时,停止播放模式将终止应用程序。终止应用程序时,
将执行 OnDestroy。而且,如果某个场景关闭并加载
新场景,将调用 OnDestroy。\
构建为独立应用程序时,如果场景结束,
将调用 OnDestroy。一个场景结束通常意味着加载一个新场景。
注意:只在以前处于活动状态的游戏对象上调用 OnDestroy。\
\
在以下脚本中,将显示 OnDestroy 的行为。在 ExampleClass1
内
运行时,将有一个按钮可用。按下该按钮后,将调用 OnDestroy,然后
切换到 /ExampleClass2/。一旦激活 /ExampleClass2/,在应用程序关闭时,
将使用 OnDestroy。如果 ExampleClass1
通过关闭应用程序而退出,
它将调用 OnDestroy。(在应用程序的构建和运行中,控制台将显示
输出到播放器日志的文本。)
using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement;
public class ExampleClass1 : MonoBehaviour { private float timePass = 0.0f; private int updateCount = 0;
void Start() { Debug.Log("Start1"); }
// code that generates a message every second void Update() { timePass += Time.deltaTime;
if (timePass > 1.0f) { timePass = 0.0f; Debug.Log("Update1: " + updateCount); updateCount = updateCount + 1; } }
void OnGUI() { if (GUI.Button(new Rect(10, 10, 250, 60), "Change to scene2")) { Debug.Log("Exit1"); SceneManager.LoadScene(1); } }
// generate a message before the Start() function void OnEnable() { Debug.Log("OnEnable1"); }
// generate a message when the game shuts down or switches to another Scene // or switched to ExampleClass2 void OnDestroy() { Debug.Log("OnDestroy1"); } }
ExampleClass2:
using UnityEngine; using UnityEngine.UI;
public class ExampleClass2 : MonoBehaviour { void Start() { Debug.Log("Start2"); }
void OnEnable() { Debug.Log("OnEnable2"); }
// generate a message when the game shuts down void OnDestroy() { Debug.Log("OnDestroy2"); } }
OnDestroy 不能作为协同程序使用。