Rimworld的MOD教程#7#简单的逻辑定义
_喵叔
编辑于 2019年12月27日 17:05
收录于文集
共8篇

从这章开始,我们需要额外的2个工具

1.用于反编译游戏DLL,我用的是dnSpy

2.用对新的DLL开发,我用的是Visual Studio 2017

这里会涉及到C#编程,要求开发者有一定的基础,不然是进行不下去的

游戏的引擎是基于.net 3.5的,所以之后的操作都是基于这个

游戏核心代码

RimWorld\RimWorldWin_Data\Managed\Assembly-CSharp.dll

RimWorld\RimWorldWin_Data\Managed\UnityEngine.dll

前者非常重要,后者在简单的制作中并不需要

Visual Studio 2017建立项目

1.打开Visual Studio 2017

2.菜单中操作:文件-》新建-》项目

新建一个项目

3.选择左边的C#,然后选择类库(Framwork)类型,并确认下边是3.5版本,名称无所谓,我写的是Miao_Rimworld,然后右下确认

设置项目类型

3,得到项目之后,我们需要把游戏的DLL增加引用。右击项目-》增加-》引用

增加引用

4.选择浏览,然后在游戏路径里找到2个DLL,点击添加

找到DLL

5.然后自动返回这个窗口,但是他不会显示你刚才添加的东西,不用管的,直接点确认

应该是BUG

6.检查左边程序集出现了刚才添加的,说明成功了

    a.可以把源码的名字修改了,方便生成DLL的时候不需要重命名

    b.在源码引用Rimworld和Verse,这个2个东西都是来自于Assembly-CSharp.dll

    c.命名空间修改为和游戏一样,不然Defs里调用需要增加命名空间名字,或者你喜欢这样的设计的话

做好前期工作

准备工作到此完毕,以后是不需要重复操作的,直接打开项目就行

dnSpy的准备操作

  1. 打开dnSpy

  2. 菜单操作:文件-》打开

菜单操作

    3.选择之前路径的Assembly-CSharp.dll就可以了

增加Assembly-CSharp.dll

    4.确认增加成功

成功增加

这也是一次性操作,以后直接打开dnSpy就可以了

允许死者衣服

很多人对这个MOD不陌生,其实实现做起来非常的简单

和之前做Defs类似,我们先用IntelliJ IDEA搜索游戏里原本的【允许非死者衣服】

(当然也可以抛弃IntelliJ IDEA,直接用VS来开发MOD,但是VS的搜索功能实在是呵呵呵呵)

然后找到定义并复制出来

修改一下

可以我们可以看到它调用了游戏里的SpecialThingFilterWorker_NonDeadmansApparel逻辑

我们需要先把它复制出来

在dnSpy里搜索程序集SpecialThingFilterWorker_NonDeadmansApparel

搜索

很快就找到了他的逻辑,我们把这里全部复制到VS的代码里,并修改一下逻辑和重命名

修改后的逻辑和名字

然后点击生成

生成操作

并把得到的DLL复制到MOD里,修改之前过滤条的调用逻辑

MOD更新

然后就可以进入游戏进行测试了

游戏里出现新过滤

游戏里出现了选项卡

当我们把【非死者】和【死者】都取消勾选的时候,小人是没办法工作的,没有材料

只勾选【非死者】也是如此

只有把【死者】勾上才能把衣服烧掉了

这里我就不上图了

允许新鲜物体

同理,我们可以增加一个相对于【允许腐烂物】的新过滤

Defs

DLL

执行效果我就不放图了

这里涉及的逻辑我就不说了,涉及到更复杂更底层的执行机制,有空的话我会写个文档