GameFramework框架源码解读Setting组件,欢迎访问😂

本篇文章,如果有不懂,欢迎留言~click here!

模块介绍

以键值对的形式存储玩家数据,对UnityEngine.PlayerPrefs进行封装,也可以保存将数据直接存储在磁盘上。PlayerPrefs在运行时无法直接获取到所有键值,因此E大提供了该模块来代替PlayerPrefs。
关于如何在Editor下获取所有键值对,参考这篇文章:Unity编辑器拓展之三十一:获取PlayerPrefs所有键值对

常规接口使用

使用GameEntry.GetComponent()获取Setting组件。

对比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框架源码介绍会持续更新,也作为自己的学习笔记。如有不详细之处,欢迎沟通。

以上知识分享,如有错误,欢迎指出,共同学习,共同进步。如果有不懂,欢迎留言评论!