关于Unity的EditorPrefs遇到的坑

    EditorPrefs和PlayerPrefs都是保存持久层的数据,以键值对的方式存储,都可以保存和获取Int类型、string类型、float类型的数据,其中EditorPrefs中比PlayerPrefs多了一个Bool类型的键值对,即SetBool(string keyName, bool value)和GetBool(string keyName);也可以删除保存的数据,具体的可以看接口API,不再详细描述。

    今天在Unity编辑器环境中,调用了下EditorPrefs.DeleteAll()方法,发现会报异常,其中提示maxGICacheSize >= 5,然后打开Unity时保存的以前打开的项目,全部消失了,如下图:


如果点击OPEN打开以前关闭的项目,项目中的默认场景不再是关闭时保存的场景,而是新建了一个空场景,以前保存的场景并没有删除,如下图:


    有时还设置的其他编译选项也会变动,例如Editor->Preferences...->General选项中的Auto Refresh复选框取消勾选(默认时勾选的),External Tools选项中的设置的Android JDK和SDK路径也清空了……

    所以猜测EditorPrefs中保存了所有编辑器中默认保存的数据,像以前打开的工程、退出时保存的场景、设置的编辑环境等等都保存在EditorPrefs中,估计还会有其他编辑环境的数据,只是没有发现。因此建议不要轻易调用EditorPrefs.DeleteAll()方法,如果EditorPrefs保存了自己定义的键值,可使用EditorPrefs.DeleteKey(string keyName)根据键名来删除数据即可。而PlayerPrefs中的持久层数据是玩家自定义的数据,可以调用PlayerPrefs.DeleteAll()方法。

    以上只是我的个人见解,如果有不妥当的烦请指出。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值