본문 바로가기
개발/Unity

Unity) DontdestroyOnLoad 에 포함된 항목 찾기

by 테샤르 2022. 9. 14.

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번 방식 : [링크]

 

Find objects with DontDestroyOnLoad - Unity Answers

 

answers.unity.com

2번 방식: [링크]

 

Editor script: How to access objects under DontDestroyOnLoad while in Play mode

Hi there, I believe the title is pretty self-explanatory. I want to access the root GameObject's that are listed under the DontDestroyOnLoad scene...

forum.unity.com

 

 

★☆☆☆☆

 

반응형

댓글