制作第一个模组
1.生成模组框架
2.编译模组
3.查看、加载模组
4.浅析模组框架
5.修改模组
6.tML的自动加载
生成模组框架
0.11以后,tML里面集成了模组生成器。进入Mod Sources界面,点击右下角的Create Mod,填写完里面的四个字段再点击Create就可以新建模组。我填的依次是YourMod,Your Mod,YourName,YourSword,接下来也会用这个作为例子讲解。
编译模组
下拉,找到刚才新建的模组,点击项目下方的Build,等待编译完成。
查看模组
现在进入Mods界面可以找到你的模组,点击它右边的绿色小问号,显示出模组简介。
面板中的的Delete按钮用于在该模组未启用的时候删除它,Extract按钮用于提取模组中的内容(与build.txt有关),提取出来的内容在 ~\Documents\My Games\Terraria\ModLoader\Mod Reader\ 下查看。
加载模组
返回Mods界面,点击Reload Mods,选择角色,进入世界,拿10个土块可以在工作台旁边做一把剑,注意观察剑的伤害。
打开模组源文件夹
回到Mod Sources界面,点击正下方的Open Sources,弹出模组源文件夹。记住这个文件夹的路径,以后会经常用到它。
如果想像上面一样编译其他途径获得的源码,第一步就是把它移到这个目录下,这样才能在Mod Sources界面里找到它。
刚才创建的模组框架也在这个文件夹里,接下来我们会具体介绍这里面有什么,以及做一些游戏中可见的简单改动。
模组框架浅析
文件浏览器导航至YourMod,这一步我们先理清楚每一个文件/文件夹的作用。
Items:
物品(Item)分类文件夹,现在里面有YourSword的C#源文件和它的精灵图(sprite)。之后写抛射物和光环等的时候会继续创建Projectiles、Buffs等的文件夹,并把相关的源文件和图片放在里面,这种文件结构能使模组更加易于阅读。
build.txt:
用于在编译的时候加入一些信息,比如作者、版本号、模组依赖等等,同时它与Extract能提取出的内容有关。如果要发布你的模组,仔细研究一下这里:tMLWiki/build.txt。
示例配置如下(注释去掉):
YourMod.csproj和Properties:
Visual Studio项目文件和配置。项目文件包含开发过程中常用的引用,而配置文件包含编译和调试过程中会用到的各种路径。
YourMod.cs:
//TODO
description.txt和icon.png(可加):
模组简介和模组左侧的图标,让它们好一点。图标要求80x80大小,这里提供一个边框。
修改模组
了解了模组项目里的各部分作用之后,现在把能动的build.txt、description.txt和Items都稍微动一下。
1.在build.txt中加上一行hideResources=true,保存,编译,重新加载模组,提取它,看看能不能得到YourSword的精灵图。
2.把description.txt里的内容改成hello,保存,编译,看看模组简介是不是变了。
3.用文本编辑器打开YourSword.cs,把item.damage后的数字改成5000,保存,编译,重新加载模组,看看剑的伤害是不是还是50。
4.提供一把树中剑,把它放到Items文件夹里,再把YourSword.png删掉,编译,按理说应该报错了,看看下面的自动加载规则,把它改正过来。
tML的自动加载
模组里的物品、抛射物和NPC都需要至少一张精灵图来使它们显示在游戏中,如果重写加载函数会非常麻烦。tML中用自动加载(Autoload)来解决这个问题,通过命名空间(和特性)定位图片。
以Items里的这把剑为例,如果tML想要把YourSword类对应的精灵图加载到游戏中,会进行如下处理:
1、取得模组源文件夹路径(~\Documents\My Games\Terraria\ModLoader\Mod Sources\)
2、将命名空间中的 . 转换为反斜杠(\)添加到模组源文件夹路径后(...\YourMod\Items)
3、在这个路径下寻找类名+ .png 的图片(...\YourSword.png)
4、找不到就会抛错,编译失败。
上面的规则意味着只要图片的命名和放置正确,C#源文件放哪,改什么名都没关系,但千万不要这么做。
一般习惯是贴图和源码放在一起、贴图和源码的文件名和类名保持一致,源码的命名空间和所在的文件夹保持一致,这样方便阅读。
再以一个头盔为例,如果自动加载已经把它的物品贴图加载到物品栏中,需要装备在身上的时候把它外显出来:
//TODO