本篇文章,如果有不懂,欢迎留言~click here!
模块介绍
以键值对的形式存储玩家数据,对UnityEngine.PlayerPrefs进行封装,也可以保存将数据直接存储在磁盘上。PlayerPrefs在运行时无法直接获取到所有键值,因此E大提供了该模块来代替PlayerPrefs。
关于如何在Editor下获取所有键值对,参考这篇文章:Unity编辑器拓展之三十一:获取PlayerPrefs所有键值对
常规接口使用
使用GameEntry.GetComponent
对比PlayerPrefs类的接口来看,Setting组件也提供了GetInt、SetInt、GetBool、SetBool、GetString、SetString、GetFloat、SetFloat等接口。除此之外,Setting组件还做了些拓展。
1、GetAllSettingNames获取获取所有游戏配置项的名称
2、HasSetting检查是否存在游戏配置项,同PlayerPrefs.HasKey
3、RemoveSetting移出指定游戏配置项,同PlayerPrefs.DeleteKey
4、RemoveAllSettings清空所有游戏配置项,同PlayerPrefs.DeleteAll(慎用)
5、GetObject读取对象,这是一个泛型接口。
跟进到SettingManager里面可以看到是调用了SettingHelper里的GetObject函数,继续进去看。SettingHelperBase类实现了ISettingHelper接口,而UGF里提供了两个SettingHelper,DefaultSettingHelper和PlayerPrefsSettingHelper,而这两个SettingHelper里都是通过Utility.Json.ToObject进行对象的读取的。
6、SetObject写入对象,同上GetObject
实践
1、为项目选择SettingHelper
这里不建议使用PlayerPrefsSettingHelper了,因为它是基于PlayerPrefs进行的二次封装,所以依然是不支持运行时获取所有键值的。
当然,可以自己编写一个Helper,继承SettingHelperBase,比如你的游戏数据需要自行做加密解密🤔🤔🤔
2、运行StarForce案例后,Setting的Inspector面板如下:
面板上能看到所有键值对,以及一个保存和删除所有数据的按钮。目前尚未支持在非运行时就可以预览Setting里的所有数据,要支持也不难,在非运行时将存放数据的文件加载出来显示在Inspector面板上即可。
本系列GameFramework框架源码介绍会持续更新,也作为自己的学习笔记。如有不详细之处,欢迎沟通。
以上知识分享,如有错误,欢迎指出,共同学习,共同进步。如果有不懂,欢迎留言评论!