C# 如何在unity中更新UI滑块
我正在unity中构建一个自上而下的射击游戏,在游戏中,玩家的生命值由UI滑块表示。在场景之间移动时,我使用给定的向下代码保存玩家的生命值,我面临的问题是,当玩家在下一个关卡中生成时,UI滑块将移动到0而不是保存的值,直到对玩家造成一定的健康伤害,然后将其设置为保存的值 保存玩家生命值C# 如何在unity中更新UI滑块,c#,unity3d,C#,Unity3d,我正在unity中构建一个自上而下的射击游戏,在游戏中,玩家的生命值由UI滑块表示。在场景之间移动时,我使用给定的向下代码保存玩家的生命值,我面临的问题是,当玩家在下一个关卡中生成时,UI滑块将移动到0而不是保存的值,直到对玩家造成一定的健康伤害,然后将其设置为保存的值 保存玩家生命值 public void yesTeleport(string levelname) { healthNumber = healthSlider.value; SceneManager
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");
}
代码中有两个问题: 1。使用
SetFloat
保存,并使用GetInt
加载。您应该使用SetFloat
和GetFloat
进行保存和加载
2。在保存healthNumber
值之前,您正在加载新场景。应该是相反的。SceneManager.LoadScene(levelname)代码>代码应放在PlayerPrefs.SetFloat(“HealthValue”,healthNumber)之后
和PlayerPrefs.Save()代码>
您的代码应该如下所示:
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");
}
还要确保从Unity的回调函数中调用yesTeleport
函数,该函数在卸载场景时被调用。其中之一是禁用的函数
void OnDisable()
{
yesTeleport (...);
}
请将yesTeleport
函数重命名为真正有意义的函数。也许该函数应该命名为“saveAndReload”