프로젝트가 끝났다. 프로젝트를 진행하며 내가 모르는 부분이나 공부해서 익혀야 할 부분을
적어두고 까먹을 때 마다 와서 상기시키기 위해 적어두려 한다.
using UnityEngine;
public class SingletonMonoBase<Type> : MonoBehaviour where Type : MonoBehaviour
{
private static Type instance;
public static Type Instance
{
get
{
if (instance == null)
{
instance = (Type)FindObjectOfType(typeof(Type));
GameObject singletonObject = null;
if (instance == null)
{
singletonObject = new GameObject();
instance = singletonObject.AddComponent<Type>();
}
else
singletonObject = instance.gameObject;
DontDestroyOnLoad(singletonObject);
singletonObject.name = typeof(Type).ToString() + " (Singleton)";
}
return instance;
}
}
}
이 SingletonMonoBase를 상속시키면 싱글톤으로써 사용이 가능하고
DontDestroyOnLoad로 인해 파괴되지 않고 정보를 그대로 가지고 씬의 이동이 가능하다.
using System.Collections;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UIElements;
public class GameManager : SingletonMonoBase<GameManager>
{
#region Enum Value
public enum DIFFICULTY
{
EASY,
NORMAL,
HARD
}
#endregion
#region Properties
public float GameTime { get { return gameTime; } set { gameTime = value; } }
public DIFFICULTY Difficulty { get { return diff; } set { diff = value; } }
public bool IsVictory { get { return isVictory; } }
public bool IsAlive { get { return isAlive; } set { isAlive = value; } }
public int CurrentScore { get { return currentScore; } set { currentScore = value; } }
public int BestScore { get { return bestScore; } set { bestScore = value; } }
public GameObject Cards { get { return cards; } }
#endregion
get,set 프로퍼티를 이용해 변수들 관리. 공부 필요.