Unity 18

[Unity 개발] King's Adventure - Player 상태 세부 구현

Unity 2D 기반으로 픽셀 컨셉의 Adventure RPG를 개발하려고 합니다.모바일, PC 기반으로 개발할 예정입니다. 일단 가제는 'King's Adventure'로 정하였습니다. 오늘 기획 및 개발한 내용을 블로그에 정리합니다. State 구조상위 State는 Singleton으로 만든 Player, PlayerController에서 관리하는 변수 사용을 위해 PlayerController와 하위 상태 관리를 위한 SubStateMachine, 하위 상태들로 이루어져있습니다.public enum PlayerSubStateType{ Attack, Skill_1, Skill_2, Roll, Block, Pray, Sleep} 또한, 열거형 Player Sub ..

게임 개발 2025.07.01

[Unity 개발] King's Adventure - Player 입력 및 상태 구현

Unity 2D 기반으로 픽셀 컨셉의 Adventure RPG를 개발하려고 합니다.모바일, PC 기반으로 개발할 예정입니다. 일단 가제는 'King's Adventure'로 정하였습니다. 오늘 기획 및 개발한 내용을 블로그에 정리합니다. 키 입력 Player Input Action을 사용하여 기본적인 키 입력을 받았습니다. 각 동작에 있어서 필요에 맞게, Press 또는 Hold로 Interactions을 설정하였습니다. 다만, 점프에 있어서는 Hold와 Press를 모두 설정해놓았는데,이는 스페이스바를 누르는 만큼 점프를 더 오래할 수 있게 하기 위함입니다. 점프가 시작되면서 Press로 반응한 Callback Context가변수 jumpPressStartTime을 Time.time으로 시간을 저장하고..

게임 개발 2025.06.21

[Unity] 디자인 패턴 : Dirty Flag 패턴

이 글은 해당 유튜브를 보고 진행한 것에 대해 공부한 것을 정리한 글입니다. 더티 플래그 패턴 (Dirty Flag Pattern)더티 플래그는 오브젝트의 상태가 마지막으로 처리되거나 렌더링된 이후에 변경되었는지 여부를 나타내는 Boolean입니다.만약 오브젝트가 '더티' 상태라면 업데이트를 수행하고, 그렇지 않다면 무시하여 불필요한 연산을 줄입니다.특징계산 비용 절감에 최적화복잡한 계산이나 구성, 비용이 높은 환경에서 매우 유용합니다.장면에서 많은 계산이나 업데이트가 발생할 때가 이에 해당합니다.객체가 자주 변하지 않는다면, 업데이트를 지연시켜 CPU 사용량을 줄일 수 있습니다.단순한 Boolean 플래그 기반 구조객체 내부에 isDirty와 같은 불리언 플래그를 두어 상태를 추적합니다.상태 변경이 ..

Unity 2025.06.18

[Unity] 디자인 패턴 : Flyweight 패턴

이 글은 해당 유튜브를 보고 진행한 것에 대해 공부한 것을 정리한 글입니다. 플라이웨이트 패턴 (Flyweight Pattern)플라이웨이트 패턴은 공유 데이터를 중앙 집중화하여 게임의 중복 데이터를 줄이는 최적화 패턴입니다.개별 오브젝트가 각자 데이터 복사본을 저장하는 대신 이 공유 데이터를 참조하도록 하는 것입니다.특징공통 데이터의 공유를 통해 메모리 최적화플라이웨이트 패턴은 여러 객체 간에 공통 상태를 공유함으로써 메모리 사용을 줄이는 구조적 디자인 패턴입니다.동일한 정보를 중복 저장하지 않고, 필요에 따라 참조해서 사용하는 방식으로 동작합니다.성능에 초점을 둔 최적화 패턴일반적인 디자인 패턴들이 구조나 유연성에 중점을 둔다면, 플라이웨이트는 명확히 성능과 메모리 절약에 목표를 둡니다.수많은 객체..

Unity 2025.06.17

[Unity] 디자인 패턴 : Strategy 패턴

이 글은 해당 유튜브를 보고 진행한 것에 대해 공부한 것을 정리한 글입니다. 전략 패턴 (Strategy Pattern)전략 패턴은 다양한 알고리즘 또는 동작을 하나의 추상적인 접근점으로 만들어, 접근점에서 알고리즘이 서로 교환 가능하도록 하는 패턴입니다. 특징알고리즘의 캡슐화와 상호 교환전략 패턴은 동일 계열의 알고리즘군을 정의하고, 각각의 알고리즘을 캡슐화하여 상호 교환이 가능하도록 만듭니다.객체 내에서 알고리즘이나 동작을 래핑하고, 상황에 따라 동적으로 교체할 수 있게 합니다.전략과 다른 컴포넌트의 결합도를 낮게 유지해야 합니다.동작의 유연한 변경 가능알고리즘을 사용하는 객체는 구체적인 전략 구현을 몰라도 되며, 런타임 시 알고리즘을 교체할 수 있습니다.각 전략은 자체적으로 캡슐화되어 있기 때문에..

Unity 2025.06.17

[Unity] MVC, MVP, MVVM 패턴

