本文是关于个人对该文章阅读后总结的读书笔记以及要点总结。
作者及书记地址:http://www.luzexi.com/tag/Unity3D
数据表种类
● 代码数据:无策划人员,增加了修改程序的风险,除了速度快没有其他优势。
● 文本数据:字符串类型的文本,例如Json, Xml, Csv数据,通常通过Excel自动化导出,最常用的数据表种类。
● 比特流数据:二进制文件、占用空间小速度快,网络性能高;通用性差,无法直观和任意修改。
○ Google protobuf
数据表是连接美术、设计策划、程序的桥梁,数据表可以认为是一个本地的数据库,只读不可修改。
数据表的制作方式
- Excel手动另存为CSV:逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号)。拥有CSV规范以后可以避免赋值粘贴错误,但是重复工作多。
- 自动化程序:通过Shell或Bat射击自动化流程操作。通过一些语言比如Python,C#,Java等读取Excel文件,再将数据以自己希望的格式输出到文件中。
- Jenkins工具:强化自动化流程,打包、转表、上传等。本质上只是多了一个可视化web页面。
数据表的核心是让数据使用起来更加方便,连接策划与其他部门,使用什么格式的数据并不是那么重要。
- 避免策划增删改的时候需要通知程序修改。
- 约定并严格执行表的设计规则,比如字段名与程序对应。
- 允许策划自定义一些内容,比如转移到哪个文件夹等。
- 自动化过程中对数据的检查与校验。
多语言的实现
- 通常文字会以int-string形式存放。
- 避免直接用整数作为key获取字符串,维护性太差,难以检查,效率低。
- string content = GetTextString(12)
- 避免直接使用字符串作为key获取字符串,冗余操作,GC增加,双份内存。
- string content = GetTextString(“FightWin”)
我们希望既要用简洁的数字去代表文字,又要绕过键值看起来形象。策略是使用一个类,用变量形式去记录文字的ID。
#字符串类
Class TextKey
{
public const BattleSceneFightAllianceWin = 1;
public const BattleSceneFightAllianceLose = 2;
}
...
#获取
string content = GetTextString(TextKey.BattleSceneFightAllianceWin)
多语言则用列来区分每种语言,策划和运营人员只要关心文字语言表里的键值是否正确就可以了,其他都交给程序。
键值 中文 英文 日文 韩文
Win 赢了 Win 勝った 이기다
string content = GetTextString(”win”,Language.Chinese)
读表
最后关于读表的方式。为了避免CPU占用,尽量分散读取,按需读取,而不是一开始就初始化,善于利用等待时机预读取数据表。