我想为我的游戏创建一个游戏内商店,我想节省玩家偏好的钱,但代码不工作
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
而不必每一帧都做。