かさたな日記

主にUnityを使った制作記録。書いてる人は初心者です。一緒に頑張ろう。

自分用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枚目以降はユニットアイコンの修正点込みで作成