一. 分析
??對于一般玩家來說意荤,下載了UMM之后啊片,要做的就是打開UMM,選擇游戲玖像,選擇文件夾紫谷,點(diǎn)擊安裝,然后把下載的mod們放到Mods文件夾下。但是碴里,我們現(xiàn)在這個游戲并不能直接從UMM里找到沈矿,因?yàn)閁MM的配置里面并沒有我們想要的游戲。那么就需要我們自己來添加這個配置咬腋。
??打開UnityModManagerConfig.xml文件羹膳,我們可以很明顯的看到這里有很多GameInfo標(biāo)簽,每一個就代表了一個游戲的配置根竿,我們來分析一下最新的這個陵像。
<!-- 0.21.4 -->
<GameInfo Name="Metal Unit">
<Folder>Metal Unit</Folder>
<ModsDirectory>Mods</ModsDirectory>
<ModInfo>Info.json</ModInfo>
<GameExe>MetalUnit.exe</GameExe>
<EntryPoint>[UnityEngine.UIModule.dll]UnityEngine.Canvas.cctor:After</EntryPoint>
<StartingPoint>[Assembly-CSharp.dll]TitleMenuController.Awake:After</StartingPoint>
</GameInfo>
??首先是一行注釋,告訴了我們這是新版本添加的游戲寇壳,然后是一個GameInfo標(biāo)簽醒颖,它里面有6個次級標(biāo)簽。GameInfo標(biāo)簽有一個屬性Name="Metal Unit"
壳炎,顧名思義泞歉,這是游戲的名字,他是顯示在UMM里給玩家看的名字匿辩。
??再看次級標(biāo)簽:
-
<Folder>Metal Unit</Folder>
這里聲明的是游戲文件夾的名字 -
<ModsDirectory>Mods</ModsDirectory>
這里說明mod存放文件夾的名字 -
<ModInfo>Info.json</ModInfo>
這里說明mod描述文件的名字 -
<GameExe>MetalUnit.exe</GameExe>
這里說明游戲程序的名字 -
<EntryPoint>[UnityEngine.UIModule.dll]UnityEngine.Canvas.cctor:After</EntryPoint>
這里說明的是Mod管理器的入口點(diǎn)腰耙,一般情況下我們不需要動它,讓管理器從Canvas進(jìn)入是個不錯的選擇 -
<StartingPoint>[Assembly-CSharp.dll]TitleMenuController.Awake:After</StartingPoint>
這里說明的是進(jìn)入游戲后啟動Mod管理器的地方铲球,一般都是以游戲主界面UI或者游戲管理器作為開始點(diǎn)
二. 實(shí)踐
??分析之后挺庞,讓我們來為UMM添加撒幣雙冠的配置,上面的幾個不需要多說稼病,照樣子填寫即可选侨,我們重點(diǎn)來找一下開始點(diǎn),因?yàn)槊總€游戲的邏輯都不一樣然走,這里需要我們自己找援制。打開Dnspy,然后在游戲文件夾Kingdom Two Crowns/KingdomTwoCrowns_Data/Managed
下找到Assembly-CSharp.dll芍瑞,如果你學(xué)習(xí)過Unity隘谣,那么應(yīng)該會知道,這是游戲邏輯編譯的結(jié)果啄巧,我們將它拖入到Dnspy寻歧。
??導(dǎo)入之后,點(diǎn)開AC(Assembly-CSharp的簡稱)秩仆,點(diǎn)開AC.dll码泛,我們能看到一堆命名空間,有谷歌的澄耍,有DG的等等噪珊,這些一般都是開發(fā)者使用的插件晌缘,或者他們公司以命名空間組織游戲結(jié)構(gòu)的話,也會在這里顯示痢站。Unity中的腳本默認(rèn)都是沒有命名空間的磷箕,所以我們打開{},就可以看到撒幣洋洋灑灑的幾百個類阵难。大致瀏覽一遍岳枷,看到了Game,Menu等適合當(dāng)作開始點(diǎn)的類呜叫,這里我們使用Game空繁,將開始點(diǎn)定位在Game類的Awake函數(shù)。
??完成的配置如下:
<GameInfo Name="撒幣:雙冠">
<Folder>Kingdom Two Crowns</Folder>
<ModsDirectory>Mods</ModsDirectory>
<ModInfo>Info.json</ModInfo>
<GameExe>KingdomTwoCrowns.exe</GameExe>
<EntryPoint>[UnityEngine.UIModule.dll]UnityEngine.Canvas.cctor:After</EntryPoint>
<StartingPoint>[Assembly-CSharp.dll]Game.Awake:After</StartingPoint>
</GameInfo>
??注:在Unity的組件生命周期中朱庆,Awake在構(gòu)造函數(shù)之后盛泡,Start之前,一般用于初始化初始化工作娱颊。
??寫好配置后傲诵,我們保存文件,重新打開UMM箱硕,就可以看到我們的撒幣:雙冠了拴竹,然后我們直接安裝上,接下來開始正式的開發(fā)Mod颅痊。