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

「他のスクリプトのpublic変数にアクセスする」の編集履歴(バックアップ)一覧に戻る

他のスクリプトのpublic変数にアクセスする - (2015/04/27 (月) 17:15:42) のソース

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は、インスタンス毎に区別される


参考
http://ufcpp.net/study/csharp/oo_static.html