CodeLab技術ブログ

プログラミング技術まとめ

[Unity]他のオブジェクトのスクリプトを参照したい

Unity上の他のオブジェクトのスクリプトを参照したいときどうするのか?調べてみました。
Unity5.5系 C# での例です。

PlayerController.csからGameControllerオブジェクトのGameController.csを参照する場合を例にします。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

private GameObject go; //オブジェクトを入れておくための場所
GameController goScript; //呼び出し先のスクリプトのクラス

public class PlayerController : MonoBehaviour {
    void Start () {
        go = GameObject.Find("GameController");
        goScript = go.GetComponent();
    }
}

別にStart()メソッドでなくてもよいとは思いますが、こうしておけば毎回探す必要がないので良いでしょう。
これで、オブジェクトのクラスのインスタンス(例ではgoScript)に対してアクセスできるようになります。

こういうやりかたが実装上スマートかどうかは、C#やUnityの初心者の私には疑問ですが、一応これでアクセスはできます。
まぁ、Unity上のコンポーネントとかを呼び出す際も普通に同じような方法でやってるので、これが正しいのでしょう。

ただ、あっちこっちでこれやると管理が面倒そうなので、どこかでまとめてやっておいて、まとめたクラス経由で呼び出したほうがいいのかな?

コメントは受け付けていません。