유니티(unity) 씬 전환 시 UI 유지하기
마리오 개발 당시에 이거 하려고 엄청 애먹었었다.
json 파일로 데이터 저장하기
Playerprefs, DontDestroyonLoad 등 안해본게 없었는데 제대로 해결 못함
그때는 싱글톤 패턴에 대해서 잘 몰랐다 하지만 이젠 다르지 ..'
이건 싱글톤 패턴으로 하면 간단히 할 수 있었다

https://art-life.tistory.com/130
유니티-싱글톤패턴(Singleton) 설명 및 스크립트 예제
오랜만의 포스팅을 싱글톤으로 하게 되었네요. 일단 제 기준으로 유니티에서 사용하기 편하고 관리하기 쉬운 방법의 싱글톤 예제를 가지고 왔습니다. 싱글톤의 역할 싱글톤은 프로그래밍 디자
art-life.tistory.com
이 블로그에 도움을 크게 받았다 !!!!!
먼저 GameManager 스크립트 생성한다.
GameManager 빈 오브젝트 생성하고 할당 !!
<GameManager.cs>
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager instance = null;
private void Awake()
{
if (instance == null) //instance가 null. 즉, 시스템상에 존재하고 있지 않을때
{
instance = this; //내자신을 instance로 넣어줍니다.
DontDestroyOnLoad(gameObject); //OnLoad(씬이 로드 되었을때) 자신을 파괴하지 않고 유지
}
else
{
if (instance != this) //instance가 내가 아니라면 이미 instance가 하나 존재하고 있다는 의미
Destroy(this.gameObject); //둘 이상 존재하면 안되는 객체이니 방금 AWake된 자신을 삭제
}
}
//게임 내에서 씬이동시 유지하고 싶은 변수
public float time = 400f;
public int coin = 0;
public int score = 0;
}
GameManager 스크립트는 이렇게 작성된다 .
Awake 부분까지는 동일하게 작성하고
변수 부분만 내가 원하는 변수로 작성했다.
이제 증가 감소 부분에 원래 this.coin+=1; 이런식으로 작성했다면 이를
GameManager.instance.coin+=1; 이렇게 바꿔주기만 하면 된다.
그러면 GamaManager이 이런식으로 초기화 되어있고 게임 실행했을 때
DontDestoryOnLoad에서 계속 유지된다.
[결과물]
이런식으로 씬이 총 2번 전환됐는데 모두 잘 유지 되는 모습 !!!
참고로 UpdateUI 까먹지 않도록 주의하자