Scriptable Object
전체적으로 급하게 만든 코드를 리팩토링 중이다
Ex) 남용한 Singleton 없애기, 씬 정리, 이벤트 시스템, 규칙 정하기...
씬 정리는 대강 끝났고 지금은 팔레트와 프리뷰, 개별 팔레트 코드를 리팩토링하고 있다
팔레트와 프리뷰는 싱글톤으로 사용하고 있었는데
데이터는 SO로 만들고 팔레트에 색상을 추가하는건 AddColor Event를 호출해 사용하고자 한다
아이템을 Pick up 하려면 결국 어디선가는 Pick up 함수를 호출해야 한다는 것인데
어디서 호출해야할까? 플레이어 스크립트에서 아이템과 충돌시? 아니면 아이템 스크립트에서 플레이어와 충돌시?
일단 구조를 생각해봤는데
1. 아이템 충돌시 이벤트핸들러로 아이템을 보내고 팔레트에 저장되게 한다
2. 플레이어가 팔레트 SO를 가지고있고 아이템과 충돌시 팔레트 SO에 저장한다
유튜브, 구글링을 해보니 대게 인벤토리를 플레이어가 지니고 있는 방식을 사용하는 것 같았다
근데 뭔가... 음... 음.. 좀 더 찾아보자
유니티에서 진행중인 SO를 사용한 오픈소스 프로젝트 ChopChop을 많이 참고하였다
춉춉은 이런 구조를 사용하고 있다
1. Player가 ItemPicker 스크립트를 가지고 있다
2. Item이 Player와 충돌시 OnTriggerEnter에서 TryGetComponent로 ItemPicker를 가져와서 currentItem을 전달한다
3. ItemPicker에선 AddItemEvent(SO Event)를 실행한다
AddItemEvent의 경우 Inventory를 가지고 있는 InventoryManager에서 OnEnable때 AddItem을 등록하여 사용한다
땅땅땅 채택.
'프로젝트 > Color Lim 개발일지' 카테고리의 다른 글
2021-08-01 개발일지 (0) | 2021.08.01 |
---|---|
2021-07-22 개발일지 (0) | 2021.07.23 |
2021-07-14, 15 개발일지 (0) | 2021.07.15 |
2021-07-10 개발일지 (0) | 2021.07.11 |
2021-07-09 개발일지 (0) | 2021.07.10 |