이 글은 해당 유튜브를 보고 진행한 것에 대해 공부한 것을 정리한 글입니다. UI 아키텍처 패턴(MVC, MVP, MVVM)의 공통 목표UI와 로직의 분리UI 요소와 비즈니스 로직이 뒤엉키는 것을 방지해 유지보수를 용이하게 합니다.불필요한 종속 관계 감소컴포넌트 간 직접적인 의존을 줄여 유연성과 재사용성을 확보합니다.Soc(Separation of Concerns), 관심사의 분리각 요소는 자신의 역할에만 집중하고, 서로 최소한으로 관여합니다.스파게티 코드 방지복잡하게 얽힌 코드 흐름을 방지하고 가독성과 안전성을 높입니다.아키텍처 패턴으로 분류소프트웨어의 구조를 체계적으로 설계하기 위한 고수준 설계 방법입니다.UI 프레임워크 의존성 존재특히 MVVM은 데이터 바인딩 기능이 있는 UI 프레임워크(ex :..

Unity 2025.06.17

[Unity] 디자인 패턴 : Singleton 패턴

이 글은 해당 유튜브를 보고 진행한 것에 대해 공부한 것을 정리한 글입니다. 싱글톤 패턴 (Singleton Pattern)클래스가 자신의 인스턴스를 하나만 생성하도록 보장하고, 해당 단일 인스턴스에 대해 어디서든 전역(Global)으로 쉽게 접근할 수 있도록 보장하는 디자인 패턴입니다.사용 용도하나의 인스턴스만 있어야 하는 객체가 필요할 때 사용됩니다.게임 매니저 (GameManager)오디오 매니저 (AudioManager)UI 설정 관리자 (UISetting)상태창파일 관리자등등확장성이 필요하지 않은 소규모 게임 개발에서는 싱글톤 패턴이 유용하게 사용되지만,수년 동안 유지 관리하려는 엔터프라이즈 수준의 게임은 싱글톤 패턴이 적절하지 않습니다. 특히 대규모 프로젝트나 장기 유지보수가 필요한 게임에서..

Unity 2025.06.17

[Unity] 디자인패턴 : Object Pool

이 글은 해당 유튜브를 보고 진행한 것에 대해 공부한 것을 정리한 글입니다. 오브젝트 풀 (Object Pool)오브젝트 풀링은 반복적으로 생성과 제거가 필요한 게임 오브젝트를 미리 생성해 비활성화 상태로 보관해두고, 필요할 때 재사용하는 기법입니다.엄밀히 말하면 GoF 디자인 패턴에는 포함되지 않지만, 게임 개발에서는 사실상 필수적인 최적화 패턴으로 널리 쓰입니다. 주요 특징빠른 재사용매번 오브젝트를 생성하지 않고, "Pool"에서 준비된 상태로 대기 중인 초기화된 오브젝트를 사용하므로 속도가 빠릅니다.GC (가비지 콜렉션) 절감반복적인 생성 / 파괴로 인한 메모리 파편화 및 GC 스파이크를 방지할 수 있습니다.사전 로딩 가능로딩 화면 중 필요한 수만큼 미리 생성해두면, 런타임 성능 향상에 기여합니다..

Unity 2025.06.16

[Unity] 디자인 패턴 : Factory 패턴

이 글은 해당 유튜브를 보고 진행한 것에 대해 공부한 것을 정리한 글입니다. 팩토리 패턴 (Factory Pattern)객체 생성을 위한 설계 패턴팩토리 패턴은 객체 생성을 전담하는 별도의 클래스를 두고,객체를 생성하는 로직을 클라이언트 코드로부터 분리하는 디자인 배턴입니다.주요 특징객체 생성에 대한 인터페이스와 구현의 분리클라이언트는 어떤 클래스의 인스턴스가 생성되는지 몰라도 되고, 단순히 인터페이스만 알면 됩니다.객체 생성과 관련된 세부사항을 캡슐화조건 분기, 설정 값, 초기화 등 복잡한 생성 과정을 은닉화합니다.유연한 확장성새로운 객체를 생성하는 방식에 대한 유연한 확장이 가능합니다.새로운 타입이 추가되어도 기존 코드를 변경할 필요 없이 팩토리 내부 및 새로 추가될 타입만 수정하면 됩니다.장점단일..

Unity 2025.06.16

[Unity] 디자인 패턴 : Command 패턴

이 글은 해당 유튜브를 보고 진행한 것에 대해 공부한 것을 정리한 글입니다. 커맨드 패턴 커맨드 패턴은 메서드 호출을 객체로 래핑하는 디자인 패턴입니다. 즉, 행동 자체를 하나의 오브젝트로 표현할 수 있게 해줍니다.메서드를 직접 호출하는 대신 커맨드 패턴을 사용하면, '커맨드 오브젝트'라는 하나 이상의 메서드 호출을 캡슐화할 수 있습니다. 즉, 행동 자체를 "값처럼" 다룰 수 있게 만든 것이 커맨드 패턴의 핵심입니다. 이렇게 만들어진 커맨드 오브젝트는 큐(queue), 스택(stack) 등의 자료구조에 저장될 수 있으며, 이를 통해 행동의 실행 순서나 취소 등을 제어할 수 있습니다.즉, 작은 커맨드 버퍼로 작동하며, 실행 타이밍을 유연하게 제어할 수 있게 해줍니다.장점명령과 실행 주체의 분리각 요청을 ..

Unity 2025.06.13