Unity游戏配置表格代码自动生成术.docx

上传人:b****3 文档编号:4955216 上传时间:2023-05-07 格式:DOCX 页数:10 大小:176.11KB
下载 相关 举报
Unity游戏配置表格代码自动生成术.docx_第1页
第1页 / 共10页
Unity游戏配置表格代码自动生成术.docx_第2页
第2页 / 共10页
Unity游戏配置表格代码自动生成术.docx_第3页
第3页 / 共10页
Unity游戏配置表格代码自动生成术.docx_第4页
第4页 / 共10页
Unity游戏配置表格代码自动生成术.docx_第5页
第5页 / 共10页
Unity游戏配置表格代码自动生成术.docx_第6页
第6页 / 共10页
Unity游戏配置表格代码自动生成术.docx_第7页
第7页 / 共10页
Unity游戏配置表格代码自动生成术.docx_第8页
第8页 / 共10页
Unity游戏配置表格代码自动生成术.docx_第9页
第9页 / 共10页
Unity游戏配置表格代码自动生成术.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Unity游戏配置表格代码自动生成术.docx

《Unity游戏配置表格代码自动生成术.docx》由会员分享,可在线阅读,更多相关《Unity游戏配置表格代码自动生成术.docx(10页珍藏版)》请在冰点文库上搜索。

Unity游戏配置表格代码自动生成术.docx

Unity游戏配置表格代码自动生成术

游戏配置表格代码自动生成术

说起游戏配置表,不论是游戏程序还是游戏策划,都是每天都在打交道的、最普通不过的东西。

相信不少游戏程序员,撸过大量这样的代码:

[] 纯文本查看 复制代码

?

 

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

{

    ;

    ;

    ;

    1;

    2;

    3;

    .....

    .....

}

 

{

    .....

    ()

    {

        =("")

        (=0;<=;)

        {

            =(,"");

            =(,"");

            =(,"");

            1=(,"1");

            2=(,"2");

            3=(,"3");

            ......

        }

    }

}

....

.....

......

{....}

{....}

{....}

 

....接近上百个

 

相信不少游戏策划,都遇到过这样的配置表:

好吧。

大家都或多或少遇过这些问题:

∙大量的配置表代码需要手工撸,枯燥繁杂

∙大量的手工配置表代码跟随着大量的

∙策划配置表跟程序代码经常命名不一

∙策划新人看不懂配置表的这一列究竟是干嘛的

∙策划同学想要更方便的工具提升工作体验

∙配置表加载严重影响游戏启动速度

∙运营需求对游戏配置表修改热重载,手工代码没有支持

∙配置表相关联的功能和消磨大量的研发、运营时间

嗯,多么痛的领悟。

接下来抛砖引玉,让我们一起探讨一种游戏配置表的优化方案。

需求

编辑游戏配置表的用户首要就是我们的策划同学了,而策划同学最喜欢最顺手的工具非(或表格)莫属了。

当然了,也见过自己开发编辑器工具的,但我们毕竟不是全职做工具开发,没必要额外的增大工作量。

因此我们可以在表格设计上,动动手脚。

策划同学有这样的需求:

∙配置表的列头带上注释

∙策划同学可以在任意他们喜欢的地方做注释

∙策划同学可以在他们的配置表中的添加文档性东西如图表、文字框

∙有时候同样的表,可以拆分成多张,方便编辑

拿到这样的一份配置表后,程序同学有这样的需求:

∙希望配置表的代码是可以自动生成的

∙部分复杂逻辑的可以自定义扩展的

∙为配置表的列定义类型

方案编辑

针对这些需求,我们就有了这样的这个结果:

 

 

∙第一行是列名

∙第二行是程序用途的类型声明,如,<,>

∙第三行是该列的注释

∙列名以#开头,则这一列为注释列(忽略该列单元格内容忽略)

∙行的第一个单元格内容以#开头,则这一行为注释行(所有行单元格内容忽略)

∙可以加入图表、第二张工作表作为辅助内容

将这样的一张表,保存为文件。

下面我们使用一个名为的执行程序,可以从··下载测试,并包含源码和单元测试。

在目录下执行这个配置表编译命令,会把所有的文件,编译成分隔的表格纯文本(),并生成一个代码文件。

编译后的文件纯文本内容,实质就是剥离了注释的表格。

