중복되는 구조
- 어플리케이션 실행 도중 하나만 존재하고, 사라지지 않는 독재자(Dictator) 스크립트
- 씬을 로드하는 것은 이 독재자의 행동
- 각 씬의 Ruler를 로드하는 것도 이 독재자의 행동
- 각 씬 간의 이동에서 사용하는 스테이터스 변수도 가지고 있을 때가 있음
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Dictator : MonoBehaviour
{
// : 0 Awake
private void Awake()
{
// :: Check Overlap
int hashThis = this.GetHashCode();
Dictator dictatorFound = GameObject.FindObjectOfType<Dictator>();
int hashFound = dictatorFound.GetHashCode();
if (hashThis != hashFound)
Object.Destroy(dictatorFound.gameObject);
// ::
DontDestroyOnLoad(this.gameObject);
// :: Init
this.Init();
}
// : Status
// : Init
private void Init()
{
// :: Debug
Debug_AppName();
Debug_AppVersion();
// :: Init Complete
Debug_Init(this.ToString());
// :: Load Scene
LoadScene(Enum.eScene.INTRO);
}
// : Load
public static void LoadScene(Enum.eScene eScene)
{
int sceneID = (int)eScene;
AsyncOperation sync = SceneManager.LoadSceneAsync(sceneID);
sync.completed += scene =>
{
if (scene.isDone)
switch(eScene)
{
case Enum.eScene.INTRO:
InitScene<Intro_Ruler>();
break;
}
};
}
// : Init
public static void InitScene<T>() where T : Ruler
{
var Ruler = GameObject.FindObjectOfType<T>();
Ruler.Init();
}
// : Debug
public static void Debug_AppName()
{
string log = string.Format(":: App Name : {0}", Application.productName);
Debug.Log(log);
}
public static void Debug_AppVersion()
{
string log = string.Format(":: App Version : {0}", Application.version);
Debug.Log(log);
}
public static void Debug_CheckDictator()
{
Dictator dictator = GameObject.FindObjectOfType<Dictator>();
if (dictator == null)
SceneManager.LoadScene((int)Enum.eScene.DICTATOR);
}
public static void Debug_Init(string scriptName)
{
string log = string.Format(":: {0} Init Complete", scriptName);
Debug.Log(log);
}
}
'Unity' 카테고리의 다른 글
Application.targetFrameRate (0) | 2021.05.04 |
---|---|
DOTween 관련 정리 (0) | 2021.03.06 |
[My Style] 유니티 씬 구조 (0) | 2021.03.05 |
[My Style] 유니티 프로젝트 구조 (0) | 2021.03.05 |
[Unity] 로컬 서버 연결 테스트 케이스 (0) | 2021.02.21 |