第一大家不要看到MOD制作就开始联想到编程,算法,计算机语言。
ZERO发布的教程关于给飞船制作新的组件其实并不需要C#之类的计算机语言和编程基础,更不需要什么算法 。 你只需要了解基础的XML知识就可以了,我想很多网友经常修改XML文件,对XML已经轻车熟路了,不输给一个程序员。那么开始正题。
这次教程我们以给游戏中添加一个新的增强版的导弹发射器为例子,进行逐步讲解。
首先既然我们要制作一个新组件,那么必然是先定义一个新组件的XML文件,以让游戏识别。
SD关于所有飞船组件的定义在游戏目录\Content\ShipModules文件夹中,一个新的组件涉及到很多属性,比如组件类型(武器,护甲,护盾),组件名字,组件耗电量等,这么多的属性,在没有开发文档之前,我们是不可能凭空创建的。所以我们直接在旧有的组件XML里面改然后在另存为就可以了。
步骤:
1.打开Content\ShipModules文件夹,找到RocketLauncher.xml文件(游戏默认的导弹发射器组件定义XML文件)
2.在同一目录下创建一个空白的xml文件,取名为RocketLauncherEnchanced.xml
3.将游戏默认的RocketLauncher.xml文件里面的内容全数复制到新建的RocketLauncherEnchanced.xml文件里,保存
我们创建的RocketLauncherEnchanced.xml文件内容如下(内容和原文件完全相同)
接着介绍其中对于我们这次制作MOD极为重要/需要改动的字段.
A. UID是每个组件的唯一标示符,通俗的说就像是每个人的名字一样,如果游戏要识别你制作的组件,你必须得给它取个独一无二的新名字,不能与其他旧有的组件,或是其他MOD里定义的新组件名字相同,既然是增强版的导弹发射器,我们就取名为RocketLauncherEnchanced吧(XML文件名必须与UID一致)
B. IconTexturePath是定义游戏里面组件要用到的图像资源.xnb文件,一般都是Modules/资源名.xnb.这是一个相对路径,它的绝对路径是 游戏目录\Content\Textures\Modules。 关于给自己添加的组件定义及制作新的图像 我会在2L讲解。这里使用默认属性不修改,即游戏会显示会原版火箭发射器一样的图标。
C. NameIndex,DescriptionIndex 这两个字段对应游戏里面组件的名字和详细介绍2个文本的引用。引用的定义在游戏目录\Content\Localization\English文件夹的GameText_EN.xml文件里面。这个地方我自己在对着zero的教程制作的时候出了一个问题,导致添加组件之后游戏老是弹错。。。。调试半天才发现,对于1.08版本来说,那个教程在这个地方已经过时。由于1.08版本游戏添加了对德语的支持,所以zero放弃使用老的Content\Localization里面的English.xml文件放游戏里面的所有文本,而是使用这个目录下新的ENGLISH目录的文件而产生错误,对于德语文本时使用这个目下的GERMEN目录下的XML文件,所以1.08里面对游戏文本新加,修改,翻译等操作应该全部在新的ENGLISH目录下的XML文件里进行。
那么我们为了给自己添加的组件在游戏里取个显示的名字和组件详细介绍,打开Content\Localization\English\文件夹下的GameText_EN.xml文件,然后在最下面添加2个新的节点