他のスクリプトのpublic変数にアクセスする

InitというObjectにAddComponentで"Init"という名前のscriptを追加している
public class Init : MonoBehaviour {
 public int[,] map = new int[25,25];
}
別のObjectのスクリプトコンポーネント内から
Init init;
init = GameObject.Find("Init").GetComponent<Init>();
if( init.map[i,j]==1 )
 score[i,j]=99;

public class Test : MonoBehaviour {
  public static int no;
}

staticが付くとclassのメンバ変数になる

staticをつけると、別のクラスからのアクセスは、
Test.no=20;
とGetComponent抜きでアクセスできる
static変数は、インスタンスではなく、classに属するので、
Testのメンバ変数としてアクセスする
逆にいえばclass Testとして生成されたインスタンスは、
共通したメンバ変数noを継承する。

static無いと、インスタンスのメンバ変数になる

一方、
public class Test : MonoBehaviour {
  public int no;
}
では、
staticがないので、クラスではなくインスタンスのメンバ変数になる。
別のクラスからのアクセスは、
obj.GetComponent<Test>().no=20;
となる
メンバ変数noは、インスタンス毎に区別される


タグ:

unity
最終更新:2015年04月27日 17:15