「Unity/MVP」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→参考) |
|||
| 行93: | 行93: | ||
==参考== | ==参考== | ||
https://qiita.com/OKsaiyowa/items/745c5359682c7baad6bf | https://qiita.com/OKsaiyowa/items/745c5359682c7baad6bf | ||
| + | |||
| + | https://qiita.com/Nakashima_Toshiki/items/5e0c36c3b0df78110d32 | ||
2021年9月15日 (水) 04:19時点における版
MVPとは
MV(R)Pで、ModelとViewとPresenterをReactiveで、疎結合に連携したパターン
準備
- UniRxをインストールしておく。
Unity/UniRx [ショートカット]
サンプル
CounterModel.cs
public class CounterModel
{
public int Counter {
get => counter;
set => counter = value;
}
int counter = 0;
public void PlusCounter()
{
counter++;
}
public void MinusCounter()
{
counter--;
}
}
CounterView.cs
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();
}
}
CounterPresenter.cs
using UnityEngine;
using UniRx;
public class CounterPresenter : MonoBehaviour
{
[SerializeField] private CounterView _counterView;
private CounterModel _counterModel;
void Start()
{
_counterModel = new CounterModel();
_counterView.SetValueText(_counterModel.Counter);
_counterView.plusButton
.OnClickAsObservable()
.Subscribe(_ => {
_counterModel.PlusCounter();
_counterView.SetValueText(_counterModel.Counter);
})
.AddTo(this);
_counterView.minusButton
.OnClickAsObservable()
.Subscribe(_ => {
_counterModel.MinusCounter();
_counterView.SetValueText(_counterModel.Counter);
})
.AddTo(this);
}
void OnDestroy()
{
Destroy(this);
}
}
手順
- SampleSceneのヒエラルキーにTextとPlusButtonとMinusButtonを作成する。
- ヒエラルキーにGameObjectを作成して、CounterViewと変更する。CounterView.csをAddComponentする。
- CounterPresenter.csをMainCanvasにAddComponentする。
- CounterViewオブジェクトを選択し、インスペクターのCounterViewの部分にそれぞれのUIをドラッグする。
- MainCanvasのCounterPresenterにCounterViewオブジェクトをドラッグする。
参考
https://qiita.com/OKsaiyowa/items/745c5359682c7baad6bf
https://qiita.com/Nakashima_Toshiki/items/5e0c36c3b0df78110d32
