BandMan home

游戏策划

安卓会把各个语言的文本,生成为独立的文件。

方案:把所有的语言整合到一个excel里进行版本控制。

基本表结构如上,hero表本身是没有文本的,只有key,程序读文本也不会从hero表去读,而是从英雄表拿到key,根据key去本地化表获取文本,再根据语言选择展示的文本。

一般文字放在Excel表里一般都会以Key-Value形式存放,就比如,Key为“RoleName”,Value为“角色名字”,或者Key为1101,Value为“好友分享”等。

数值策划的底层工作就是将上层策划的抽象感性的系统描述具象化、逻辑化,做好上层策划和程序交流的通道(类似于IR),在上层策划的方案前提下,配合或指导程序,制定出数据结构和算法流程,并保证其被实施。同时在策划和程序有需要时,迅速为双方提供各自所不了解部分的内容说明,对策划说程序实现,对程序说策划思想,游戏最基本的数据和具体数据流向等,是必须在数值策划全力参与或主导下完成的。

数学模型其实不可作为中间层的,应该再具象些、逻辑化。

“中间层”概念有时可用在逻辑性的程序员上,“函数”即可将一个集合变换到另一个集合,实现了转换。再往大点就是编译器系统,成为了程序员和机器的“中间层”。

找到属于自己的“中间层”,类似于数学模型作为自然现象和人类的“中间层”

我的方式应该是“数据化”,因为它能让普通人也懂.

简单罗列一下可能的需求如下:

解决方案:

从Excel导出数据,数据导出的格式可以由程序员决定,如json、cs、xml,甚至是二进制文件,然后在游戏中加载的时候直接反序列化,这样引用数据的时候很方便。

流程如下:

  1. 从excel中读取数据
  2. 根据数据类型.动态生成每个表的C#类
  3. 动态编译C#类.然后输出为一个动态库
  4. 实例化C#类,并且把数据填入到实例化的对象中
  5. 序列化数据,保存在Unity中的Resources目录中
  6. 在Unity中引用之前输出的动态库,在游戏运行时加载数据.并且进行反序列化

多语言版本

原理简单说就是:Dll持有一张URL映射表,每个路径都映射到一个字符串key上。代码里只引用这个key通过Dll来获取所有资源。所以当要切换多语言版本时,只要修改这张映射表即可,可让同一个key在不同语言环境下获得不同的资源(自定义的类资源)

Fork me on GitHub