Humility

아무리 노력해도 최고가 되지 못할 수 있다⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀그럼에도 노력하는자가 가장 겸손한 것 아닌가

공부하는 블로그
반응형

디자인패턴 14

[Unity] 유니티 C#) Facade 패턴

파사드 패턴 복잡한 시스템을 간단한 인터페이스로 제공하는 구조적 디자인 패턴  기본 구현 방법1. 복잡한 하위 시스템들public class AudioSystem{ public void InitializeAudio() => Debug.Log("오디오 시스템 초기화"); public void PlayBackgroundMusic() => Debug.Log("배경음악 재생"); public void PlaySoundEffect(string effect) => Debug.Log($"효과음 재생: {effect}");}public class SaveSystem{ public void SaveGameState() => Debug.Log("게임 상태 저장"); public void Load..

[Unity] 유니티 C#) Adapter 패턴

어댑터 패턴호환되지 않는 인터페이스들을 함께 작동하도록 하는 구조적 디자인 패턴 기본 구현 방법1. 기존 시스템에서 사용하는 인터페이스Target (ICharacterMovement): 클라이언트가 사용하는 인터페이스public interface ICharacterMovement{ void Move(Vector3 direction); void Jump();} 2. 새로운 시스템의 클래스 ( 적용하고 싶은 클래스 )Adaptee (ModernMovementSystem): 적용하고 싶은 새로운 클래스public class ModernMovementSystem{ public void UpdatePosition(float x, float y, float z) { Debug.Lo..

[Unity] 유니티 C#) SpatialPartition패턴

공간 분할 패턴게임 내의 공간을 여러 영역으로 분할하여 충돌 감지나 객체 검색을 최적화하는 패턴 기본 구현 방법1. 그리드의 각 셀에 들어갈 게임 유닛을 위한 인터페이스public interface IGameObject{ Vector2 Position { get; } void CheckCollision(IGameObject other);} 2. 실제 게임 유닛 클래스public class Unit : MonoBehaviour, IGameObject{ public Vector2 Position => transform.position; public void CheckCollision(IGameObject other) { // 충돌 처리 로직 Debu..

[Unity] 유니티 C#) Decorator 패턴

데코레이터 패턴 객체에 동적으로 새로운 책임과 기능을 추가할 수 있게 해주는 구조적 디자인 패턴  기본구현방법1. 기본 무기 인터페이스public interface IWeapon{ float GetDamage(); string GetDescription();} 2.기본 무기 구현public class BasicSword : IWeapon{ public float GetDamage() { return 10f; } public string GetDescription() { return "기본 검"; }} 3. 무기 데코레이터 기본 클래스public abstract class WeaponDecorator : IWeapon{ protect..

[Unity] 유니티 C#) Strategy 패턴

전략 패턴 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있게 해주는 패턴  기본구현 방법1. 전략 인터페이스 정의public interface IMovementStrategy{ void Move(Transform transform);} 2. 구체적인 전략 클래스들public class WalkStrategy : IMovementStrategy{ private float speed = 5f; public void Move(Transform transform) { float horizontalInput = Input.GetAxis("Horizontal"); float verticalInput = Input.GetAxis("Vertical")..

[Unity] 유니티 C#) Visitor 패턴

방문자 패턴알고리즘을 객체 구조에서 분리시키는 디자인 패턴주로 복잡한 객체 구조에서 각 객체에 대해 서로 다른 작업을 수행해야 할 때 사용된다 기본 구현 방법1. Visitor 인터페이스public interface IVisitor{ void Visit(Enemy enemy); void Visit(Item item); void Visit(NPC npc);} 2. 방문 가능한 요소들의 인터페이스public interface IElement{ void Accept(IVisitor visitor);} 3. 구체적인 게임 요소들public class Enemy : MonoBehaviour, IElement{ public int health; public int damage; ..

[Unity] 유니티 C#) Observer 패턴

옵저버 패턴 객체들 간의 일대다 의존 관계를 정의하여, 한 객체의 상태가 변경되면 그것을 구독하는 모든 객체들이 자동으로 알림을 받고 업데이트되는 패턴  기본 구현 방법1. 이벤트를 정의할 인터페이스public interface ISubject{ void AddObserver(IObserver observer); void RemoveObserver(IObserver observer); void NotifyObservers();}public interface IObserver{ void OnNotify(string eventType, object data);} 2. 게임 이벤트를 관리하는 Subject 클래스 public class PlayerSubject : MonoBehaviour..

[Unity] 유니티 C#) ObjectPool 패턴

오브젝트 풀 게임에서 자주 생성되고 파괴되는 오브젝트들을 미리 생성해두고 재활용하는 디자인 패턴  기본 구현 방법public class ObjectPool : MonoBehaviour{ public GameObject prefab; // 풀링할 프리팹 public int poolSize = 20; // 풀 크기 private List pool; // 풀 리스트 void Start() { // 풀 초기화 pool = new List(); for (int i = 0; i  사용방법// 오브젝트 풀 사용 예시public class BulletSpawner : MonoBehaviour{ private ObjectPo..

[Unity] 유니티 C#) Singleton 패턴

싱글톤 패턴클래스의 인스턴스가 게임 전체에서 단 하나만 존재하도록 보장하는 디자인 패턴 Unity에서 특히 유용한 이유씬(Scene) 전환 시에도 데이터를 유지할 수 있습니다전역적으로 접근 가능한 상태나 기능을 제공합니다게임 매니저, 사운드 매니저 등의 관리자 클래스에 적합합니다 기본 구현 방법public class GameManager : MonoBehaviour{ // 싱글톤 인스턴스 private static GameManager instance; // 공개 프로퍼티 public static GameManager Instance { get { if (instance == null) { ..

반응형