Nanashi-soft○プログラマ専用○Unityでゲーム開発○
class test_A extends MonoBehaviour {
static public var hensu_a : int;
static public function mesodo() : int {
return hensu_a;
}
}
・test_B.jsファイルclass test_B extends MonoBehaviour {
function Start() {
var work : int;
work = test_A.hensu_a; //変数の値を取得
test_A.hensu_a = work * 2; //変数に値を代入
work = test_A.mesodo(); //メソッド実行
}
}
このようにしますclass test_A extends MonoBehaviour {
static private var hensu_a : int; //他のクラスから直接アクセス不可
//変数読み込みメソッド
static public function getMesodo() : int {
return hensu_a;
}
//変数書き込みメソッド
static public function putMesodo(work:int) {
hensu_a = work;
}
}
・test_B.jsファイルclass test_A extends MonoBehaviour {
function Start() {
var work : int;
// work = test_A.hensu_a; //できません(コンパイルエラー)
// test_A.hensu_a = work * 2; //できません(コンパイルエラー)
work = test_A.getMesodo(); //変数読み込みメソッド呼び出し
test_A.putMesodo(work * 2); //変数書き込みメソッド呼び出し
}
}
このように,private宣言を行うと,他のクラスから直接アクセスできなくなりますclass neko extends MonoBehaviour {
function Start(){
Debug.Log("猫です");
}
}
class inu extends MonoBehaviour {
function Start(){
Debug.Log("犬です");
}
}
これを実行すると,「猫です」とだけ表示されますclass neko extends MonoBehaviour {
function Start(){
Debug.Log("猫です");
inu.Start(); //inuクラスの初期化を呼び出し
}
}
class inu extends MonoBehaviour {
static function Start(){
Debug.Log("犬です");
}
}
inuクラスのStartは,通常のオーバーライド呼び出しではないので,混乱を避ける為に別の名前にした方が好ましいですclass usagi extends MonoBehaviour {
function Start(){
inu.Start(); //inuクラスの初期化を呼び出し
}
}
この usagiクラスを先に実行するようにしても,何の問題も無く処理されます