Nanashi-soft○プログラマ専用○Unityでゲーム開発○
◇Unityでゲーム開発 -JavaScript:ファイル間の連携-
○スクリプトを別ファイルに分ける方法
ProjectにJavascriptファイルを追加するだけです(^^;
メニューのAssets→Create→Javascriptをクリックすると,ProjectにNewBehaviourScriptとかいうファイル名で追加
されます
NewBehaviourScriptをクリックすると,名前を変える事ができます
ちなみに,フォルダ階層は関係しないので,どこに作っても良いです。同一のファイル名は使えない仕様ですから(同じファイル名が2つあると警告が出ます)
test_Aとtest_Bファイルを作成したとします
○他のファイルから変数を読み書きする方法
頭に staticを付けて宣言します
例)test_Aに以下の宣言をする
static var hensu : int = 100;
※メソッドの外で宣言します
※初期値をココに書けるのは JavaScriptの特徴です
これを別ファイルからアクセスする方法は,ファイル名.変数名です
例)test_Bから test_Aの変数 hensuにアクセスする
function Start(){
test_A.hensu = test_A.hensu + 10;
Debug.Log(test_A.hensu);
}
※補足:スクリプトを実行するには,Hierarchyのオブジェクトに配置する必要があります。例えば,Main Cameraなどにドラッグ&ドロップする
※補足:Debug.Logの出力先はコンソールです。メニューの Window→Consoleね
実行すると,
110
UnityEngine.Debug:Log(Object)
と表示されます
○他のファイルからメソッドを実行する方法
頭に staticを付けたメソッドを記述します
例)test_Aに以下のメソッドを記述する
static function kansu() : void {
hensu = hensu + 10;
}
これを別ファイルから呼び出す方法は,ファイル名.メソッド名()です
例)test_Bから test_Aのメソッド kansu()を呼び出す
function Start(){
test_A.hensu = test_A.hensu + 10;
test_A.kansu();
Debug.Log(test_A.hensu);
}
○両方から同時に書き換える場合の注意点
test_Aと test_Bの両方の Updateメソッドに異なる計算を書いた場合にどうなるのか?
例)test_A
static var hensu : int = 100;
function Update () {
hensu = hensu - 10;
Debug.Log("test_A:" + hensu);
}
例)test_B
function Update () {
test_A.hensu = test_A.hensu + 10;
Debug.Log("test_B:" + test_A.hensu);
}
と書いて実行すると,どう表示されるのか?
今の Unityはマルチメソッドでは無いので,順番に実行されます
どちらが先に実行されるのかは,初期では不定です
その順番を設定する必要があります
メニューの Edit→Project Settings→Script Execution Orderを選択
Inspectorに Mono Managerが表示されます
※この機能は,確か Unity 3.4から実装されました
+ボタンをクリックして,test_Aと test_Bを追加して下さい
Applyボタンをクリックして設定完了
数値の小さい順に処理されます
test_A < test_Bに設定した場合
test_A:90
test_B:100
test_B < test_Aに設定した場合
test_B:110
test_A:100
○TOP○プログラマ専用○Unityでゲーム開発○