개요
3주차 학습을 진행하였다
학습 내용은 다음과 같다
- UI 시스템 구현
내용
4. 필수 게임 시스템 제작
UI 시스템 구현
강사의 구현 아이디어는 다음과 같았다
BaseUI 클래스를 상속받은 UI를 구현하고 그 안에 BaseUIData를 상속받은 데이터 클래스를 정의하여 사용 구현된 객체들을 UI Pool에 저장, UIManager를 사용하는 형태의 아이디어 |
특히 객체를 설계/사용하면서 신경쓰는 지점 중 하나가 객체는 생성되면서 유효한 상태를 지니고 있어야 한다 인데, 강사가 제시한 솔루션은 OpenUI 메서드 호출을 이용한 설계로 부분을 확실하게 보장하는 것 같아 마음에 들었다
하지만 Stack의 메커니즘을 가지고 구현을 진행한 것 같은데 그럴 거면 아예 현재 활성화된 UI를 관리하는 UI Stack을 사용하여 구현 의도를 명확히 하는 것이 좋지 않을까, 라는 생각도 있었다
또, 비판적인 사고로 설계를 바라보던 중 어떠한 기준으로 분석하고 가져갈까 고민을 했는데
이 과정에서 시스템을 설계할 때 어떤 가치를 중점으로 두고 설계해야 하는지 생각해볼 수 있는 시간이었다
- 쉽게 확장할 수 있는가?
- 유지보수가 쉬운가?
- 협업이 쉬운가?
자세히 들어가면 고려해야 할 요소는 더 많겠지만 큰 원칙을 정한다면 이정도이지 않을까
쉽게 확장할 수 있는가? 는 현재로서는 괜찮은 것 같다
다만 복잡한 연출을 구현해야할 경우 Sorting Layer를 신경 써야 하는 시점이 올 수 있을 텐데 해당 속성을 사용하는 기능도 추가하고 싶다
유지보수가 쉬운가? 라는 부분에서는 괜찮다고 생각한다
다만 아쉬운 점은, 코드 내부에서 System.Type으로 사용하고 있는데 명확하게 열거형을 정의해서 사용하는 방향으로 실수할 여지를 막아버리는 방향성으로 구현하는 게 좋지않을까 라는 생각이 있다
협업이 쉬운가? 이 부분은 지금으로선 판단하기 어렵고, 실제 데이터를 입력하고 프로젝트에 적용하는 시스템을 잘 만들어야 할 것 같다
프리팹에 직렬화로 데이터를 쓰는 방법도 있지만, 이 경우 기획을 받으면 무조건 적용을 개발자가 해야하기 때문에 업무에 병목구간이 생길 수 있다고 생각한다
데이터를 게임에 적용하는 프로세스는 다음과 같다고 본다
- 기획자의 문서 작업
- 프로젝트 임포트
- 런타임 데이터 셋업
핵심은 한번 시스템을 잘 만들어두면 기획자가 1번만 신경쓰게 만들고 개발자는 편하게 게임에 적용하는 방향이 되겠다
마무리
프로젝트 이후 잠깐의 휴가 시간에 여유있게 밀린 공부를 진행하고 있는데, 이번 주차의 내용도 상당히 재미있었다
각 모듈을 어떻게 잇고, 어떻게 사용할지 만드는 설계 쪽에 관심이 많은데 다른 사람의 설계를 보면서 분석하는 재미있는 시간이었다
특히 모듈을 분석할 때 어떤 관점으로, 무엇을 중심으로 분석해야 할지 생각해볼 수 있었다
- 어떤 생각을 가지고 설계를 하였는지
- 어떤 인사이트를 얻어갈 수 있을지
- 어떤 기준을 가지고 시스템을 분석하고 개선할 수 있을지
다른 모듈을 분석할 때도 적용해볼 수 있는 프로세스인 것 같다
다음 내용에서도 좋은 인사이트를 많이 가져갈 수 있으면 좋겠다
'Unity' 카테고리의 다른 글
유니티 시스템 프로그래밍 Pt.1 - 7~8 주차 (3) | 2024.11.08 |
---|---|
Unity UniTask와 Coroutine (4) | 2024.10.04 |
유니티 시스템 프로그래밍 Pt.1 - 4주차 (0) | 2024.09.29 |
유니티 시스템 프로그래밍 Pt.1 - 2주차 (0) | 2024.09.16 |
유니티 시스템 프로그래밍 Pt.1 - 1주차 (4) | 2024.09.11 |