[질문] OOP 상속 VS 컴포넌트 방식에 대하여
492
작성자 없음
投稿した質問数 0
강의에서 알려주신 것처럼 OOP적인 관점에서 상속을 통해 몬스터-플레이어에 대한 내부 속성(체력, 속도 등등)의 정의와 그에 따른 변화를 함수(데미지처리, UI처리 등등)로 구현하다보면 때때로 모호한 경우가 생겨 고민에 빠진적이 종종 있었습니다.
참고하기 위해 인터넷을 통해 다른사람 코드를 보다, 내부 속성들 조차 클래스로 정의 및 컴포넌트화하여 활용하는 것을 보았습니다. 예를들면, OOP에선 플레이어 클래스안에 존재해야하는 것들이 Health, Stamina 등등 클래스로 만들어 붙이는 것을 보았습니다.
이런 방식이 처음엔 좀 이질적이었는데, 몇번 보다 보니 정리하기는 좀 난잡해보이지만 의외로 논리적으로 처리하는데 편리하게 느껴졌습니다. 그러다 문득 어떤 방식이 좀더 선호되는지, 해당 방식을 쓰는게 좋을지 궁금하여 질문 올립니다
또한, 최근 유니티쪽에서 언급되는 DOTS 같은 경우에 대해 어떻게 생각하시는지, 위의 컴포넌트 방식의 극대화하여 최적화를 추구하는 방식으로 이해하면 되는 것인지 궁금합니다.
回答 1
0
그 부분은 둘 다 괜찮고 선택을 하면 됩니다.
실제로 최상위 클래스에서 스탯을 관리하는 경우도 있고,
StatComponent를 따로 빼는 경우도 있습니다.
(다만 Heatlh, Stamina를 각각의 클래스로 하는 것은 본 적도 없고 큰 장점은 보이지 않네요.)
언리얼의 경우에도 언리얼에서 미는 GameAbilitySystem쪽을 보면
GameAttribute라는 클래스로 스탯을 관리하는데 비슷한 맥락입니다.
그 외 ECS, Job System 등은 유니티에서 엄청 밀어주지만
실제로 그다지 사용하는 것을 보지도 못했고
이전 Unity Network와 마찬가지로 적당히 밀다가 사장되는 경우도 많아
저는 저어엉~말 누구나 사용하는 핵심 기능이 될 때만 사용하는게 좋다고 봅니다.
Addressables로 등록한 Slice된 Sprite의 하위 Sprite 접근법에 대해 질문드립니다
0
85
1
유니티 데이터 저장객체 ScriptableObject에 대해 의견 여쭤보고 싶습니다
0
146
2
안녕하세요 선생님 공부중에 궁금한게 있어서 질문 드려요
0
65
1
상속 구조에서의 awake흐름 및 init 함수 질문있습니다
0
86
1
젬 스프라이트가 로딩되지 않습니다.
0
117
1
혹시 스프라이트 드래그 앤 드롭으로 애니메이션 생성할 때
0
122
1
init() 2번 실행? 등 스킬 마무리 강의에서 질문 있습니다.
0
169
2
Managers.Object.Player와 Mangers.Game.Player 차이
0
113
1
상업적 출시에 대한 질문입니다.
0
170
1
EquipmentData 관련해서 질문드립니다
0
117
1
Data관리 관련해서 질문드립니다.
0
171
2
MonsterControllelr 에서 State Dead 사용
0
107
1
안드로이드 빌드에서는 LoadAllAsync , LoadAsync 가 동작 하지 않고 있습니다.
0
241
2
Instantiate 관련 질문 드립니다
0
159
1
포트폴리오 문서작성에 있어서 질문드립니다.
0
600
2
UI 연동방식에 대해서 질문드립니다.
0
182
1
인디게임출시경험이 중요할까요?
1
346
1
Coroutine과 uniTask 질문드립니다.
0
240
1
ResourceManager 메서드 역할
0
222
1
스프라이트 자료
1
181
1
xml 에
0
270
2
UI 리소스 사용문의
0
271
1
폴더 이름 제일 앞에 @를 붙이는 이유가 궁굼해요
0
598
2
3.:43 초 때부터 잘 안되는 것 같습니다...
0
330
1

