Unity-미니 프로젝트#End

이준호·2023년 11월 5일
0

미니 프로젝트 End


프로젝트가 끝났다. 프로젝트를 진행하며 내가 모르는 부분이나 공부해서 익혀야 할 부분을
적어두고 까먹을 때 마다 와서 상기시키기 위해 적어두려 한다.


  • SingletonMonoBase.cs
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로 인해 파괴되지 않고 정보를 그대로 가지고 씬의 이동이 가능하다.


  • GameManager.cs
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 프로퍼티를 이용해 변수들 관리. 공부 필요.

profile
No Easy Day

0개의 댓글