我如何保存我的游戏货币在unity 3d使用playerprefs



我想为我的游戏创建一个游戏内商店,我想节省玩家偏好的钱,但代码不工作

public float AmountNumber;
public Text AmountText;
void Start() {
AmountText.text = PlayerPrefs.GetFloat("Amount").ToString();
}
// Update is called once per frame
void Update()
{
AmountText.text = AmountNumber.ToString();
PlayerPrefs.SetFloat("Amount", AmountNumber);
}

Start中,您只使用存储值更新显示,因此AmountNumber将保留0,然后在Update中使用0覆盖PlayerPrefs中的值

…而做

void Start() 
{
AmountNumber = PlayerPrefs.GetFloat("Amount");
AmountText.text = AmountNumber.ToString();
}

一般来说,你不应该在Update每一帧中做其余的。而是让你的代码更加事件驱动。

我宁愿让实际值为private,而宁愿有一个属性,例如

private int _amountNumber;
public int AmountNumber
{
get => _amountNumber;
set
{
_amountNumber = value;
AmountText.text = value.ToString();
PlayerPrefs.SetFloat("Amount", value);
}
}
private void Start ()
{
AmountNumber = PlayerPrefs.GetFloat("Amount");
}

这样,无论何时给AmountNumber属性赋值,它都会自动地

  • 更新显示
  • 将值存储在player prefs

而不必每一帧都做。

最新更新