facebook twitter hatena line email

「Unity/MVP」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
 
(同じ利用者による、間の11版が非表示)
行1: 行1:
==MVPとは==
+
[[Unity/MVP/Helloworld]]
MV(R)Pで、ModelとViewとPresenterをReactiveで、疎結合に連携したパターン
+
  
CounterModel.cs
+
[[Unity/MVP/値変更を自動でViewへ適用]]
<pre>
+
public class CounterModel
+
{
+
    public int Counter {
+
        get => counter;
+
        set => counter = value;
+
    }
+
    int counter = 0;
+
  
    public void PlusCounter()
+
[[Unity/MVP/公式サンプル]]
    {
+
        counter++;
+
    }
+
    public void MinusCounter()
+
    {
+
        counter--;
+
    }
+
}
+
</pre>
+
 
+
CounterView.cs
+
<pre>
+
using UnityEngine;
+
using UnityEngine.UI;
+
 
+
public class CounterView : MonoBehaviour
+
{
+
    [SerializeField] public Button minusButton, plusButton;
+
    [SerializeField] public Text text;
+
 
+
    public void SetValueText(float value)
+
    {
+
        text.text = value.ToString();
+
    }
+
}
+
</pre>
+
 
+
CounterPresenter.cs
+
<pre>
+
using UnityEngine;
+
using UniRx;
+
 
+
public class CounterPresenter : MonoBehaviour
+
{
+
    [SerializeField] private CounterView _counterView;
+
 
+
    void Start()
+
    {
+
        CounterModel model = new CounterModel();
+
        _counterView.SetValueText(model.Counter);
+
 
+
        _counterView.plusButton
+
            .OnClickAsObservable()
+
            .Subscribe(_ => {
+
                model.PlusCounter();
+
                _counterView.SetValueText(model.Counter);
+
            })
+
            .AddTo(this);
+
 
+
        _counterView.minusButton
+
            .OnClickAsObservable()
+
            .Subscribe(_ => {
+
                model.MinusCounter();
+
                _counterView.SetValueText(model.Counter);
+
            })
+
            .AddTo(this);
+
    }
+
}
+
</pre>
+

2024年9月23日 (月) 02:38時点における最新版

Unity/MVP/Helloworld

Unity/MVP/値変更を自動でViewへ適用

Unity/MVP/公式サンプル