销毁附加的行为将导致游戏或场景收到 OnDestroy。
OnDestroy occurs when a Scene or game ends.
Stopping the Play mode when running from inside the Editor will end the application. As this end happens
an OnDestroy will be executed. Also, if a Scene is closed and a
new Scene is loaded the OnDestroy call will be made.
When built as a standalone application OnDestroy calls are made
when scenes end. A scene ending typically means a new scene is loaded.
注意:只在以前处于活动状态的游戏对象上调用 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 不能作为协同程序使用。