MOD制作教程 教你如何利用Unity Mod Manager制作一個Mod

MOD制作教程。今天給大家詳細介紹如何利用Unity Mod Manager制作一個Mod。相信很多玩家在使用別人制作的mod時,都有一定不滿意的地方,這個時候玩家朋友就想自己修改一些不足的地方,或者制作自己喜歡的MOD。那么怎么制作MOD呢?制作MOD需要什么制作工具呢?那么一起詳細的看看下面的MOD制作教程,一定會幫助到你的。
支持制作的游戲
支持了不起的修仙模擬器
波西亞時光
花園瓜子
滑板XL
開拓者:擁王者
女主播經(jīng)紀公司
汽車修理工模擬2018
缺氧
嗜血印
雙電醫(yī)院
一起玩農(nóng)場
學習教程前請看需要的使用工具
Microsoft Visual Studio 2017下載地址====點我下載
Unity Mod Manager 下載地址====點我下載(以下我就直接簡稱為“UMM了”)
dnSpy 下載地址====點我下載 一個UMM支持的游戲(我這里使用的是雙點醫(yī)院)
準備工作:
下載安裝好全部的工具
使用UMM安裝到游戲中(具體安裝方法可以查看UMM的下載頁面)
然后打開游戲目錄:游戲名_Data\Managed
將下面的文件復制出來(隨便復制到哪都可以):
必須:Assembly-CSharp.dll、Assembly-CSharp-firstpass.dll、0Harmony12.dll、UnityEngine.dll、UnityEngine.UI.dll
可選:UnityEngine.CoreModule.dll、UnityEngine.IMGUIModule.dll
配置文件
在正式開始之前,我們還需要準備一個配置文件,
新建一個文件夾,重命名為“TextMod”,在里面新建一個記事本文件,重命名為“Info.json”(記得開啟顯示后綴名),然后使用Notepad++,
在里面粘貼下面的代碼:
{ "Id": "TestMod", "DisplayName": "Test Mod", "Author": "小莫", "Version": "1.0.0", "ManagerVersion": "1.0.0", "Requirements": ["SomeMod-1.0.0", "AnotherMod"], "AssemblyName": "TestMod.dll", "EntryMethod": "TestMod.Main.Load", "HomePage":"www.aaa.com", "Repository ":"www.bbb.com" }
解釋:
ID:ID就是Mod的ID,Mod ID不能重復(必須);
DisplayName :Mod名稱,顯示在游戲里面(可選,建議填寫);
Author:Mod作者,顯示在游戲里面(可選,建議填寫);
Version:版本,Mod的更新需要判斷版本(必須);
ManagerVersion:Mod管理器最低版本,建議填寫你現(xiàn)在使用的UMM版本(可選,建議填寫);
Requirements:要求,Mod所需要的其他Mod依賴(可選);
AssemblyName:文件名稱,即我們創(chuàng)建的dll文件名稱(可選);
EntryMethod:文件函數(shù),我們寫的代碼函數(shù),下面會講到(必須);
HomePage:主頁,作者的主頁,可以填寫Mod的發(fā)布地址,也可以填寫個人微博地址(可選);
Repository:自動更新檢測地址,關于自動更新這一塊,我也不知道,所以大家自己百度吧(可選);
Visual Studio部分
首先打開Visual Studio,然后新建一個項目工程(快捷鍵是Ctrl+Shift+N)
左邊選擇“Visual C#”,中間選擇“類庫.NET Framework”
將這里的“Class1”改成“Main”
這里就是剛剛提到的“EntryMethod”文件主函數(shù)的內(nèi)容,
【TestMod.Main.Load】的意思就是
加載 “TestMod“”里面的“Main”里面的“Load”
接下來我們來添加幾個引用
右鍵引用選擇添加引用
這里選擇“游覽”
然后找到一開始讓大家復制出來的那幾個文件,添加進來
然后在引用這里就可以看到了
接下來我們在這里手動添加幾個引用
using UnityEngine; using Harmony12; using UnityModManagerNet; using System.Reflection;
那么準備工作就算完成了,我們可以開始寫代碼了
別問我怎么寫,我也不會寫
我們來看一下作者給的代碼吧:
首先,UMM自帶的函數(shù)有:
// modEntry.Info - 包含 'Info.json' 文件里面的所有字段. // modEntry.Path - Mod 文件夾路徑. string類型. // modEntry.Active - 是否是激活狀態(tài).bool類型 // modEntry.Logger - 將日志寫入 'UnityModManager.log' 文件. // modEntry.OnToggle - 該功能的存在讓玩家知道可以安全的關閉這個Mod. // modEntry.OnGUI - 添加Mod界面選項. // modEntry.OnSaveGUI - 保存時調(diào)用.
具體C#什么意思我也不是非常精通,我就直接把完整代碼貼出來吧:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnityEngine; using Harmony12; using UnityModManagerNet; using System.Reflection; namespace TestMod { public class Main { public static UnityModManager.ModEntry.ModLogger Logger; //寫入日志 public static bool enabled; // 讓游戲知道玩家關閉了這個Mod // 有關Mod的數(shù)據(jù)變量 static bool Load(UnityModManager.ModEntry modEntry) { HarmonyInstance harmony = HarmonyInstance.Create(modEntry.Info.Id); //獲取符段 string a = modEntry.Path; //獲取路徑 bool b = modEntry.Active; //獲取激活狀態(tài) Logger = modEntry.Logger; //寫入日志 modEntry.OnToggle = OnToggle; //讓游戲知道玩家關閉了這個Mod modEntry.OnGUI = OnGUI; //添加Mod界面選項.界面內(nèi)容 是“OnGUI”里面的內(nèi)容 modEntry.OnSaveGUI = OnSaveGUI; //保存時調(diào)用“OnSaveGUI”里面的內(nèi)容 // modEntry.Info - 包含 'Info.json' 文件里面的所有字段. // modEntry.Path - Mod 文件夾路徑.目前是: 'F:\steam\steamapps\common\TPH\Mods\TextMod'. // modEntry.Active - 是否是激活狀態(tài). // modEntry.Logger - 將日志寫入 'UnityModManager.log' 文件. // modEntry.OnToggle - 該功能的存在讓玩家知道可以安全的關閉這個Mod. // modEntry.OnGUI - 添加Mod界面選項. // modEntry.OnSaveGUI - 保存時調(diào)用. return true; } public static bool OnToggle(UnityModManager.ModEntry modEntry, bool value) //讓游戲知道玩家關閉了這個Mod { enabled = value; return true; } static void OnGUI(UnityModManager.ModEntry modEntry) //添加Mod界面選項. { } static void OnSaveGUI(UnityModManager.ModEntry modEntry) // 設置保存(modEntry); { } } }
(上面這段代碼沒有任何意義)
給Mod添加一個開關事件
using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnityEngine; using Harmony12; using UnityModManagerNet; using System.Reflection; namespace TestMod { class Main { public static bool enabled; static bool Load(UnityModManager.ModEntry modEntry) { modEntry.OnToggle = OnToggle; return true; } // 當Mod打開或關閉時執(zhí)行 static bool OnToggle(UnityModManager.ModEntry modEntry, bool value /*有效或無效*/) { enabled = value; return true; // 是或不是. } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnityEngine; using Harmony12; using UnityModManagerNet; using System.Reflection; namespace TestMod { class Main { public static bool enabled; static bool Load(UnityModManager.ModEntry modEntry) { modEntry.OnToggle = OnToggle; var harmony = HarmonyInstance.Create(modEntry.Info.Id); harmony.PatchAll(Assembly.GetExecutingAssembly()); return true; } static bool OnToggle(UnityModManager.ModEntry modEntry, bool value) { enabled = value; modEntry.Logger.Log(Application.loadedLevelName); return true; } } [HarmonyPatch(typeof(Application), "loadedLevelName", MethodType.Getter)] static class Application_loadedLevelName_Patch { static void Postfix(ref string __result) { if (!Main.enabled) return; __result = "New Level Name"; } } }
這段的意思就是
函數(shù)“Application.loadedLevelName”將始終返回字符串類型“New Level Name”
寫完之后,我們就可以生成了(快捷鍵是F6):
完事之后我們找到項目文件的\TestMod\TestMod\bin\Debug目錄,將里面的“TestMod.dll”文件復制出來,放到我們之前建立的“TextMod”文件夾里面
最后將“TextMod”文件夾放到游戲目錄中的“mods”文件夾里面就可以了,然后進游戲就可以看到我們的Mod了
以上就是今天大家?guī)淼腢nity Mod Manager制作一個Mod的教程了,不知道你學會了沒有,如果還是不明白可以多學習幾次,畢竟對于初次接觸的用戶還是很復雜的。
相關文章
Keysight mbp2019怎么破解?Keysight mbp2019安裝破解詳細圖文教程
Keysight mbp2019怎么破解?下文小編為大家?guī)砹薑eysight mbp2019安裝破解詳細圖文教程,感興趣的朋友可以一起看看2019-04-04- 有網(wǎng)友反映steam提示“安裝文件夾當前不可寫”怎么解決?下面小編教大家解決方法,供大家參考!2019-04-02
迅捷視頻轉(zhuǎn)換器怎么剪輯視頻 裁剪視頻的方法分享
迅捷視頻轉(zhuǎn)換器又被廣大的網(wǎng)友稱為迅捷萬能格式轉(zhuǎn)換器,很多用戶在使用過程中不知道怎么剪輯視頻,今天,小編就來教大家具體的操作步驟2019-03-30- 2024微信搖色子輔助器是一款微信骰子的作弊軟件,用戶可以隨意控制骰子的大小,再也不擔心和朋友伙伴玩這種小游戲會輸了,歡迎感興趣的朋友一起看看2023-07-06
迅捷視頻轉(zhuǎn)換器如何視頻轉(zhuǎn)換器 輕松減少視頻的大小方法介紹
迅捷視頻轉(zhuǎn)換器是一款多功能的視頻格式轉(zhuǎn)換工具,但某些視頻文件的體積本來就比一般文件的體積要大很多,這時候就可以使用迅捷視頻轉(zhuǎn)換器來幫助大家2019-04-04