2014年3月7日金曜日

個人的メモ

別のゲームオブジェクト内にあるスクリプトにアクセスし、パブリックな変数を取得変更する方法

取得したいスクリプト名 格納する変数名 =  (取得したいスクリプト名でキャスト)GameObject.Find("格納されてるオブジェクト名").GetComponent<取得したいスクリプト名>();

StatusManagerGUIというステータス管理と画面表示を行うGUIのゲームオブジェクトに格納された鍵の取得状況を、鍵に触れた際に変更する際の例:

StatusManager StMan;

void Start () {
        StMan = 
(StatusManager)GameObject.Find("StatusManagerGUI").GetComponent<StatusManager> ();
}
    
private void OnTriggerEnter(Collider other){
        StMan.Keys.Red = true;
        Destroy(gameObject);
}


初期化でオブジェクト内のスクリプトにアクセスする。
鍵に触れた際(OnTriggerEnter)にアクセスしたStatusManagerGUI内のKey.Redのbool値をtrueにする。
鍵は取得したので削除Destroy(gameObject)する。

StatusManager.csの中身

public class StatusManager : MonoBehaviour {

    public struct Key{
        public bool Red;
        public bool Blue;
        public bool White;
        public bool Green;
        public bool Black;
    }
    public Key Keys = new Key();

    void Start () {
        Keys.Red = false;
        Keys.Blue = false;
        Keys.White = false;
        Keys.Green = false;
        Keys.Black = false;

    }
    
    void Update () {
        if (Keys.Red){
            this.guiText.text = "true";
        } else {
            this.guiText.text = "false";
        }
    }
}

取得したときわかりやすいようにguiTextで表示する。

0 件のコメント:

コメントを投稿

人気の投稿