Version: 2022.3

描述

销毁附加的行为将导致游戏或场景收到 OnDestroy

场景或游戏结束时,发生 OnDestroy。 从 Editor 内部运行时,停止播放模式将终止应用程序。终止应用程序时, 将执行 OnDestroy。而且,如果某个场景关闭并加载 新场景,将调用 OnDestroy
构建为独立应用程序时,如果场景结束, 将调用 OnDestroy。一个场景结束通常意味着加载一个新场景。

**注意:**只在以前处于活动状态的游戏对象上调用 OnDestroy
\

在以下脚本中,将显示 OnDestroy 的行为。在 ExampleClass1 内 运行时,将有一个按钮可用。按下该按钮后,将调用 OnDestroy,然后 切换到 /ExampleClass2/。一旦激活 /ExampleClass2/,在应用程序关闭时, 将使用 OnDestroy。如果 ExampleClass1 通过关闭应用程序而退出, 它将调用 OnDestroy。(在应用程序的构建和运行中,控制台将显示 输出到播放器日志的文本。)

Warning: If the user suspends your application on a mobile platform, the operating system can quit the application to free up resources. In this case, depending on the operating system, Unity might be unable to call this method. On mobile platforms, it is best practice to not rely on this method to save the state of your application. Instead, consider every loss of application focus as the exit of the application and use MonoBehaviour.OnApplicationFocus to save any data.

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 不能作为协同程序使用。

Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961