카테고리 없음

본캠프_TIL_53일차(UIManager)

티-히히 2024. 11. 27. 23:50

오늘 한 일 (회고)

  • 오전
    • 회의
    • UI구조 UML작성해보기
    • UI특강 참고하여 UIManager완성
  • 오후
    • StartScreen완성
    • 로비Screen완성
  • 저녁
    • TIL작성
    • 회의

복습한 것

 

UI관리 시스템 설계

 

 

UIBase.cs

public class UIBase : MonoBehaviour
{
    public Canvas canvas;

    public virtual void Opened(params object[] param)
    {

    }

    public void Hide(string uiName)
    {
        UIManager.Instance.Hide(gameObject.name);
    }
}

 

StartScreen.cs

public class StartScreen : UIBase
{
    public Button startButton;
    // Start is called before the first frame update
    void Start()
    {
        startButton.onClick.AddListener(OnButtonClicked);
    }

    public void OnButtonClicked()
    {
        SceneManager.LoadScene("LobySceneTest");
    }
}

 

TestScene.cs

public class TestScene : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        UIManager.Instance.Show<StartScreen>();
    }
}

 

UIManager.cs

public class UIManager : SingletonBase<UIManager>
{
    public float ScreenWidth = 1920;
    public float ScreenHeight = 1080;

    private List<UIBase> uiList = new List<UIBase>();

    protected override void Awake()
    {
        base.Awake();
        DontDestroyOnLoad(gameObject);
    }

    public T Show<T>() where T : UIBase
    {
       ...
    }

    private T Load<T>(UIBase prefab, string uiName) where T : UIBase
    {
       ...
    }

    public void Hide<T>() where T : UIBase
    {
       ...
    }

    public void Hide(string uiName)
    {
      ...
    }
}

 

 

UIManager역할

UI를 로드하고 표시하고 숨기기 위한 클래스입니다.

싱글톤 패턴을 활용하며 동적으로 UI를 로드하여 화면에 표시합니다.

  1. Show<T>(): 제네릭 타입을 사용하여 특정 UI를 화면에 보여줍니다.
  2. Hide<T>(): 특정 UI를 숨기기 위한 함수입니다. 
  3. Load<T>(): 동적으로 보여줄 화면을 준비합니다.
  4. uiList:현재 활성화된 UI목록을 관리합니다.

UIBase역할

UI 화면의 기본동작을 정의합니다. (열기,닫기)

StartScreen역할

UIBase를 상속받아 화면을 구현합니다.

TestScene역할

특정 UI를 호출하여 표시합니다

ex : UIManager.Instance.Show<StartScreen>()