TOOLS GAMES DEVLOG DOCS ABOUT CONTACT
HOME > DOCS > Unity / C# > ScriptableObject 기반 모듈형 게임 변수 및 이벤트 아키텍처
Unity / C# Intermediate Unity 2021.3+ / Unity 6

ScriptableObject 기반 모듈형 게임 변수 및 이벤트 아키텍처

싱글톤 없이 ScriptableObject를 데이터 컨테이너와 이벤트 브로커로 사용하여 씬 간 데이터 공유와 UI-게임플레이 디커플링을 달성하는 라이언 히플(Ryan Hipple) 아키텍처.

#Unity #ScriptableObject #Architecture #Design Pattern
핵심 개념게임 내 플레이어 체력이나 점수를 FloatVariable이라는 ScriptableObject 에셋 파일로 만들면, 씬에 플레이어가 스폰되지 않은 프리팹 상태나 UI에서도 인스펙터 드래그 앤 드롭만으로 변수를 관찰하고 연동할 수 있습니다.

1. 모듈형 SO 변수 구현

FloatVariable.cs
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);
        }
    }
}