MADE WITH UNITY | Command 패턴
unity 유니티 공부 2025. 11. 16. 14:21 |
https://www.youtube.com/watch?v=51sFAT2xZ40&list=PL412Ym60h6uvqYiCVKk5NiEFpDEwOMQFX&index=4
명령 객체(Command)를
저장·되돌리기·실행
커맨드 패턴(Command Pattern)*
“행동 + 필요한 모든 데이터” 를 하나의 객체로 싸서 택배 보내는 걸 의미함
누가 실행? 👉 Invoker
무엇을 실행? 👉 Command
실제 실행은 ? 👉 Receiver
Command (명령 자체) — 📄 지침서
Invoker (명령 예약 실행자) — 🕹️ 트리거
Receiver (실제 행동 담당자) — ⚙️ 실행
Client (세팅 담당) — 🧑💻 준비자
플레이어 이동, 애니 재생은 리시버 이다
왜 유니티에서 Command 패턴이 유용함?
✔ 여러 정보를 한 번에 넘기기 좋음
함수 파라미터 줄줄 쓰는 대신 Command 객체 하나.
✔ 입력 처리랑 실제 행동을 분리
Input → Command → 실행
(키보드/패드/UI 버튼 바뀌어도 행동 코드 수정 없음)
✔ Undo / Replay 쉽게 구현
Command를 리스트에 저장 →
되돌리기(Undo), 재생(Replay) 가능.
✔ AI / 스킬 시스템에 특히 강함
스킬 하나를 Command 로 만들면
데미지/ 효과/ 범위/ 시전자 등 모든 정보 패킹 가능.
+
undo 뒤로 가기
redo 뒤로 가기 취소
+
커맨드 객체는 아래 컨텐츠에 쓰일 수 있다
undo, redo, 시간여행 , 리플레이 , 따라쟁이 미믹몹
+

일반적으로 게임만들 땐
이렇게 인풋과 플레이어 이동만 연결함

커맨드 객체는
거기서 더 나아가 인보커, 인터페이스, 커맨드 를 만듦
더 확장함
+
undo 매커니즘은 각각 다른데
이동 의 undo 가 가장 심플하다 함
공격 의 undo 는 데미지 되돌려주고 뭐하고 하는 구조라 함
+

언두 stack
리두 stack 각각 별개로 씀
스택은 후입후출
+

언두 리두 는 stack 이 아닌 queue 방식으로도 구현할 수 있다
선입선출 개념임
+

격투게임의 커맨드도 구현가능하다
→ → 공격키
이렇게 세 개의 커맨드 키를 순서대로 입력하면 기술이 나가게 할 수 있음
관련 용어는
command pattern combo , queue
+

스킬 하나마다 클래스를 따로 분리시켜야 좋음
스킬 추가가 쉬워서 확장성 있고
테스트 하기도 좋음
+
커맨드 패턴 요약
소분한다
대상과 명령을 같이 두지 않고 따로 둠
단일 책임 원칙
single responsibility principle
기존 코드 수정 필요없게 만듦
개방/폐쇄 원칙
open/closed principle
여러 요청들을 저장하고 로그로 기록 가능
결합하지 않아서 유연해짐
분리를 했기 때문에 재사용성을 높임
한 Command 클래스를 데이터만 바꿔서 계속 재사용
명령,호출,수신
이렇게 나눠서 복잡해 보이긴 함
오버헤드 만드는 게 단점,
관리자 위에 관리자 이런 게 많아져서 복잡해지는 게 단점
+
오버헤드 뜻
overhead
추가 비용이 든다
더 느려질 수 있다
호출이 너무 많아질 수 있다
