ゲーム画面です
こんなんです。
真ん中にボタンが1個ある、すごくシンプルなゲーム
このボタンを5回押したら処理が1回走ります。(コンソールに”発火”と表示する)
こんなオブジェクトを配置しました
ヒエラルキーで見ていきましょう。
- CountManagerオブジェクト → CountManagerスクリプトをアタッチしています。
- Buttonオブジェクト → クリック時に呼ばれるメソッドとしてCountManagerのAddCountをセット(下の画像を参照)
- Textオブジェクト → テキストに”加算”と書いています。
コードはこんな感じです
UniRxというアセットを使用しています。
Start時に1度設定してあげると、条件を満たす時が来るまで監視してくれます。
条件を満たすと処理が走ります。
(今回の条件は _maxCount == _currentCount という部分になります)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UniRx;
using UniRx.Triggers;
public class CountManager : MonoBehaviour
{
private int _maxCount = 5;
public int _currentCount = 0;
void Start()
{
this.UpdateAsObservable() // 1度セットするとUpdate同様に毎フレーム監視
.First(_ => _maxCount == _currentCount) // 条件を満たしたら1回だけ処理が走る
.Subscribe(_ => Debug.Log("発火"))
.AddTo(this);
}
public void AddCount()
{
_currentCount++;
}
}
AddCountメソッドはボタンを押すたびにintに1加算します。
ボタンと連動しています。
ボタンを5回してみました
“発火” と1度だけ表示されました。
成功です。
条件を変更したり、「.Subscribe(_ => ●●)」この●部分を別の処理に変更することで色々なことに応用できそうです。
コメント