본문 바로가기
게임 개발(유니티)/멋쟁이 사자처럼 3기_회고록

유니티 디자인패턴_Startegy Pattern패턴

by goraku97 2025. 1. 16.

전략 패턴(Startegy Pattern)

행동을 캡슐화하여 런타임에 동적으로 변경할 수 있도록 설계된 디자인 패턴.

다양한 행동을 구현하고, 상황에 따라 이를 선택적으로 사용할 수 있을 때 유용함.

 

(캐릭터 이동 방식(걷기, 뛰기, 점프 등)을 유연하게 변경하고 싶을때나

플레이어의 상태에 따라 다른 공격 패턴을 사용해야 하는 경우 등등)

주로 여러 가지 행동을 동적으로 전환해야 할 때 많이 사용.

 

스크립트 해석

 

Gun Weapon.cs
0.00MB

 

Gun Weapon 스크립트

(총기 무기와 관련된 데이터를 저장하는 용도로 사용)

struct : 구조체를 정의할떄 사용하는 키워드

             값 타입(Value Type)으로 데이터와 관련된 여러 필드를 하나의 단위로 묶어서

              표현할 수 있도록 설계된 사용자 정의 데이터 형식

// 총기 무기와 관련된 데이터를 저장하는 용도로 사용
// struct : 구조체를 정의할떄 사용하는 키워드
// 값 타입(Value Type)으로 데이터와 관련된 여러 필드를 하나의 단위로 묶어서 표현할 수 있도록 설계된 사용자 정의 데이터 형식
public struct Data
{
    public float delayTime;
    public int maxBullet;
    public string info;
    public GameObject bullet;
}

 

protected : 접근 제한자로, 해당 멤버(필드, 메서드 등)가 이 클래스와

                    파생 클래스(자식 클래스)에서만 접근할 수 있도록 제한


virtual :부모 클래스에서 기본 동작을 정의하고, 자식 클래스에서 필요하면

             이를 재정의할 수 있도록 할 때 사용

// 무기 초기 설정을 정의하는 추상 메서드
public abstract void InitSetting();

// protected : 접근 제한자로, 해당 멤버(필드, 메서드 등)가 이 클래스와 파생 클래스(자식 클래스)에서만 접근할 수 있도록 제한
// virtual :부모 클래스에서 기본 동작을 정의하고, 자식 클래스에서 필요하면 이를 재정의할 수 있도록 할 때 사용
protected virtual void AdjustBulletCount()
{
    data.maxBullet--; // 기본 동작
}

 

WeaponController.cs
0.00MB

 

WeaponController 스크립트

(플레이어의 무기를 관리하는 데 사용)

 

WeaponUI.cs
0.00MB

 

WeaponUI 스크립트

(무기와 관련된 UI 버튼 클릭 이벤트를 처리하며, 무기를 변경하는 역할을 수행.)

Assault Rifle.cs
0.00MB
Sniper Rifle.cs
0.00MB
Machine gun.cs
0.00MB

 

Assault Rifle, SniperRifle, Machinegun 스크립트 

(각 각, GunWeapon이라는 부모 클래스를 상속받아, 

(Assault Rifle, SniperRifle, Machinegun) 의 전용 설정과 동작을 정의)