DontdestroyOnLoad 에 포함된 항목 찾기
여러가지 방법이 있는데 간단하게 정리한다.
1. Dontdestory 하는걸 래핑 클래스로 감싸서 관리하는 방법
public static class ObjectExtension {
private static List<Object> savedObjects = new List<Object>();
public static void DontDestroyOnLoad(this Object obj){
savedObjects.Add(obj);
Object.DontDestroyOnLoad(obj);
}
public static void Destory(this Object obj){
savedObjects.Remove(obj);
Destory(obj);
}
public static List<Objects> GetSavedObjects(){
return new List<Objects>(savedObjects);
}
}
반응형
2. Object를 임시로 DontDestroyOnLoad에 포함시키고 그 오브젝트의 scene을 가지고와서 반환하는 방법
public static GameObject[] GetDontDestroyOnLoadObjects()
{
GameObject temp = null;
try
{
temp = new GameObject();
Object.DontDestroyOnLoad( temp );
UnityEngine.SceneManagement.Scene dontDestroyOnLoad = temp.scene;
Object.DestroyImmediate( temp );
temp = null;
return dontDestroyOnLoad.GetRootGameObjects();
}
finally
{
if( temp != null )
Object.DestroyImmediate( temp );
}
개인적으로는 1번항목의 방식으로 관리해서 사용하는게 좋은것 같은데 개인적으로는 Dondestory에 포함되어야하는 항목은 이미 다 개별로 관리가 되어야하는 오브젝트일 가능성이 거의 높기 때문에 평소에는 필요하지 않을꺼라고 생각한다.
<원본 URL>
1번 방식 : [링크]
2번 방식: [링크]
★☆☆☆☆
반응형
댓글