2017-04-01 16 views
0

私はトップダウンシューティングゲームを統一して構築しています。ゲームでは、プレーヤーの健康状態はUIスライダで表されます。シーン間を移動する間に、与えられたコードを使用して、 GetFloatを使用して次のレベルに設定します。私が直面している問題は、プレーヤーが次のレベルに生まれたときに、UIスライダーが保存された値の代わりに0に移動し、保存された値に設定します。UIスライダーを更新する方法

保存プレーヤー健康

public void yesTeleport(string levelname)  
{ 
    healthNumber = healthSlider.value; 
    SceneManager.LoadScene (levelname); 
    PlayerPrefs.SetFloat ("HealthValue", healthNumber); 
    PlayerPrefs.Save(); 
} 

次のレベルに選手の健康を設定

public Slider healthSlider; 

void Start() { 

    Time.timeScale = 1.0f; 
    healthSlider.value = PlayerPrefs.GetInt ("HealthValue"); 
} 

答えて

0

あなたのコード内の二つの問題があります

。あなたが保存しているがSetFloatおよびローディングはGetIntです。保存して読み込むには、SetFloatGetFloatとする必要があります。

healthNumberの値を保存する前に新しいシーンを読み込みます。それは別の方法です。

public void yesTeleport(string levelname)  
{ 
    healthNumber = healthSlider.value; 
    PlayerPrefs.SetFloat ("HealthValue", healthNumber); 
    PlayerPrefs.Save(); 
    SceneManager.LoadScene (levelname); 
} 

public Slider healthSlider; 
void Start() { 

    Time.timeScale = 1.0f; 
    healthSlider.value = PlayerPrefs.GetFloat ("HealthValue"); 
} 

またシーンがアンロードされたときに呼ばれていますユニティのコールバック関数のいずれかからyesTeleport関数を呼び出してください:SceneManager.LoadScene (levelname);コードがPlayerPrefs.SetFloat ("HealthValue", healthNumber);PlayerPrefs.Save();

あなたのコードは次のようになります後に配置する必要があります。そのうちの一つがOnDisable機能です...

void OnDisable() 
{ 
    yesTeleport (...); 
} 

実際に意味をなすものにyesTeleport機能の名前を変更してください。その関数の名前を "saveAndReload"とする必要がありますか?

関連する問題