シロイヘヤ+クロイヘヤver0.80をとりあえず。(水)【Unity】【備忘録】コンポーネント間のメソッド呼び出しとパフォーマンスUnityで実行するとき、コンポーネントが違うと少しめんどいので、やり方をまとめて、どういう状況で使うのか整理しとこうかと。大雑把に4種類、実行したいメソッドをTargetMethod()として以下。TargetMethod():注意:対象GameObjectを事前に参照する必要がある。Findするとゲロ重い。×GetComponentが重い。○1度ゲットしとくと後は使い放題。【実用例】オセロ盤で作ったGUIに対してひっくり返るたびにひっくり返るメソッドを実行したい場合SendMessage("TargetMethod")※対象GameObjectを参照する必要がある。×引数が一つしか送れない×戻り値とれない×弱い型付けなので遅い△インテリセンスの補完が効かない。○C#・JavaScript間みたいな、言語が違うデータのやりとりができる。○GetComponent<T>()にくらべてなんぼか早い。○オブジェクトに直接送れるので、ちょっと見やすい【用法】1度だけ別コンポーネントに命令を送りたいときに。【実用例】敵にダメージを与えた時(単発)BroadcastMessage("TargetMethod")※注意:BroadcastするクラスにTargetMethodっていう名前のメソッドがあるとそれも実行される。無限ループに陥りやすいので、注意して運用する※子に属するクラスじゃないとだめ。親だとSendMessageUpwards×さらに遅い○オブジェクト参照しなくていいのが楽。○全体に同じイベントを発生させるのにとても楽。【用法】イベントみたいにして使うのがいいんじゃないですかね。画面全体に影響するイベントを起こすときとか。アイテムは倒れる、とか。あと、複数パーツから成り立つモデルとかに、各部分に微妙に違ったアクションとらせたいときとか。ロボットっぽいモデルに排気イベント作って、それ用のアニメを各部で同時にとらせる、とかね。ロボットだと、パーツ付け替えするために別モデル使うとかよく有りそうだし。感じで静的メソッドを使用する。×使用する変数がすべてstaticじゃないとコンパイル通らない。