剛接觸Unity設計遊戲的人,一定會有個問題,那就是「我怎麼讓第一關的分數/生命值等等的遊戲參數,在第二關時能夠繼承/延續/存取?」。其實很簡單,那就是需要把這些參數設定為全域變數(static)。另外,由於這些參數每一關都用的到,或許可以直接使用一個腳本來控制所有的全域變數。例如:
管理這些參數的腳本命名為:GameDataManager,腳本內容如下:
另外一支用來存取的腳本命名為:TestManager,腳本內容如下:
執行結果:
當按下空白鍵時,TestManager會把載入的全域參數計算好後,存回GameDataManager。
範例檔下載:StaticVarTest(Unity 5.6.0f3)
管理這些參數的腳本命名為:GameDataManager,腳本內容如下:
static class GameData{
public static bool gameover = false;
public static int Coins = 1;
public static float Num = 0.2f;
}
另外一支用來存取的腳本命名為:TestManager,腳本內容如下:
public class TestManager : MonoBehaviour {
private bool gameover;
private int Coins;
private float Num;
void Start () {
//載入外部全域參數
gameover = GameData.gameover;
Coins = GameData.Coins;
Num = GameData.Num;
}
void Update () {
if (Input.GetKeyDown(KeyCode.Space)) {
gameover = true;
Coins += 1;
Num += 0.1f;
//將運算好的參數存回全域參數
GameData.gameover = gameover;
GameData.Coins = Coins;
GameData.Num = Num;
//偵測是否有存回
Debug.Log ("GameManager.gameover="+GameData.gameover);
Debug.Log ("GameManager.Coins="+GameData.Coins);
Debug.Log ("GameManager.Num="+GameData.Num);
}
}
}
執行結果:
當按下空白鍵時,TestManager會把載入的全域參數計算好後,存回GameDataManager。
範例檔下載:StaticVarTest(Unity 5.6.0f3)
