自分用Unityメモ:UnityEventでコールバック
ちょっと便利なことを知ったのでブログに書いておこう。
もしかしたら基本なのかもしれないけど。
ボクのような初心者にとってはかなり使える機能だったのだ...。
UnityにはUnityEventなるクラスがありまして、
これを使うことでコールバックイベントのような機能を持たせることができます。
一番わかりやすいのがButtonコンポーネントのOnClickイベント。
//↓この名前空間を使うよと言っておく。 // 言わないとUnityEventなんて知らないよ、と怒られる。 using UnityEngine.Events ~~~~~~~~~~~~ [SerializeField] private UnityEvent callBackEvent;
こんな感じで定義して、シリアライズしておきます。
するとButtonのときみたいにインスペクターから
イベント(任意のメソッド)を追加できるようになります。
(※追加できるのはpublicだけです。引数は1つだけ。きっとスペースの関係)
あとは
callBackEvent.Invoke();
で、設定したイベントを呼び出すことができます。
動的にメソッドを追加・削除したいときは、
AddListener、RemoveListenerを使います。
その場合は多分、引数は2つ以上でも大丈夫だと思います。
(試してないの...でも、ボタンの時は行けたから...)
これを使うことで
「特定の状況になったら呼ばれるイベント」を
あとから決めたり、差し替えたりできます。便利。
今回はこの機能を使って、
マウスのドラッグやタップ(おまけで方向キー)の入力に反応するマネージャーと
超簡易なステートマシンもどきを作ってみました。
最終的に2つを連携させることにしたので
互いのクラスにめり込んでて、あんまりスマートではないけど....。
#追記
気になるのでもうクラス自体をくっつけてしまった。
コードはすっきりした。コードは....
制作状況など
アプリ制作
psycholopsがダメになってしまったので新作を企画中...。
またアクションとかシューティング路線になると思います。
アクションRPGも作ってみたいけど大変そうだ。
依頼の進行度
・ユニットアイコン:試作品を送信済み。返信待ち
・顔グラアイコン:ユニットアイコンの修正込みで作成
・イラスト:1枚目色塗り中。2枚目以降はユニットアイコンの修正点込みで作成
■
よし、依頼のイラストとアイコンを制作するぞ。
ユニットアイコンの方は多分試作品を先にお送りします。
その方がテストプレイをやりやすいと思いますので。
あとイラストはどうしても時間がかかるのよ...。