他のオブジェクトにあるスクリプトの変数を取得する方法について、3パターン試してみましょう。
Cubeをクリックすれば、Sphereの中にあるStringe型の変数を、コンソールに表示させる仕組みを作ります。
CubeとSphereを用意します。
CubeScript.csとSphereScript.csを作成し、それぞれのオブジェクトに追加しています。
関連記事:
他のマテリアルを変数として取得する
他のオブジェクトの回転を変数として取得
他のスクリプトの関数を実行する
他のスクリプトのBoolを取得する
他のオブジェクトの配列を取得する
Prefabからヒエラルキーのオブジェクトを取得
①instanceを使う方法
Sphere側(アクセスされる側)のスクリプト
SphereScript.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereScript : MonoBehaviour { public static SphereScript instance; public string sentence; public void Awake() { if(instance == null) { instance = this; } } void Start() { sentence = "これはボールです"; } } |
Cube側(アクセスする側)のスクリプト
CubeScript.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeScript : MonoBehaviour { void OnMouseDown() { Debug.Log(SphereScript.instance.sentence); } } |
ゲームプレイして、Cubeをクリックしてみましょう。
②Findで参照する方法
Sphere側(アクセスされる側)のスクリプト
SphereScript.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereScript : MonoBehaviour { public string sentence; void Start() { sentence = "これはボールです"; } } |
Cube側(アクセスする側)のスクリプト
CubeScript.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeScript : MonoBehaviour { private GameObject sphereObject; SphereScript sphereScript; void OnMouseDown() { sphereObject = GameObject.Find("Sphere"); sphereScript = sphereObject.GetComponent<SphereScript>(); Debug.Log(sphereScript.sentence); } } |
ゲームプレイして、Cubeをクリックしてみましょう。
③直接フィールドに入れて参照する方法
Sphere側(アクセスされる側)のスクリプト
SphereScript.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereScript : MonoBehaviour { public string sentence; void Start() { sentence = "これはボールです"; } } |
Cube側(アクセスする側)のスクリプト
CubeScript.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeScript : MonoBehaviour { public SphereScript sphereScript; void OnMouseDown() { Debug.Log(sphereScript.sentence); } } |
SphereScriptのフィールドに、Sphereを入れます。
ゲームプレイして、Cubeをクリックしてみましょう。
以上、、instanceを使う、Findで参照する、直接フィールドに入れるといった方法で、他のオブジェクトにあるスクリプトの変数を取得してみました。
他のスクリプトの変数取得は、いろいろな制作で活用することができます。
関連記事:
他のマテリアルを変数として取得する
他のオブジェクトの回転を変数として取得
他のスクリプトの関数を実行する
他のスクリプトのBoolを取得する
他のオブジェクトの配列を取得する
Prefabからヒエラルキーのオブジェクトを取得