あるシーンから別のシーンにスコア値を渡すにはどうすればよいですか?
私は次を試しました:
シーン1:
void Start () {
score = 0;
updateScoreView ();
StartCoroutine (DelayLoadlevel(20));
}
public void updateScoreView(){
score_text.text = "The Score: "+ score;
}
public void AddNewScore(int NewscoreValue){
score = score + NewscoreValue;
updateScoreView ();
}
IEnumerator DelayLoadlevel(float seconds){
yield return new WaitForSeconds(10);
secondsLeft = seconds;
loadingStart = true;
do {
yield return new WaitForSeconds(1);
} while(--secondsLeft >0);
// here I should store my last score before move to level two
PlayerPrefs.SetInt ("player_score", score);
Application.LoadLevel (2);
}
シーン2:
public Text score_text;
private int old_score;
// Use this for initialization
void Start () {
old_score = PlayerPrefs.GetInt ("player_score");
score_text.text = "new score" + old_score.ToString ();
}
しかし、画面には何も表示されず、エラーもありません。
これはデータを渡す正しい方法ですか?
Unity 5無料版を使用して、Gear VR用のゲームを開発しています(ゲームはAndroidデバイス)で実行されます)。
なにか提案を?
PlayerPrefsに加えて、別の汚い方法は、レベルのロード中にDontDestroyOnLoadを呼び出してオブジェクトを保持することです。
DontDestroyOnLoad (transform.gameObject);
ゲームオブジェクトにアタッチされたスクリプトはすべて存続し、スクリプト内の変数も存続します。 DontDestroyOnLoad関数は、通常、GameObject全体を保持するために使用されます。これには、それに接続されたコンポーネント、および階層内にある子オブジェクトが含まれます。
空のGameObjectを作成し、保存したい変数を含むスクリプトのみを配置できます。