1. 공부하는 입장이라 클래스 구조 좀 예쁘게 코드를 깔끔하게 쓰고싶은 욕심이 있음
2. 플레이어의 캐릭터에게 추가로 보조적인 기능들을 해줄 스킬 시스템을 만드려고함
3. 최상위 부모클래스로 추상클래스 SO를 만들었다고 가정 (이름은 예시로 ParentSO) 여기에는 상속받을 자식so들(스킬)이 공통으로 가져야할 데이터를 넣어줌
4. 해당 so를 상속받아서 여러 갈래의 so로 나누고 각 캐릭터마다 알맞게 so를 만들어서 넣어줌
5. 이때, 저 상속받은 자식 so들 내에서 데이터뿐 아니라 실제로 그 so가 결국 스킬을 의미하니깐 해당 스킬을 발동할때 구체적으로 어떻게 되는지 구현부까지 넣어도 될까요?
6. 예를 들어서 각 so마다 완전히 상이함. 어떤건 플레이어 스탯에 접근해서 버프를 넣어줄거고 어떤건 뭐 옵젝을 생성한다던지... 내용이 다 다름.
7. ai한테 물어보니 so는 데이터 컨테이너인데 구현까지? 흠... 하면서 각 so를 상속받아서 만들때마다 이에 맞추어서 스킬구현을 담당하는 짝을 만들라는데 (즉 스킬 하나당 클래스 2개씩) 잘 모르겠음
8. 다시 말하지만 이 방법도 이론상 가능한건 나도 아는데 그냥 이런 구조가 상식적인가 물어보는거임
저도 so 내부에 스킬 로직이 있긴한데 파티클, 애니메이션, 캐스팅, 쿨다운, 딜레이, 콜라이더체크, 방향, 거리, 피해량 산정 등등.. 작업을 직접하는 건 아니고 이 스킬에선 이거이거 할 거야 하는 컨트롤러 역할만함
원래는 SO에 다 때려박은 형태였는데 콤보 횟수, 마지막 스킬 사용 시간 체크 .. 뭐 이런 변수를 보관하려면 따로 클래스가 있긴 해야함 논시리얼라이즈만으론 제약이 많음 스킬 사용자당 SO를 개별적으로 갖고 있는게 아니라면
알고계신것처럼 구현되는 부분은 다른 컴포넌트가 SO를 받아 처리하는게 맞다고 생각함.
DI를 통한 중계기까진 그러려니해도 로직까지는 좀
혼자 하는 거면 일단 해보고 개인적인 취향으로 판단해도 됨 정답이 있는 게 아니라 해보는 것도 경험이고 득이 큰지 실이 큰지 알아 볼 머리만 있으면 되는데 이런 고민 하고 있는 거면 생각은 해본다는 거니까 알 수 있을 거임
유니티 채널에서 데이터 뿐만 아니라 로직 컨테이너와 더 나아가 이벤트 채널로도 SO사용을 권장하던데 상관없지않을까 싶네요. - dc App
https://www.youtube.com/live/j9LUdJx0Agg?si=VoTZshdW4uPsjp-3
SO관련
유니티 채널 영상입니다. SO가 로직과 이벤트 채널로 사용되는 프로젝트도 있으니 한번 참고해보세요! - dc App