250830

lililllilillll·2025년 8월 30일

개발 일지

목록 보기
279/350

✅ 한 것들


  • Project GNC


🎮 Project GNC


ItemTypeSO만으로는 Tablet의 정보가 없었음

  • 손에 축소하여 들고 있거나, 설치할 수 있는 거라면 설치할 때 사용될 프리팹인 itemGO을 추가
  • Tablet 정보가 필요할 때 itemGO에서 GetComponent로 Tablet 스크립트에 접근
  • 굳이 Tablet으로 놓지 말고 GameObject 자체를 할당하고 필요할 땐 GetComponent로 접근

크래프팅 UI를 띄워야 하므로 별도 UI 매니저 만들기

  • 전체 UI를 관장하는 UIManager, 크래프팅 UI, esc UI 등의 개별 Manager 구분
  • 개별 Manager는 싱글톤 대신 SerializeField로 직접 참조하려고 했는데, 별도의 씬에 존재할 경우 Manager 등록이 불가능하다는 문제 발생
  • 내일 더 연구

기존에 갖고 있던 싱글톤 개선

  • 상속받은 곳에서 잘못 선언하면 초기화 로직 망가지는 문제
  • Awake(), OnDestroy() 등은 Unity에서 Relfection으로 관리하는 Magic Method라 sealed로 override 제한 불가
  • 아예 virtual을 떼고 Awake()에서 훅인 OnInit()을 호출하는 식으로 해결. OnInit()은 virtual로 선언되어 override 가능.
  • 실행 순서를 보장하지 못하는 문제
  • getter에서 GameObject를 만들어 거기에 스크립트를 붙이는 식으로 해결하면 원래 존재하던 오브젝트가 정보와 컴포넌트가 전부 사라져버리는 문제.
  • [DefaultExecutionOrder(-1000)]로 싱글톤들의 실행 순서를 직접 설정하거나 가장 먼저 실행되는 Initializer에서 순서를 제어할 수도 있겠지만 변동에 취약
  • getter에서 FindObjectOfType<T>()을 통해 순서가 꼬였다면 씬에 있던 해당 스크립트를 찾아오는 식으로 해결


profile
너 정말 **핵심**을 찔렀어

0개의 댓글