缺氧MOD開(kāi)發(fā) 從小白到入門(二、第一個(gè)修改)
一、準(zhǔn)備工作:
前文已經(jīng)創(chuàng)建了工程文件,內(nèi)容如下
首先在前面添加引用文件
然后將第一行的public class Class1修改為public class Paches,其中“Paches”為自定義名稱。之后所有的修改都在這個(gè)Paches類中進(jìn)行。
二、開(kāi)始修改
這里以修改液溫調(diào)節(jié)器的功率和降低溫度為例。
1、查找修改對(duì)象的內(nèi)部名稱
用Poedit打開(kāi)strings_preinstalled_zh_klei.po文件,搜索“液溫調(diào)節(jié)器”的英文
如“<link="LIQUIDCONDITIONER">液溫調(diào)節(jié)器</link>”中的“LIQUIDCONDITIONER”就是對(duì)應(yīng)的游戲內(nèi)部名稱。
文件路徑為:游戲安裝文件夾\OxygenNotIncluded\OxygenNotIncluded_Data\StreamingAssets\strings\trings_preinstalled_zh_klei.po
2、查找修改對(duì)象的源代碼
用dnspy打開(kāi)Assembly-CSharp.dll,使用搜索功能搜索“LIQUIDCONDITIONER”,搜索結(jié)果中有一項(xiàng)CreateBuildingDef,雙擊即進(jìn)入代碼行,這段即為液溫調(diào)節(jié)器的功能代碼。
文件路徑為:游戲安裝文件夾\OxygenNotIncluded\OxygenNotIncluded_Data\Managed\Assembly-CSharp.dll
完整的代碼如下,目前可以不用管具體代碼內(nèi)容,只需要找我們需要修改的代碼即可。其他代碼意思可以使用翻譯軟件查詢。
在這段代碼中,功率的代碼是“buildingDef.EnergyConsumptionWhenActive = 1200f”,意思是功率為1200瓦,輸出溫度的代碼是“airConditioner.temperatureDelta = -14f”,意思是輸出的物質(zhì)溫度降低14度。此外要注意的是,這兩段代碼分別在“public override BuildingDef CreateBuildingDef”和“public override void ConfigureBuildingTempla”函數(shù)中,記下這個(gè)區(qū)別。
3、開(kāi)始修改代碼
進(jìn)入工程文件中,在類中添加如下代碼
第一行
[HarmonyPatch(typeof(“參數(shù)1”), "參數(shù)2")]的意思是需要修改的函數(shù)位置,參數(shù)1對(duì)應(yīng)的是源文件中的第一行“public class LiquidConditionerConfig : IBuildingConfig”中的“LiquidConditionerConfig”。參數(shù)2對(duì)應(yīng)的是功率所在的函數(shù)名字“CreateBuildingDef”。
第二行
public class 函數(shù)名,是自定義修改的執(zhí)行函數(shù),名稱自定義,我這里為了方便區(qū)分使用了“Patch_修改對(duì)象_Create”的命名方法
第三行
public static void Postfix(ref BuildingDef __result),是固定寫法
第四行
__result.修改對(duì)象 = 值;就是需要修改的內(nèi)容
這里“__result.EnergyConsumptionWhenActive = 200f;”的意思就是修改功率為200瓦。
同理,修改輸出溫度的代碼如下
這樣一來(lái)修改的代碼就完成了。
三、mod安裝
1、生成dll文件
點(diǎn)擊啟動(dòng),調(diào)試生成dll文件,輸出窗口中出現(xiàn)如下信息,即表明DLL文件生成成功
2、建立測(cè)試文件夾
新建開(kāi)發(fā)文件夾,用于mod的本地開(kāi)發(fā)測(cè)試,如果不想上傳到steam的話可以這樣直接使用
首先進(jìn)入缺氧的存檔文件夾,例如
C:\Users\User\Documents\Klei\OxygenNotIncluded
在mods文件夾中新建Dev文件夾和mod文件夾,完整的路徑為,其中MyMod為自定義名稱
C:\Users\User\Documents\Klei\OxygenNotIncluded\mods\Dev\MyMod
3、將生成mod文件“FancyOxygenEdit.dll”和“PLib.dll”拷貝進(jìn)MyMod文件夾內(nèi)
4、用文本編輯器新建兩個(gè)mod.yaml和mod_info.yaml文件
mod.yaml:
mod_info.yaml:
至此這個(gè)液溫調(diào)節(jié)器的修改MOD便可以用了,進(jìn)入游戲內(nèi)啟用對(duì)應(yīng)MOD即可。