前提・実現したいこと
クラスAにかなりの頻度で数値が変わる変数があり、その数値が変化したのを確認してから、処理を行い値を返すメソッドを作りたいと思っています。
以下のコードのGetOver5()のようなものを作りたいと思っていますが、この状態だとかなり処理が重たい(もしくは動作不可)ので、
値が変わった瞬間に、それが欲しい値かを判断して、正しい場合はreturnして、異なった場合はまた値が変わるのを待つ関数を作りたいのですが、どうすればいいのでしょうか?
GetOver5()の改善案みたいなのが欲しいです。
C#
1//仮想的なソースコード(動くことや正しさはあまり保証していません) 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5 6class MyClass 7{ 8 private bool flag = false; 9 private int count = 0; 10 private int Count 11 { 12 set 13 { 14 this.count = value; 15 } 16 get 17 { 18 return this.count; 19 } 20 } 21 22 public int GetOver5() 23 { 24 flag = true; 25 //5以上の数字が出るまで待つ 26 while(true) 27 { 28 if(count > 4) 29 { 30 break; 31 } 32 } 33 flag = false; 34 return count; 35 } 36 37 Update() 38 { 39 if(flag != false) 40 { 41 Count = UnityEngine.Random.Range(0,10); 42 } 43 } 44} 45 46class MainClass 47{ 48 MyClass myClass = new MyClass(); 49 int store = myClass.GetOver5(); 50 Debug.Log(store); 51}
試したこと
eventやawait / async を見てみましたが、このような場合に使えるのかわかりません。
補足情報(FW/ツールのバージョンなど)
Unity 2019.3
Rx を使うのが良いと思います。