✅ 한 것들
📖 클린 아키텍처
5부 아키텍처
15장 아키텍처란?
소프트웨어를 부드럽게 유지하는 방법 : 선택사항을 가능한 한 많이, 오랫동안 열어둔다
열어 둬야 할 세부사항 : 입출력 장치, 데이터베이스, 웹 시스템, 서버, 프레임 워크, 통신 프로토콜 등
(이후 내용들은 경험해보지도 못했는데 추상적인 이야기들이 이어져서 일단 여기까지)
🎮 Project GNC
좌클을 누르면 아이템 사용해야함
종류 : 홀드, 일회성, 무반응 (아이템 별 효과 다름)
구현 : 행동 로직을 SO로 나눈 뒤 Composition
- 자원을 캐거나 적을 때리는데 사용하는 도구
- 먹어서 체력을 회복하는 도구
- 원거리 공격 도구 (활? 총? 구현 안할수도)
player input 시스템에 대해 이해함
- input action asset 아래에 action map이 있고, 그 아래에 input action들이 있다
- action map은 enable과 disable을 통해 해당 분류의 input이 필요 없을 때 토글 가능 (걸을 때랑 자동차 탈 때 컨트롤 다르듯이)
- input action은 의미를 부여하고 싶은 키바인딩을 의미함. 이것도 개별적으로 토글이 가능함. 사용하려면 이벤트를 직접 달아줘야 함.
- player input 컴포넌트는 input action에 이벤트를 다는 것을 스크립트 말고 inspector에서 할 수 있도록 도와주는 추상화용 컴포넌트
god, controller의 actionmap을 간단하게 관리하기 위해 각 이름을 단 input 스크립트를 만들고,
각각의 이름을 한 actionmap 토글을 onenable과 ondisable에 달아놨다.
향후에 UI를 열거나 디버그용 역할 변경 시 actionmap 토글 관리 기능 추가할 것.
아이템 사용 최종 구현 흐름
- ItemSO에는 ItemActionSO이 있다
- abstract class ItemActionSO를 상속받은 StrikeActionSO, EdibleActionSO이 있다
- 12345를 누르면 ConInventory에서 툴바 특정 칸을 선택한다
- 좌클을 누르면 ConAttack에서 inven.currentBox.UseItem()을 호출한다
- UseItem()에선 현재 박스에 들어있는 ItemSO의 ItemActionSO의 OnPress()를 호출한다
- StrikeActionSO의 OnPress()에선 화면 정중앙에서 raycast를 쏘고, 적이나 자원을 공격한다
- 자원의 체력이 다 닳았다면 등록돼있던 dropitem을 instantiate하고 소멸한다
한 거 정리

- 인벤 아이템 사용 로직 : actionSO 선언
- 인풋 로직 정리 및 개선