HogeというクラスにFuncという引数付きメソッドがある場合、通常はこう。
public class Hoge : MonoBehaviour{
void Func(int val);
}
Hoge hoge = new Hoge();
hoge.Func(100);
これをSendMessageで行うとこうなります。
Hoge hoge = new Hoge();
hoge.SendMessage("Func", 100);
リファレンスはこちら。
Component::SendMessage
見ての通りComponentなので、GameObjectでもMonoBehaviourでも使えます。
しかしこのSendMessage、引数取得等には使えません。
一方的に呼び出すプロシージャ的な扱いです。
こんな呼び出し、果たして何のためにあるかという話ですが、、、。
実際には言語の壁を超える場合に最も有効なようです。
C#とJSを混在させた場合、互いのクラスが参照できないといった現象に度々出くわします。
しかしSendMessageは弱い型付けとして動作するため、クラス定義が見つからない状態でもエラーとならず呼び出すことができます。
これはUnityをブラゲーとして動作する場合にも有効です。
HTML上で動作するJsからUnityへ値を受け渡しする際にもこれを使用したりします。
サーバ側でセッション情報等を生成しHTMLに埋め込んで、Unityが受け取って通信したい場合等は必須とも言えますね。

0 コメント:
コメントを投稿