はじめに
ゆう@あんのうんです。
今日は標題のUnityのオブジェクト間の情報のやり方の1つのSendMessageについてです。
概要
例えば、アクション等で、プレイヤーキャラがダメージを受けた場合、
ゲーム全体を管理しているマネージャーにその情報を送りたいという事は往々にしてあります。
その時に情報を送るやり方の1つとして、SendMessageと言う機能があります。
(iOSで言うところの、Notificationが近しいかも)
やり方
オブジェクトAから、オブジェクトBにメッセージを送る例
// オブジェクトAの処理 GameObject objectB = GameObject.FindGameObjectsWithTag ("ObjectB"); objectB.SendMessage("hogehogeMessage");
// オブジェクトBの処理 void hogehogeMessage() { /* 処理 */ }
上記の用に記述することによって、オブジェクトAの然るべきタイミングで、オブジェクトBのhogehogeMessageメソッドをコールすることが出来ます。
また、引数を持たせたい場合は以下のように記述します。
// オブジェクトAの処理 GameObject objectB = GameObject.FindGameObjectsWithTag ("ObjectB"); objectB.SendMessage("hogehogeMessage", 10);
// オブジェクトBの処理 void hogehogeMessage(int arg) { /* 処理 */ }
その他にも、SendMessageは単純にメッセージを送る機能ですから、同時にいくつも送信しても問題ありません。
// オブジェクトAの処理 GameObject[] objectBArray = GameObject.FindGameObjectsWithTag ("ObjectB"); foreach (var obj in objectBArray) { obj.SendMessage("hogehogeMessage"); }
// オブジェクトBの処理 void hogehogeMessage() { /* 処理 */ }