Unity Il2cpp 游戲的 Mod 制作教程03 - HelloWorld
一切準(zhǔn)備就緒,讓我們來寫一個hello world吧。
插件的入口點
首先是繼承了 BasePlugin
的類,也就是插件的入口點,Load
會被 BepInEx 調(diào)用。與mono 游戲的插件不同,BasePlugin
并不是 MonoBehaviour
的派生類,也就沒有 Update
之類的接口。因此如果我們想要用到 mono 組件,比如創(chuàng)建一個UI,接受用戶輸入,或者動態(tài)加載資源等等, 就需要創(chuàng)建自己的 mono object 。但如果你只是想要用harmony去patch一些函數(shù),那就不需要這些操作了。
需要注意的是,如果過早的創(chuàng)建mono object 會導(dǎo)致無法將其加入到第一個Scene 中。所以我們不能直接在 Load
中創(chuàng)建 mono object,而應(yīng)該在一個合適的時間點來加載Mod。
下面給出兩個思路:
Unity游戲一般都會有 CanvasScaler 組件,且會在
OnEnable
時調(diào)用?Handle
,所以可以通過 hookHandle
來創(chuàng)建 mono object。將創(chuàng)建任務(wù)綁定到 SceneManager.sceneLoaded Event,并在創(chuàng)建時解除綁定。
Mono Object 類
如上所述,我們需要一個 MonoBehaviour
對象來實現(xiàn)豐富的功能。
代碼寫完開始編譯,如果之前修改了項目配置,那么生成的插件 dll 會自動拷貝到 plugins 下,否則,需要我們手動拷貝。

運行游戲來看一下效果。如果成功的話我們每按一次 Tab 就會在命令行輸出一次 Hello World!。
