[英]Unity C# Scene Management
我有一個場景和一個按鈕,可以在游戲結束時重新啟動場景。 我在游戲對象的腳本中還有一個 OnDestroy() 函數。 一切正常,但我很好奇如果我通過跟蹤活動場景再次啟動場景,是否會調用 OnDestroy() 函數。
當游戲結束時,如果玩家按下重啟按鈕,該函數將被調用;
private void reStart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
如果玩家直接進入菜單場景,則調用 OnDestroy() 函數。
我的問題是,通過調用 reStart() 函數,是否也會調用 OnDestroy() 函數,還是應該尋求其他解決方案? 如果不是,是進入另一個場景然后返回播放場景的唯一方法還是有其他方法可以做到這一點?
非常感謝您的回答。
是什么讓這個場景與您的菜單場景不同?
是的,調用了OnDestroy
。
默認情況下, LoadScene
的場景模式是
Single :關閉所有當前加載的場景並加載一個場景。
因此,您加載一個“新”場景,該場景卸載當前場景 -> 銷毀當前對象。
(除非您在某處使用DontDestroyOnLoad
.. 似乎並非如此,否則如果您加載菜單場景,它也不會被破壞。)
無論如何,你可以很容易地自己找出來:
private void OnDestroy()
{
Debug.Log($"I just got destroyed {name}");
}
只是一個旁注,我通常更喜歡使用Scene.buildIndex
而不是Scene.name
。
int
而不是string
會稍微快一點(可能是微改進)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.