"MonoBehaviour에 모든 걸 때려박지 마라."
Manager, Service, StateMachine, Controller 클래스로 추출public class Player : MonoBehaviour
{
public PlayerStats stats;
private PlayerController controller;
void Awake()
{
controller = new PlayerController(stats);
}
void Update()
{
controller.HandleInput();
}
}
하나의 클래스가 하나의 역할만 하도록 설계하기.
InventoryManager, ItemDatabase, InventoryUI 등 분리.UIWindow가 데이터를 직접 가공하지 않도록.느슨한 연결(Loosely Coupled)은 유지보수의 핵심.
UnityEvent, C# Event, 혹은 MessageBus 구조 도입.public class PlayerStats : MonoBehaviour
{
public event Action OnHealthChanged;
public void TakeDamage(int amount)
{
health -= amount;
OnHealthChanged?.Invoke();
}
}