您的位置:首页 > 文旅 > 旅游 > 《Unity3D高级编程之进阶主程》第三章 数据表(三) - 多语言的实现

《Unity3D高级编程之进阶主程》第三章 数据表(三) - 多语言的实现

2024/10/5 19:16:54 来源:https://blog.csdn.net/renxi0/article/details/140315375  浏览:    关键词:《Unity3D高级编程之进阶主程》第三章 数据表(三) - 多语言的实现

        一般文字放在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。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com