我是Unity的新手,所以如果您认为这不是足够的代码或一个非常简单的错误,请不要感到烦恼。因此,我有一个按钮,显示“自动重启”。当我单击它时,它应该从false变为true。它不是。这是屏幕截图和代码。谢谢!告诉我是否需要更多代码,但我认为您不需要。
之前:
点击自动重启:false后,它应该已经变为自动重启:true
这是一些代码
using UnityEngine;
using UnityEngine.UI;
public class manageautorestart : MonoBehaviour {
public Text text;
void Start(){
if (PlayerPrefs.HasKey ("autorestart")) {
text.text = "Autorestart: " + PlayerPrefs.GetString ("autorestart");
} else {
PlayerPrefs.SetString ("autorestart", "false");
text.text = "Autorestart: " + PlayerPrefs.GetString ("autorestart");
}
}
public void Change(){
if (PlayerPrefs.GetString ("autorestart") == "false") {
PlayerPrefs.SetString ("autorestart", "true");
}
if (PlayerPrefs.GetString ("autorestart") == "true") {
PlayerPrefs.SetString ("autorestart", "false");
} else {
PlayerPrefs.SetString ("autorestart", "false");
}
PlayerPrefs.Save ();
}
void FixedUpdate(){
PlayerPrefs.Save ();
text.text = "Autorestart: " + PlayerPrefs.GetString ("autorestart");
}
}
答案 0 :(得分:2)
我的第一选择不是使用字符串来存储布尔值。
您可以使用:
public class manageautorestart : MonoBehaviour
{
public Text text;
void Start()
{
SetText();
}
public void Change()
{
bool autorestart = GetAutorestart();
// flip the value
autorestart = !autorestart;
SetAutorestart(autorestart );
SetText();
}
private bool GetAutorestart()
{
// Get stored value, 0 if none
int temp = PlayerPrefs.GetInt("autorestart", 0);
// convert 0/1 to false/true
autorestart = (temp == 1) ? true : false;
return autorestart;
}
private void SetAutorestart(bool value)
{
// store it as int
PlayerPrefs.SetInt("autorestart", value ? 1 : 0);
}
private void SetText()
{
text.text = "Autorestart: " + GetAutorestart();
}
}
您现在有了三种不同的方法来设置/获取值并将其放置在文本中。 Change方法同时使用了这三个方法。