스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록

2024.05.02 TIL - 추상화 클래스(abstract), 인터페이스(interface), 상속, static, 싱글톤

테크러너 2024. 5. 2.
    public abstract class Scene
    {
        public abstract void loadScene(UI ui, Character character);
    }

원래는 `Scene` 베이스 클래스를 `추상화 클래스(abstract)`로 선언했었다.

 

이후 씬 이동을 구현할 때 각 씬 클래스들을 불러오기 위해 `static` 선언이 필요했다.

하지만 추상화 클래스는 static 선언을 할 수 없다!...

 

    public class SceneManager
    {
        //싱글톤 생성
        public static SceneManager Instance;

        public Scene _introScene;
        public Scene _startScene;
        public Scene _characterInfoScene;
        public Scene _inventoryScene;
        public Scene _equipmentScene;
        public Scene _potionScene;

        public SceneManager()
        {
            if (Instance == null)
            {
                Instance = new SceneManager();
            }
            else
            {
                Instance = this;
            }

            _introScene = new IntroScene();
            _startScene = new StartScene();
            _characterInfoScene = new CharacterInfoScene();
            _inventoryScene = new InventoryScene();
            _equipmentScene = new EquipmentScene();
            _potionScene = new PotionScene();
        }
    }

그래서 `SceneManager.cs`를 두고, 매니저 클래스에서 각 씬들을 초기화하여 매니저 클래스는 싱글톤으로 만들었다.

그래서 씬 이동시에 SceneManager를 통해 원하는 씬들을 편히 불러올 수 있게 되었다.

 

    public interface Scene
    {
        public void loadScene(UI ui, Character character);
    }

그리고 베이스 클래스의 메소드가 선언부만 존재했기에 `인터페이스(interface)`로 변경했다.

`추상화 클래스`는 메소드의 구현부까지 있기 때문이다.

반응형

댓글