一、准备工作:
前文已经创建了工程文件,内容如下
【资料图】
首先在前面添加引用文件
然后将第一行的public class Class1修改为public class Paches,其中“Paches”为自定义名称。之后所有的修改都在这个Paches类中进行。
二、开始修改
这里以修改液温调节器的功率和降低温度为例。
1、查找修改对象的内部名称
用Poedit打开strings_preinstalled_zh_文件,搜索“液温调节器”的英文如“<link="LIQUIDCONDITIONER">液温调节器</link>”中的“LIQUIDCONDITIONER”就是对应的游戏内部名称。
文件路径为:游戏安装文件夹\OxygenNotIncluded\OxygenNotIncluded_Data\StreamingAssets\strings\trings_preinstalled_zh_
2、查找修改对象的源代码
用dnspy打开,使用搜索功能搜索“LIQUIDCONDITIONER”,搜索结果中有一项CreateBuildingDef,双击即进入代码行,这段即为液温调节器的功能代码。
文件路径为:游戏安装文件夹\OxygenNotIncluded\OxygenNotIncluded_Data\Managed\
完整的代码如下,目前可以不用管具体代码内容,只需要找我们需要修改的代码即可。其他代码意思可以使用翻译软件查询。
在这段代码中,功率的代码是“ = 1200f”,意思是功率为1200瓦,输出温度的代码是“ = -14f”,意思是输出的物质温度降低14度。此外要注意的是,这两段代码分别在“public override BuildingDef CreateBuildingDef”和“public override void ConfigureBuildingTempla”函数中,记下这个区别。
3、开始修改代码
进入工程文件中,在类中添加如下代码
第一行[HarmonyPatch(typeof(“参数1”), "参数2")]的意思是需要修改的函数位置,参数1对应的是源文件中的第一行“public class LiquidConditionerConfig : IBuildingConfig”中的“LiquidConditionerConfig”。参数2对应的是功率所在的函数名字“CreateBuildingDef”。
第二行
public class 函数名,是自定义修改的执行函数,名称自定义,我这里为了方便区分使用了“Patch_修改对象_Create”的命名方法
第三行
public static void Postfix(ref BuildingDef __result),是固定写法
第四行
__result.修改对象 = 值;就是需要修改的内容
这里“__ = 200f;”的意思就是修改功率为200瓦。
同理,修改输出温度的代码如下
这样一来修改的代码就完成了。
三、mod安装
1、生成dll文件
点击启动,调试生成dll文件,输出窗口中出现如下信息,即表明DLL文件生成成功
2、建立测试文件夹
新建开发文件夹,用于mod的本地开发测试,如果不想上传到steam的话可以这样直接使用首先进入缺氧的存档文件夹,例如C:\Users\User\Documents\Klei\OxygenNotIncluded在mods文件夹中新建Dev文件夹和mod文件夹,完整的路径为,其中MyMod为自定义名称C:\Users\User\Documents\Klei\OxygenNotIncluded\mods\Dev\MyMod
3、将生成mod文件“”和“”拷贝进MyMod文件夹内
4、用文本编辑器新建两个和mod_文件
:
mod_:
至此这个液温调节器的修改MOD便可以用了,进入游戏内启用对应MOD即可。