数据配置系统ConfigManager

背景

  游戏内的数据可以有多种方式进行修改读取保存。如果写在代码中或者unity中,虽然方便程序开发,但是对于真正的数据设计者——策划,似乎不是太友好,为了修改数据要下载unity、配置环境、学习代码等等,而这一切只为了能进行数据修改和配置。
  为了使策划和程序进行分离,更专注于自身工作任务,数据配置系统就显得尤为重要。框架通过引入代码哲学组织的Luban的数据配置方案来满足项目的策划分离需求。
  Luban配表部分详见:Luban数据配表方案

使用

Luban方案的数据项结构

luban方案导出的数据分为以下三个部分:所有表单列表tables、具体表单、表单内每项数据。
结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 所有表单列表
class tables
{
// 具体表单
public CfgBGM CfgBGM {get; }
// ……其他表单
}

// class 表单名
class CfgBGM
{
// 数据项列表
private List<RowCfgBgm> _dataList
}

调用具体表单的具体数据项

以读取Global.xlsx的MillisecondPerUnit为例
数据项:

程序中调用:

1
2
// var 变量名(已声明为具体类型) = ConfigManager.Tables.具体表单名["数据项id"].Value
var a = ConfigManager.Tables.CfgGlobal["MillisecondPerUnit"].Value

获取表单所有数据项

  以音效系统SFXManager为所有音效AudioSource配置输出混响器的举例,简单描述需求为,一个音效对应一个AudioSource,AudioSource的混响器设置为音效数据项的SFXType,对应的混响器,从混响器字典中[SFXType]拿到。

数据格式:

SFX.xlsx:

tables.xlsx:

程序调用:

1
2
// 表单的所有数据项列表:ConfigManager.Tables.具体表单.DataList
ConfigManager.Tables.CfgSFX.DataList
1
2
3
4
5
6
// 遍历所有数据项,来设置所有音效数据项的混响器
foreach (var rowCfgSfx in ConfigManager.Tables.CfgSFX.DataList)
{
// 数据项的音效类型SFXType
audioSource.输出混响器 = 混响器字典[rowCfgSfx.SFXType];
}