Unity入門:Scriptにアクセスし、値を取得または変更する、関数を使用する。

UnityにおいてScriptにアクセスし、値を取得または変更する方法です。

 

Unityでは他のゲームにアタッチされているScriptの関数を呼び出すとき、

通常SendMessage (“メソッド名”,引数)を使います。

 

SendMessageはメソッドを呼び出す際とても簡単に実装できるため、

よく使われるところをみます。

 

しかしSendMessageには、

1:2つ以上の引数をもつメソッドを呼び出すことができない。

2:引数に0を渡した際エラーが出る。

(これは0は引数なしと判断され、引数が一致しないと判断されるためです。)

3:処理が重い

のようなデメリットがあります。

 

以上のようなことを考えた時、Scriptに直接アクセスし、

値の変更や取得、メソッドの使用をしたほうがいいことがわかります。

 

ではさっそく解説していきたいと思います。

 

今回は例としてゲームオブジェクトTagetObjectにアタッチされている、

TestScliptにアクセスする方法を考えます。

 

コードは以下のようになります。

public class test : MonoBehaviour {

public GameObject TargetObject;

public TestSclipt testsclipt;

void Start () {

testsclipt=TargetObject.GetComponent<TestSclipt> ();

testsclipt.testvalue=代入したい値;

取得し代入したい変数=testsclipt.testvalue;

testsclipt.TestMethod(引数1,引数2)
}

}

 

説明のため日本語で書かれた部分がありますが、

そこは任意の変数や値に直してください。

 

ここで注目したいのはGetComponent<スクリプト名> ()で、

アタッチされたスクリプトを取得することができる点です。

 

これを使い取得したスクリプト.~で変数を呼び出したり、

メソッドを呼び出すことができます。

 

以上のように特に手間をとらずスクリプトを取得することができるので、

SendMessageでなくこちらを使っていきたいですね。

 

以上、UnityにおいてScriptにアクセスし、値を取得または変更する方法でした。

“Unity入門:Scriptにアクセスし、値を取得または変更する、関数を使用する。” への2件の返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です