반응형
StageController는 DontDestroyOnLoad인 싱글톤 클래스
빠르게 진행하여 과정에 대한 기록은 다소 미흡하니 결과만 체크할 것
1. Dependency가 있는 GameObject(Component)
Dependency가 있어도 다음 씬에선 나가리
2. 동일한 GameObject
DontDestroyOnLoad인 컴포넌트와 같은 GameObject면 같이 다음 씬으로 데리고 간다.
Denpendency가 있던 없던 상관없다
3. 자식 GameObject
자식 GameObject도 모두 함께 간다
4. 내부에서 생성된 클래스
using System;
using System.Collections;
using System.Collections.Generic;
using MoreMountains.Tools;
using Unity.VisualScripting;
using UnityEditor.SceneManagement;
using UnityEngine;
public class ExperimentManager : MMPersistentSingleton<ExperimentManager>
{
public DummyClass2 dummyClass2;
private void Start()
{
Debug.Log("스타트!");
StartCoroutine(test());
dummyClass2 = new DummyClass2
{
a = 1818
};
}
IEnumerator test()
{
while (true)
{
yield return new WaitForSeconds(1f);
if (dummyClass2 != null)
{
Debug.Log(dummyClass2.a);
}
else
{
Debug.Log("dummyClass2 없다");
}
}
}
public void LoadScene()
{
MMSceneLoadingManager.LoadScene("TestScene2");
}
}
DontDestronyOnLoad 내부에서 생성된 Monobehavior가 아닌 클래스는 씬이 바뀌어도 유지됨
5. 외부에서 주입된 클래스
public class InjectionClass : MonoBehaviour
{
public ExperimentManager experimentManager;
private void Start()
{
experimentManager.dummyClass2 = new DummyClass2();
experimentManager.dummyClass2.a = 4444444;
}
}
외부에서 생성되어 할당된 클래스도 씬이 바뀌어도 유지됨
생성은 다른 클래스에서 했지만 결과적으로 DontDestroyOnLoad클래스가 인스턴스를 가지고 있으니 유지되는 것 같음
반응형
'Unity > Unity 리서치' 카테고리의 다른 글
Quaternion API 설명 (0) | 2023.05.11 |
---|---|
URP 쉐이더 종류 (0) | 2023.04.21 |
Unity 포물선 발사체 (0) | 2023.03.04 |
C# 확장매소드(Extension Method) (0) | 2023.02.16 |
gameObject에 SendMessage 보내기 (0) | 2023.01.25 |