카테고리 없음
본캠프_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를 로드하여 화면에 표시합니다.
- Show<T>(): 제네릭 타입을 사용하여 특정 UI를 화면에 보여줍니다.
- Hide<T>(): 특정 UI를 숨기기 위한 함수입니다.
- Load<T>(): 동적으로 보여줄 화면을 준비합니다.
- uiList:현재 활성화된 UI목록을 관리합니다.
UIBase역할
UI 화면의 기본동작을 정의합니다. (열기,닫기)
StartScreen역할
UIBase를 상속받아 화면을 구현합니다.
TestScene역할
특정 UI를 호출하여 표시합니다
ex : UIManager.Instance.Show<StartScreen>()