2025/05 4

[HighRoWin] 상속과 인터페이스를 활용한 리팩토링

이전에 진행했던 개인 프로젝트에서 스스로도 고쳐야겠다고 생각했고, 튜터님도 보완이 필요하다고 말씀해주신 부분을 개선했다.이전 프로젝트와 리팩토링한 버전의 프로젝트 링크이다.https://github.com/00ovo00/HighRoWinhttps://github.com/00ovo00/HighRoWin2문제점보다시피 Item, MovingObject, StationaryObject 모두 공통되면서도 다른 부분이 있는데 개별로 관리하고 있어 중복된 코드가 많으며 한눈에 들어오지 않는다. 특히 풀에 반환하는 시점을 코루틴으로 관리하고 있어 시간이 지나면 자동으로 반환되는 문제가 있다.오브젝트차이점공통점Item플레이어와 트리거되면 풀로 바로 반환ObjectPooling 대상Scriptable Object 데이터..

프로젝트 기록 2025.05.25

[Warning-of-the-Monsters] 인간 상태 머신 설계

본 게임에서 인간 캐릭터들이 몬스터를 공격하거나 도망가는 등 다양한 행동을 한다. 이런 복잡한 행동을 깔끔하게 구현하기 위해 가장 널리 쓰이는 패턴 중 하나가 바로 상태 머신(State Machine) 이다. HumanStateMachine과 관련된 주요 클래스와 상태들을 분석하며, 이 시스템이 어떻게 동작하고 구조적으로 어떤 장점을 가지는지를 살펴보자. 핵심 구성 요소클래스역할HumanController캐릭터의 상태, 속도, 타겟 등을 제어하는 중심 클래스HumanStateMachine현재 상태를 관리하고 상태 전이를 담당IHumanState상태들의 인터페이스 (Enter/Update/Exit 메서드 정의)WalkHumanState, RunHumanState, BattleHumanState각각 걷기, ..

프로젝트 기록 2025.05.24

UIManager 설계

필요성UI 요소를 Scene에 항상 존재하는 UI와 특정 상황에서만 팝업되는 UI로 구분하였다.UIManager는 그중 팝업 UI를 관리하는 매니저이다. 팝업 UI는 사용자의 플레이에 따라 한번도 사용되지 않을 수 있다.미리 Scene에 배치해놓고 disable 해놓을 수도 있지만 여러 개의 팝업 UI가 존재한다면 편집 작업이 불편해지고, 사용하지 않을 수도 있는 팝업 UI를 씬 활성화 시 모두 로드하게 되어 비효율적이다.따라서 특정 팝업 UI를 사용할 때만 Resources 폴더에서 가져와 동적 생성하도록 만들어 리소스를 절약하려 한다. 설계 과정1. T 타입의 팝업 UI를 만든다. 이때 class 이름(script 이름)과 prefab 이름은 동일해야하며 prefab에 해당 컴포넌트가 붙어있어야 한다..

프로젝트 기록 2025.05.24

PoolManager 설계

PoolManager Refactoring기존에 설계한 PoolManager에서 보완이 필요하다고 피드백 받은 부분을 개선하였다.기존 PoolManager 설계와 관련된 내용은 아래 링크에서 자세히 확인할 수 있다.https://lbtm.tistory.com/79 [ 기존 PoolManager 문제점 ]- GameObject 타입으로 반환하여 각 클래스에서 SpawnFromPool로 풀에서 가져온 후에 추가로 GetComponent 하는 과정이 필요함- 확장 풀이 아니므로 범용적인 사용 어려움- 시작 시 사용하지 않아도 설정된 모든 오브젝트 풀을 미리 준비 [ 문제점 보완 ]- T 타입으로 반환하여 따로 GetComponent 하지 않아도 해당 타입 클래스의 메서드 바로 사용 가능- Unity 내장 Ob..

프로젝트 기록 2025.05.24