Boltの備忘録です。
UIボタンを押した時にBolt側のカスタムイベントを呼ぶ方法として、2つの方法があるようです。
- UIボタンにFlow Machineコンポーネントを追加し、マクロの中で「On Button Click」イベントを設定する
- UIボタンの「On Click()」からFlow MachineにUnityイベントを送る方法
ボタンのクリックでカスタムイベントを呼ぶためだけにマクロを作るのも面倒なので、今回は2の方法でやってみたいと思います。
テスト用のシーンとして、
![f:id:hiroaoki:20190506160232p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroaoki/20190506/20190506160232.png)
こんなのを用意してみました。
- 数字を表示するテキストオブジェクト
- 数字を保存する「Save」ボタン
- 数字を読み込む「Load」ボタン
「Save」を押すと整数に1を足して保存、「Load」を押すと保存された整数を読み込みテキストを更新という動きにしてみたいと思います。
Save・Load時にBoltのFlow Machineに投げるUnityイベントとして、
- Save時:「SaveData」
- Load時:「SetText」
とします。
Saveの処理をここでは「DataManager」というオブジェクトを用意しFlow Machineを設定しました。
![f:id:hiroaoki:20190506161457p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroaoki/20190506/20190506161457.png)
Saveボタンを押した際に、このオブジェクトのFlow MachineにUnityイベントを送ります。
同様にLoadボタンを押した際のテキストの更新は「Text」オブジェクトにセットしたFlow MachineにUnityイベントを送ります。
![f:id:hiroaoki:20190506162854p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroaoki/20190506/20190506162854.png)
それぞれのボタンのOn Click()にDataManagerのFlow MachineにUnityイベントを送る設定をします。
まずは「Save」ボタン
![f:id:hiroaoki:20190506162318p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroaoki/20190506/20190506162318.png)
ターゲットのオブジェクトに「DataManager」をセットし、Functionは「FlowMachine > TriggerUnityEvent」を選択
送るイベントは「SaveData」を入力
次に「Load」ボタン
![f:id:hiroaoki:20190506163105p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroaoki/20190506/20190506163105.png)
ターゲットのオブジェクトに「Text」をセットし、Functionは「FlowMachine > TriggerUnityEvent」を選択
送るイベントは「SetText」を入力
次に、Saveボタンから送られる「SaveData」イベントを受け取るFlow Machine側の設定を行います
![f:id:hiroaoki:20190506171251p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroaoki/20190506/20190506171251.png)
Flow Machineで「UnityEvent」ユニットをセットして、イベント名に「SaveData」と入力
Saved Variablesに「TestValue」という整数(Int)の変数を用意し、「SaveData」イベントが呼ばれるたびに1が足されるようになっています
今度はLoadボタンから呼ばれる「SetText」の方のFlow Machineの内容です
![f:id:hiroaoki:20190506210842p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroaoki/20190506/20190506210842.png)
SaveDataと同じように「UnityEvent」ユニットを用意し、イベント名に「SetText」と入力
ここでは保存されている「TestValue」を文字列に変換し、テキストオブジェクトのテキストに入力しています
Saveで数値を増やして、Loadで今の数値がテキストに反映されるようになりました
![f:id:hiroaoki:20190506211217p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/h/hiroaoki/20190506/20190506211217.png)