유니티 씬 변경시 데이터와 gameObject 유지

최명구·2021년 10월 19일
0

유니티 공부하자

목록 보기
5/7

유니티에서 씬이 변경 될 때는 일반적으로 static으로 선언된 변수를 제외하고 모든 데이터가 소실된다. 씬이 변경되더라도 유지되어야 하는 데이터와 오브젝트는 어떻게 처리할까?

유지시키고 싶은 데이터를 가지는 오브젝트와 스크립트를 생성한다.
public static키워드로 전역에서 참조할 수 있는 객체의 인스턴스를 선언한다.
DontDestroyOnLoad(gameObject)를 통해 씬이 넘어갈 때 gameObject가 파괴되는 걸 막는다.
인스턴스가 이미 할당되었다면 새로 생성되는 gameObject를 파괴해서 여러개의 gameObject가 생성되는 걸 막는다.
필요한 곳에서 오브젝트의 인스턴스로 접근해서 필요한 데이터를 사용한다.

예시

public class MainManager : MonoBehaviour
{
    public static MainManager Instance;
    public Color TeamColor;
    private void Awake()
    {
        if (Instance != null)
        {
            Destroy(gameObject);
            return;
        }
        Instance = this;
        DontDestroyOnLoad(gameObject);
    }
}
profile
게임 개발 공부하는 사람

0개의 댓글