一般文字放在Excel表里一般都会以Key-Value形式存放,就比如,Key为”RoleName”,Value为”角色名字”,或者Key为1101,Value为”好友分享”等。
这种Key-Value形式,一般会以Int-String形式存在,或者string-string形式存在。
整数形式
string content = GetTextString(12)
缺点:看起来不是很美观;维护性太差,校验检查难度太大,效率太低。
字符串形式
string content = GetTextString(“FightWin”)
缺点: 可能需要用很长的字符串去获取另一个很长的内容,内存占用增加,GC垃圾回收的消耗也会同时增加。
解决:生成一个类,用变量的形式去记录文字的ID,在文字表生成数据表,同时生成数据定义类,使用变量去代表数字。
Class TextKey
{BattleSceneFightAllianceWin = 1;BattleSceneFightAllianceLose = 2;
}
string content = GetTextString(TextKey.BattleSceneFightAllianceWin)
多语言部分怎么处理?
简单的处理方式
就是做多个表,每个表一个语言。
问题:每次增加删除都要一一对应,否则一个语言没有改就会报错,调试起来非常麻烦。
合并数据表
把一个表里的一个Key对应多个语言的文字内容写在一个表里面。
键值 中文 英文 日文 韩文
Win 赢了 Win 勝った 이기다
策划设计人员和运营人员只要关心文字语言表里内容和键值是否正确就可以了,其他都可以完全交给程序员处理了。
关于分散读取,和集中读取,以及预读取部分
集中读取,游戏在加载数据表就需要一次集中使用CPU去处理,导致游戏有时会卡顿现象,不合理。我们需要让游戏表现的尽可能的顺畅。
分散读取比较可取,各个表数据都自己管自己读取吧,这样就CPU就分散开来了,不会一下子对CPU的需求量很大。而且在读取数据表时,要按需读取,而不是一开始就初始化,这样的话跟集中在一起就没有区别了。
预读取,其实和提前集中读取没有区别,关键是如何利用空挡时间进行预读取。比如在Loading等待时读取一部分数据,这样在等待时也不会浪费CPU。