Unity / C#
Intermediate
Unity 2021.3+ / Unity 6
ScriptableObject 기반 모듈형 게임 변수 및 이벤트 아키텍처
싱글톤 없이 ScriptableObject를 데이터 컨테이너와 이벤트 브로커로 사용하여 씬 간 데이터 공유와 UI-게임플레이 디커플링을 달성하는 라이언 히플(Ryan Hipple) 아키텍처.
#Unity #ScriptableObject #Architecture #Design Pattern
핵심 개념게임 내 플레이어 체력이나 점수를
FloatVariable이라는 ScriptableObject 에셋 파일로 만들면, 씬에 플레이어가 스폰되지 않은 프리팹 상태나 UI에서도 인스펙터 드래그 앤 드롭만으로 변수를 관찰하고 연동할 수 있습니다.1. 모듈형 SO 변수 구현
using System;
using UnityEngine;
[CreateAssetMenu(menuName = "Variables/Float Variable")]
public class FloatVariable : ScriptableObject
{
[SerializeField] private float value;
public event Action<float> OnValueChanged;
public float Value
{
get => value;
set
{
this.value = value;
OnValueChanged?.Invoke(this.value);
}
}
}