如何使用 playerprefs 在统一 3d 中保存我的游戏货币
Posted
技术标签:
【中文标题】如何使用 playerprefs 在统一 3d 中保存我的游戏货币【英文标题】:How to i save my game currency in unity 3d using playerprefs 【发布时间】:2021-11-29 11:26:10 【问题描述】:我想为我的游戏创建一个游戏内商店,我想通过玩家偏好来省钱,但代码不起作用
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);
【问题讨论】:
它没有任何错误,它在我这边运行,它是最终脚本吗?我假设代码不是完整的代码,例如从 Monobehaviour 的类定义和继承,......它是否正确分配给场景中的 gameobject?but the code isn't working
没有有效的问题描述......你的问题到底是什么?
另外请使用正确的标签!请注意,unityscript
是或更好的是曾经是一种 javascript 风格,类似于早期 Unity 版本中使用的自定义语言,并且现在已经不推荐使用了!你的代码显然是c#
【参考方案1】:
在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
属性赋值时,它也会自动
不必在每一帧都这样做。
【讨论】:
有没有其他办法以上是关于如何使用 playerprefs 在统一 3d 中保存我的游戏货币的主要内容,如果未能解决你的问题,请参考以下文章
Unity3d数据存储 PlayerPrefs,XML,Json数据的存储与解析