たまに「スクリプト名は違うけどメソッド名が一緒+1つの変数で扱いたい」というときがあります。
そんなときに使えるテクニックを本記事で紹介していきます。
また、ここでは「他のオブジェクトにアタッチされたスクリプトをゲームオブジェクトとして取得し、そのスクリプト内にあるメソッドを呼び出す」という内容でやっていきます。
ゲームオブジェクトにしたスクリプトから処理を呼び出す方法
今回は下のようなオブジェクトとスクリプトを用意しています。
・オブジェクト『TargetObject』
⇒スクリプト『TargetScript』をアタッチ
・オブジェクト『TestObject』
⇒スクリプト『TestScript』をアタッチ
ここではTargetObjectにアタッチしたTargetScript内にある『TargetMethod()』を呼び出すという流れになります。
ゲームオブジェクトにしたスクリプトから処理を呼び出す
下が呼び出す対象のスクリプト内容となります。
1 2 3 4 5 6 7 8 9 |
using UnityEngine; public class TargetScript : MonoBehaviour { public void TargetMethod() { Debug.Log("メソッド呼び出し成功!!"); } } |
そして、下がゲームオブジェクトのスクリプトから処理を呼び出すスクリプトになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using UnityEngine; public class TestScript : MonoBehaviour { void Update() { GameObject objTarget = GameObject.Find("TargetObject"); GameObject objTargetScript = objTarget.GetComponent<TargetScript>().gameObject; // TargetMethodの呼び出し objTargetScript.SendMessage("TargetMethod"); } } |
GameObjectには『SendMessageメソッド』が用意されています。
このメソッドを使うことでゲームオブジェクトにしたスクリプトからでも処理を呼び出すことができるようになっているのです。
これで実行すれば、コンソール上には「メソッド呼び出し成功!!」という文字列が表示されます。
スポンサーリンク