본문 바로가기
Unity

유니티 시스템 프로그래밍 Pt.1 - 3주차

by argentdarae 2024. 9. 16.

개요

3주차 학습을 진행하였다

 

학습 내용은 다음과 같다

  • UI 시스템 구현

 

 

내용

4. 필수 게임 시스템 제작

UI 시스템 구현

강사의 구현 아이디어는 다음과 같았다

BaseUI 클래스를 상속받은 UI 구현하고  안에 BaseUIData 상속받은 데이터 클래스를 정의하여 사용
구현된 객체들을 UI Pool에 저장, UIManager를 사용하는 형태의 아이디어

 

특히 객체를 설계/사용하면서 신경쓰는 지점 중 하나가 객체는 생성되면서 유효한 상태를 지니고 있어야 한다 인데, 강사가 제시한 솔루션은 OpenUI 메서드 호출을 이용한 설계로 부분을 확실하게 보장하는 것 같아 마음에 들었다

 

하지만 Stack의 메커니즘을 가지고 구현을 진행한 것 같은데 그럴 거면 아예 현재 활성화된 UI를 관리하는 UI Stack을 사용하여 구현 의도를 명확히 하는 것이 좋지 않을까, 라는 생각도 있었다

 

또, 비판적인 사고로 설계를 바라보던 중 어떠한 기준으로 분석하고 가져갈까 고민을 했는데

이 과정에서 시스템을 설계할 때 어떤 가치를 중점으로 두고 설계해야 하는지 생각해볼 수 있는 시간이었다

  • 쉽게 확장할 수 있는가?
  • 유지보수가 쉬운가?
  • 협업이 쉬운가?

자세히 들어가면 고려해야 할 요소는 더 많겠지만 큰 원칙을 정한다면 이정도이지 않을까

 

쉽게 확장할 수 있는가? 는 현재로서는 괜찮은 것 같다

다만 복잡한 연출을 구현해야할 경우 Sorting Layer를 신경 써야 하는 시점이 올 수 있을 텐데 해당 속성을 사용하는 기능도 추가하고 싶다

 

유지보수가 쉬운가? 라는 부분에서는 괜찮다고 생각한다

다만 아쉬운 점은, 코드 내부에서 System.Type으로 사용하고 있는데 명확하게 열거형을 정의해서 사용하는 방향으로 실수할 여지를 막아버리는 방향성으로 구현하는 게 좋지않을까 라는 생각이 있다

 

협업이 쉬운가? 이 부분은 지금으로선 판단하기 어렵고, 실제 데이터를 입력하고 프로젝트에 적용하는 시스템을 잘 만들어야 할 것 같다

프리팹에 직렬화로 데이터를 쓰는 방법도 있지만, 경우 기획을 받으면 무조건 적용을 개발자가 해야하기 때문에 업무에 병목구간이 생길 있다고 생각한다

데이터를 게임에 적용하는 프로세스는 다음과 같다고 본다

  1. 기획자의 문서 작업
  2. 프로젝트 임포트
  3. 런타임 데이터 셋업

핵심은 한번 시스템을 잘 만들어두면 기획자가 1번만 신경쓰게 만들고 개발자는 편하게 게임에 적용하는 방향이 되겠다

 

 

마무리

프로젝트 이후 잠깐의 휴가 시간에 여유있게 밀린 공부를 진행하고 있는데, 이번 주차의 내용도 상당히 재미있었다

각 모듈을 어떻게 잇고, 어떻게 사용할지 만드는 설계 쪽에 관심이 많은데 다른 사람의 설계를 보면서 분석하는 재미있는 시간이었다

 

특히 모듈을 분석할 때 어떤 관점으로, 무엇을 중심으로 분석해야 할지 생각해볼 수 있었다

  1. 어떤 생각을 가지고 설계를 하였는지
  2. 어떤 인사이트를 얻어갈 수 있을지
  3. 어떤 기준을 가지고 시스템을 분석하고 개선할 수 있을지

다른 모듈을 분석할 때도 적용해볼 수 있는 프로세스인 것 같다

 

다음 내용에서도 좋은 인사이트를 많이 가져갈 수 있으면 좋겠다