Humility

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

공부하는 블로그
반응형

전체보기 80

[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) { ..

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

EventBus 패턴개임 내 서로 다른 컴포넌트나 시스템 간의 통신을 관리하는 디자인 패턴 기본 구현 방법기본 이벤트 클래스 정의public class GameEvent{ // 기본 이벤트 클래스 - 필요한 경우 데이터 추가 가능} 실제 사용할 이벤트 클래스 생성public class ScoreChangedEvent : GameEvent{ public int NewScore { get; private set; } public ScoreChangedEvent(int score) { NewScore = score; }} 이벤트 버스 구현public class EventBus : MonoBehaviour{ private static EventBus instance;..

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

커맨드(Command) 패턴 요청을 객체의 형태로 캡슐화하여 매개변수화하고, 요청을 큐에 저장하거나 로그로 기록하고, 작업 취소 등의 기능을 지원하는 디자인 패턴  커맨드 패턴의 핵심 구성 요소 Command (명령 인터페이스) public interface ICommand{ void Execute(); // 실행 메서드 void Undo(); // 실행 취소 메서드} Concrete Command (구체적인 명령) public class JumpCommand : ICommand{ private Player player; // Receiver public JumpCommand(Player player) { this.player = player; } ..

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

State 패턴객체의 내부 상태에 따라 동작을 변경할 수 있게 해주는 디자인 패턴 기본 구현 방법상태 인터페이스 정의public interface IState{ void Enter(); // 상태 진입시 호출 void Execute(); // 상태 실행중 호출 void Exit(); // 상태 종료시 호출} 상태를 관리할 매니저 클래스public class StateManager : MonoBehaviour{ private IState currentState; void Start() { // 초기 상태 설정 SetState(new IdleState()); } void Update() { // 현재 상태 실행..

반응형