유니티 토막 지식_08
Retr0의 교재를 따르는 실습은 저작권상 앞으로는 짤막하게 한 줄씩만 적도록 하겠다.
유니런이라는 게임을 제작하는 실습을 진행하는데, 간단한 2D 플랫포머 게임인 것 같다. 예전에 골드메탈이라는 유튜버 분의 2D플랫포머 게임 강좌를 따라 만들어 보았던 기억이 나 어떤 부분에서 다른지 찾아보는 재미가 있었다. 오늘은 플레이어 조작 부분까지 구현하였다.
오늘 알아볼 것은 스트레티지 패턴이다.
스트래티지 패턴
스트레티지 패턴(Strategy pattern)은 알고리즘군을 정의하고, 각각을 캡슐화하여 교환해서 사용하는 패턴이다.
스트레티지 패턴을 이용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다.
여러가지 알고리즘의 추상적인 접근점을 만든다. 그리고 해당 접근점에서 상호 교체가 가능하도록 하는 패턴을 말한다.
위 그림의 방식이 스트레티지 패턴의 기본 모양이라고 생각하면 된다.
-
Weapon이라는 Strategy가 있고, 각 Strategy에 대해 구현하는 무기의 종류가 있다.
-
Actor는 해당 Strategy를 Has a 관계로 가지게 된다. (소유 관계) 전략을 바꿀 수 있는 Setter 를 사용하도록 한다.
-
위의 구조대로, 액터는 무기를 Has a 관계로 가지고 있어 무기를 바꿀 수 있고, 무기를 바꾸는 데 있어서 액터는 추가적인 로직 없이 무기 객체를 갈아 끼우기만 하면 된다.
장점
-
Strategy 패턴이라는 단어 자체가 전략 패턴이라는 뜻이다. 의미처럼 여러가지 전략을 간단하게 바꿀 수 있도록 한다.
-
게임 제작에서 상황에 따라 전략을 바꿔야 하는 경우가 (무기 변경, 공격 방어 회피 상태 변경 등)많아 유용하게 사용가능하다.
-
특정 동작에 대해 객체에 종속적이지 않게 되고, 다양한 방식으로 구현할 수 있게 된다.(인터페이스를 사용하기 떄문)
단점
-
조건이 증가하면 관리해야할 클래스의 수가 늘어날 것이다.
-
통신 오버헤드가 커지는 경우가 생긴다.
오늘은 시간이 부족해 실습을 추가로 진행하지 못했다. 내일 스트레티지 패턴에 대해 실습해보도록 하자.