You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity Player Prefs打包移动端后currentAmount变量无法更新

解决Unity移动端PlayerPrefs int变量固定值问题
  • 排查默认值与键名冲突
    先检查加载currentAmount的代码是不是写死了默认值350,比如currentAmount = PlayerPrefs.GetInt("CurrentAmount", 350);。编辑器里可能之前运行时已经存过有效值,所以不会触发默认值,但移动端首次安装或清除数据后,就会直接用这个默认值。另外还要确认有没有其他脚本用同一个键名修改值,移动端的脚本执行顺序可能和编辑器不同,导致其他逻辑提前把值设成了350。

  • 确保PlayerPrefs即时保存
    编辑器下Unity会自动处理PlayerPrefs的保存,但移动端不会。每次修改currentAmount后,必须立刻调用PlayerPrefs.Save();,不然进程意外退出(比如切后台、强制关闭)时,修改的值不会被持久化,下次启动还是读旧值或默认值。别把Save放在OnDestroy()里,移动端这个方法不一定会被执行。

  • 验证单例初始化逻辑
    检查单例的Awake/Start方法中,加载PlayerPrefs的时机是否正确。如果有其他脚本在单例初始化前就修改了currentAmount,之后单例再加载PlayerPrefs的默认值,就会覆盖成350。另外确认单例没有被重复创建,即使加了DontDestroyOnLoad,场景里如果有多个实例,也可能导致初始化逻辑重复执行,重置值。

  • 移动端存储权限与同步问题
    安卓设备上,检查应用是否有存储权限,没有的话PlayerPrefs可能无法写入,导致每次启动都读不到保存的值,只能用默认350。可以加日志打印PlayerPrefs.HasKey("CurrentAmount"),看移动端是否真的存在这个键。iOS设备要检查是否开启了iCloud同步,若同步了旧的键值数据,也会导致值被固定。

内容的提问来源于stack exchange,提问作者Shem Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 03:37:02