using UniRx;//UniRxを使用
using UnityEngine;
public class GameData : MonoBehaviour
{
//int型のReactivePropertyを作成
public ReactiveProperty<int> Count = new();
void Reset()
{
//ReactivePropertyに初期値を代入
Count = new(0);
}
}
GameManager.cs(Presenter)
~AsObservableメソッドなし
using UniRx;//UniRxを使用
using UnityEngine;
public class GameManager : MonoBehaviour
{
[SerializeField]
private UIManager uiManager;//View
[SerializeField]
private GameData gameData;//Model
private void Start()
{
//GameDataクラス(Model)のReactivePropertyのCountを
gameData.Count
//講読(監視)し、//int型のx変数(gameData.Count.Value)を渡す
.Subscribe(x
//UIManagerクラス(View)の
//UpdateDisplayCountメソッドを呼び出し、//引数にx変数の値を渡し、
//表示を更新する
=> uiManager.UpdateDisplayCount(x))
//GameManagerクラス(Presenter)が消えたら講読をやめる
.AddTo(this);
}
private void Update()
{
if (Input.GetMouseButtonDown(0))gameData.Count.Value++;
}
}
using UnityEngine.UI;
using UnityEngine;
public class UIManager : MonoBehaviour
{
[SerializeField]
private Text txtCount;
public void UpdateDisplayCount(int count)//引数を利用
{
txtCount.text = count.ToString();
}
}
コメント