본문 바로가기
개발/C#

유니티 MVVM 패턴 간단 구현

by SPNK 2023. 4. 23.
반응형
  • 모델
public class PlayerModel
{
    private int _health;
    public int Health 
    { 
        get { return _health; }
        set { _health = value; }
    }
}

 

public class PlayerView : MonoBehaviour
{
    [SerializeField] private Text _healthText;
    private PlayerViewModel _viewModel;

    public void Bind(PlayerViewModel viewModel)
    {
        _viewModel = viewModel;
        _viewModel.HealthChanged += UpdateHealthText;
    }

    private void UpdateHealthText(int health)
    {
        _healthText.text = "Health: " + health.ToString();
    }

    public void OnDamageButtonClicked()
    {
        _viewModel.DamagePlayer();
    }
}

 

  • 뷰 모델
public class PlayerViewModel
{
    private PlayerModel _model;
    public event Action<int> HealthChanged;

    public PlayerViewModel()
    {
        _model = new PlayerModel();
    }

    public int Health 
    { 
        get { return _model.Health; }
        set 
        { 
            _model.Health = value;
            HealthChanged?.Invoke(value);
        }
    }

    public void DamagePlayer()
    {
        Health--;
    }
}
반응형

댓글