2014-10-27 353 views
3

我必須在關閉應用程序之前銷燬它嗎?或在退出GB收集他們?Unity3D - 什麼時候「DontDestroyOnLoad對象」被破壞?

DontDestroyOnLoad如何工作?有參考數量的東西?

+0

我敢肯定的應用destoy之前exiting.I'd猜測,無論管理場景摧毀移動到下一個場景,除非該對象已被標記爲不被前一個場景使用的對象遭到破壞,但我猜測。 – MVCDS 2014-10-27 13:52:03

回答

3

在場景中實例化的對象(默認情況下)在加載新場景(級別)時被破壞。 使用DontDestroyOnLoad,你告訴不要遵循這種行爲,以便該對象將在各個層次之間保持不變。你可以通過調用Destroy()函數來刪除它。

documentation

使加載一個新的場景,當對象目標不會被自動銷燬。 當加載一個新的關卡時,場景中的所有對象都被銷燬,然後加載新關卡中的對象。爲了在級別加載期間保存一個對象,請調用DontDestroyOnLoad。如果對象是組件或遊戲對象,則其整個變換層次結構也不會被銷燬。

using UnityEngine; 
using System.Collections; 

public class ExampleClass : MonoBehaviour { 
    void Awake() { 
     DontDestroyOnLoad(transform.gameObject); 
    } 
} 
2

當您更改場景在場景中的所有非靜態對象被銷燬。當一個物體被標記爲DontDestroyOnLoad時,它在改變場景時不會被破壞。

如果以後你希望你銷燬對象可以調用

Destroy(objName); 

有時它是有用,如果你回到最初創建該對象的場景。如果在創建之前無法銷燬一個或未能檢查它已經存在,則最終會有兩個相同類型的對象,並且這兩個對象都是不可破壞的。

如果您的應用程序退出,您將不必擔心自己破壞任何東西,它會爲您完成。


使對象在程序的整個執行過程中保持活動狀態的另一種方法是使其保持靜態。

public static class DataContainer 
{ 
}