表编译结果:

 

同时命令生成代码:

[] 纯文本查看 复制代码

?

 

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<>

:

""

<>

:

{

        <>

        编号/主键

        <>

        {;;}

 

        <>

        名字

        <>

        I18N{;;}

 

        .............

}

{

     ()

     {

          ...

     }

}

 

至此,程序同学,把策划同学的游戏配置表编译优化成纯文本格式,生成的文件也导入工程,使用来获取所有的配置表内容了。

多语言

标注列的类型为I18N

既然表的第二行支持类型说明,那自然而然,我们可以标记某一列是可以需要进行翻译的。

比如,把这一列标记成I18N,我们通过脚本,把所有带有I18N列中的字符串进行收集,自动生成一个翻译表;而生成的代码中对应I18N这个类,则对翻译表进行处理,来实现字符串的多语言翻译。

细节不多叙述。

而在游戏做多语言版本的过程中,光字符串翻译是不够的,我们有些时候,不同的版本还有不同的游戏数值。

鉴于我们的表编译机制,我们可以加入一些类似预编译指令的机制来处理:

 

拆表

在很多时候,策划同学喜欢将一个表的东西,分成多个文件来写。

比如有游戏的道具比较多,一般会分成,,等多张表格,尽管他们是不同的文件,但是它们的列头都是一样的,这样让编辑起来更加的容易,而且多人编辑时,不容易做成冲突。

在程序代码中,它们也会被一个统一的类读取成统一的配置类型。

我们可以应用之前的“#”符号,来对他们的文件名修改一下:

,,,这样,来骗过编译程序,再执行刚才的编译命令:

这样就会让代码生成器,忽略#号后面的字符串,把它们统一合并成类。

[] 纯文本查看 复制代码

?

 

1

2

3

4

5

6

7

{

    把三个表一起进行加载

    []={

       "","",""

   };

   ...

}

 

至于还有一些细节功能的,如自定义类型、自定义解析、自定义代码模板(让、都支持)等扩展代码能力的功能,这里不多作解释。

具体的细节可以参考命令的源码中的单元测试:

:

这是一个提供给游戏开发的开源配置表代码生成工具,

一些逻辑细节和教程也可以参考这里的文章。

常见问题

在尝试应用的过程中,曾经遇到过不少疑问:

考虑其它格式让策划同学编辑?

如、?

考虑到策划同学和其他同学的使用体验和习惯,表格是他们最顺手、功能强大的工具。

既然编译,为什么不直接编译成序列化的字节?

选择编译成纯文本格式,更多出于工程考虑的,一考虑文本格式能对版本管理(如)更友好,二考虑开发调试也更容易。

性能方面,在我经历的项目上,对这种分隔的表格文本解析,比序列化还要快。

我更喜欢自己撸,没必要代码自动生成?

从程序习惯的角度来说,这种想法无可厚非,毕竟多年的开发习惯如此,而且自由度更高,写起这些代码来自然是舒畅的。

但是从工业角度来想,人工写出的代码维护成本,比自动生成代码维护成本要高。

并且,为自动生成的代码添加功能(比如,运行时动态重载),只需要在生成代码的代码中稍微修改,就全局生效。

文件怎么进行版本比较?

在我看来这是一个非常关键的问题。

这也是为什么表被编译成纯文本的一个重要原因。

另外除了表,命令中还支持翻译到,就是直接把文件另存为格式的配置表文件,再进行编译。

另外,4支持文件的直接比较;中双击文件,也会打开文件显示差异的地方(但较蹩脚)。

我项目的配置表都是自动生成的,程序策划没意见、也挺智能的?

恭喜你们项目的质量棒棒的,也希望一同分享您的方案!

独乐乐不如众乐乐!

所以呢

说这么多,技术角度来说,自动化的配置表编辑和加载,没有什么技术含量,更多的是一种思想,但是我相信这对项目管理、规范化是起到积极的作用的,减少重复劳动的时间,增加生产力。

做游戏项目,消耗时间的,往往不是高深难解的问题,而是一些简单问题的重复轮回。

藉著本文抛砖引玉,也希望大家各抒己见,提出一些让策划、程序皆大欢喜的方法和技巧,让更多更好的方案通过思想的交流碰撞出来,“节约更多时间,去陪恋人、家人和朋友:

)”

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2