背景
很多项目都需要对数据表进行调用、数据管理和解析等操作,所以就需要一个模板来减少造轮子的过程。以下即为参考之前做过的一些项目整理出来的针对于小项目,易于实现且扩展性比较强的数据表管理的简易模板的实现思路。
思路概述
首先我们可以通过数据表的路径来加载数据表并将他们统一存储,因此可以把他们封装成一个类(这里叫它TabPath)。然后对TabPath中的数据表进行数据解析便可获取到每个TabPath中数据表的数据。把数据存入一个个列表。这样的话我们写一个管理类来对这些列表统一进行管理即可。
具体实现代码及其思路梳理
该模板以json格式的数据表为例,当需要其他格式时替换对应的加载和解析方法即可,主要是探究数据表的管理框架。
确定数据表存放路径
示例中的存放路径为:“Assets/StreamingAssets/Tables/…”
建立数据表管理类
定义一个静态变量tabPath来存储数据存放路径。为保证所使用数据的唯一性这里用单例模式来建立数据表管理类TableManager。
1 |
|
加载json数据
我们需要通过路径来获取相应的资源,所以将两者封装成一个TabPath类,在类的构造方法中可以先将路径传进去
1 |
|
这样的话,当需要加载某一个json数据,只需要根据传进去的路径实例化一个TabPath类
1 |
|
然后写一个以下加载数据表的方法,在方法中分割json数据为单个信息,生成列表存入该实例 t。
1 |
|
有时可能不需要返回一个列表,这时可以对该方法进行调整,示例如下。这时返回内容为单个类。后续对列表的处理可以对该单个类进行相应处理
1 |
|
json解析
实例化后的类里面的数据依然还是字符串的形式,无法直接的获取数据,所以还需要将他们转成类的形式。对于json中的每条信息,我们可以根据json格式建立数据实体类,如:
1 |
|
对应json中的一条信息为
1 |
|
这样便可以通过UnityEngine提供的接口JsonUtility将json数据转为类实例。自定义一个UI工具类UIComTool,并写入json转类的泛型方法
1 |
|
数据初始化
为了保存解析到的数据定义对应类型数量的列表,
1 |
|
当有多个数据类型时可以建立一个枚举类型
1 |
|
这样在TableManager中写入以下初始化方法,将列表里面的数据存入上面定义的列表中
1 |
|
数据初始化调用示例
在需要加载表格数据表时只需要使用TableManager的单例调用该方法即可,调用示例如下:
1 |
|
当只有一个数据类型时,可以不使用枚举类型,初始化时也可以不使用dataType的参数。
数据获取的相关方法
初始化后的列表中已经保存了表格中的数据,为方便对数据的存取,可以根据项目需求编写获取列表数据的相关方法,示例如下:
1 |
|
数据调用示例
在需要调用数据时只需要通过TableManager的单例调用其中的方法即可
1 |
|