[Unity]TIL (39) | 2023.09.15 | 유니티 디자인 패턴 : 전략 패턴

kjg5370·2023년 9월 15일
0

TIL

목록 보기
39/91
post-thumbnail

들어가기 앞서

유니티로 게임을 만들면서 처음 게임에 대해 기획할 때
어떠한 구조로 게임을 짜야 나중에 활용하기 편한지를 알고 싶어서
여러가지 디자인 패턴을 공부해보려고 합니다. 오늘은 전략 패턴에 대해 정리해보겠습니다.

오늘 배운 것

  • 전략 패턴
    소프트웨어 디자인 패턴 중 하나로, 객체 지향 프로그래밍에서 사용되는 패턴 중 하나.
    알고리즘(동작)을 정의하고, 이러한 알고리즘들을 각각의 독립된 클래스로 캡슐화하여 상호 교환 가능하게 만드는 디자인 패턴.

    • 장점
      알고리즘을 실행하는 컨텍스트에서는 알고리즘을 교환하거나 다양한 알고리즘을 선택하여 사용할 수 있음.
      이 패턴은 알고리즘의 변형이나 확장을 쉽게 처리하고, 코드의 재사용성을 높이는 데 도움이 됨.
    • 유니티에서의 전략 패턴 적용
    1. 먼저, 이동 전략을 정의하는 인터페이스를 만들고, 이 인터페이스는 이동 메서드를 선언
      이 인터페이스나 추상 클래스는 실행할 알고리즘에 대한 메서드 선언을 포함함.
      public interface IMovementStrategy
      {
          void Move();
      }
    2. 다양한 전략 클래스를 구현.
      각 클래스는 전략 인터페이스를 구현하고 해당 알고리즘을 정의.
      IMovementStrategy를 구현, "걷기"와 "뛰기" 전략을 구현
      public class WalkStrategy : IMovementStrategy
      {
          public void Move()
          {
              // 걷기 로직 구현
              Debug.Log("걷기");
          }
      }
      
      public class RunStrategy : IMovementStrategy
      {
          public void Move()
          {
              // 뛰기 로직 구현
              Debug.Log("뛰기");
          }
      }
    3. 컨텍스트 클래스인 플레이어 캐릭터 클래스를 만들고, 이 클래스는 이동 전략을 가지고 있고, 이동 메서드를 호출.
       public class PlayerCharacter : MonoBehaviour
      {
          private IMovementStrategy movementStrategy;
      
          public void SetMovementStrategy(IMovementStrategy strategy)
          {
              this.movementStrategy = strategy;
          }
      
          public void Move()
          {
              if (movementStrategy != null)
              {
                  movementStrategy.Move();
              }
              else
              {
                  Debug.LogError("이동 전략이 설정되지 않았습니다.");
              }
          }
      }
    4. 플레이어 캐릭터를 생성하고 다음과 같이 이동 전략을 설정하고 사용할 수 있음.
       public class GameManager : MonoBehaviour
      {
          private PlayerCharacter player;
      
          private void Start()
          {
              player = new PlayerCharacter();
             
              // 걷기 전략 설정
              player.SetMovementStrategy(new WalkStrategy());
            
              // 플레이어 이동
              player.Move();
           
              // 뛰기 전략 설정
              player.SetMovementStrategy(new RunStrategy());
          
              // 플레이어 뛰기
              player.Move();
          }
      }
    • 전략 패턴을 사용하여 플레이어 캐릭터의 이동 방식을 동적으로 변경할 수 있음.
      "WalkStrategy"와 "RunStrategy"는 서로 다른 이동 알고리즘을 구현하며, PlayerCharacter 클래스는 이러한 전략을 사용하여 플레이어의 이동을 처리.

내일 할 일

  • 하루 계획
    • 유니티 심화 강의 듣기
    • 졸업작품 중간발표 준비
profile
학생입니다

0개의 댓글