销毁附加的行为将导致游戏或场景收到 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 不能作为协同程序使用。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.