-
准备
https://dotnet.microsoft.com/download/dotnet-framework/net472
点击Download .NET Framework 4.7.2 Developer Pack
安装NDP472-DevPack-ENU.exe
注意:提示已有 framework4.7.2 安装失败 !!重启试试!! -
最终文件夹结构(忽略了 bin 和 obj 文件夹)
MOD名字 │ MOD名字.csproj │ Main.cs │ ├───.vscode │ tasks.json │ └───MODname named by yourself ├───About │ About.xml │ Preview.png │ └───Assemblies MOD名字.dll MOD名字.pdb
-
创建命令(新建一个用于存放代码的文件夹,在文件夹里运行这个命令)
dotnet new classlib
-
.csproj文件
<!--!!!!!!!!!!!!!!!!!!!!!!!!!!你必须自行修改 HintPath 元素的文本!!!!!!!!!!!!!!!!!!!!!!!!!--> <!--!!!!!!!!!!!!!!!!!!!!!!!!!!你必须自行修改 HintPath 元素的文本!!!!!!!!!!!!!!!!!!!!!!!!!--> <!-- 例如:..\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed 文件夹 !!!!!!--> <!-- 可以使用 Everything 软件查找,网址:https://www.voidtools.com/zh-cn/ !!!!!!!!!!!!!--> <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net472</TargetFramework> </PropertyGroup> <ItemGroup> <Reference Include="Assembly-CSharp"> <HintPath>A:\Steam\steamapps\workshop\content\294100\2012810482\Source\Assemblies\Assembly-CSharp.dll</HintPath> <Private>false</Private> </Reference> <Reference Include="UnityEngine.CoreModule"> <HintPath>A:\Steam\steamapps\workshop\content\294100\2012810482\Source\Assemblies\UnityEngine.CoreModule.dll</HintPath> <Private>false</Private> </Reference> <Reference Include="UnityEngine.IMGUIModule"> <HintPath>A:\Steam\steamapps\workshop\content\294100\2012810482\Source\Assemblies\UnityEngine.IMGUIModule.dll</HintPath> <Private>false</Private> </Reference> <Reference Include="0Harmony"> <HintPath>A:\Steam\steamapps\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll</HintPath> <Private>false</Private> </Reference> <Reference Include="System.Core" /> <Reference Include="UnityEngine.TextRenderingModule"> <HintPath>A:\Steam\steamapps\workshop\content\294100\2012810482\Source\Assemblies\UnityEngine.TextRenderingModule.dll</HintPath> <Private>false</Private> </Reference> <Reference Include="OtherAuthor.OtherMODNameMayBeYouWantModify"> <HintPath>A:\Steam\steamapps\workshop\content\294100\XXXXXXXXXX\Assemblies\OtherAuthor.OtherMODNameMayBeYouWantModify.dll</HintPath> <Private>false</Private> </Reference> </ItemGroup> </Project>
-
编译命令
dotnet publish -c Release -o './MODname named by yourself/Assemblies'
-
Rimworld快速启动Bat脚本(Steam在线 == Steam创意工坊Mod正常加载)
rem Rimworldquicktest.bat --- RimworldMod快速启动 echo off&&cls rem !!!!!你必须自行修改rimworldgamepath后的引号内的路径!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! set rimworldgamepath="A:\Steam\steamapps\common\RimWorld" && rem !!!!!!!!!!!!!!!!!!!!!!!!! rem !!!!!你必须自行修改rimworldgamepath后的引号内的路径!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! for /f "delims=" %%i in ('dir /a-d /b /on %rimworldgamepath%\RimWorld*.exe') do ( set rimworldexename=%%i goto next ) :next cd /d %rimworldgamepath% echo %rimworldexename% start %rimworldexename% -quicktest rem pause exit rem For example: C:/RimWorld/RimWorld.exe -quicktest rem If you're a modder, we recommend making a shortcut to the game that does this. rem by .\RimWorld\Readme.txt
-
打开RimworldMod所在文件夹
@echo off rem openRimworldModfolder.bat --- 打开RimworldMod所在文件夹 rem !!!!!你必须自行修改rimworldmodpath*后的引号内的路径!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! set rimworldmodpath1="A:\Steam\steamapps\common\RimWorld\Mods" && rem !!!!!!!!!!!!!!!!!!!! set rimworldmodpath2="A:\Steam\steamapps\workshop\content\294100" && rem !!!!!!!!!!!!!!!!! rem !!!!!你必须自行修改rimworldmodpath*后的引号内的路径!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! set _0or1FlagRandomskRgadKbwFDF=0 set _colorFlagRandomskRgadKbwFDF=07 :0 if "%_0or1FlagRandomskRgadKbwFDF%"=="0" ( set _0or1FlagRandomskRgadKbwFDF=1 echo ======该程序可以打开 Rimworld 的 Mod 所在文件夹====== && echo 输入1打开资源 本地文件 && echo 输入2打开资源 Steam 创意工坊 && echo 输入z打开本程序文件位置 && echo 输入x立即关闭本程序 && echo 输入c清除已输入 && echo 输入1x打开资源本地文件并立即关闭 && echo= ) if "%_colorFlagRandomskRgadKbwFDF%"=="07" ( rem pass ) else ( timeout /t 1 >nul color 07 ) set /p input=请输入数字1、2、z、x、c或1x: if "%input%"=="1" call :1 if "%input%"=="1x" call :1 x if "%input%"=="2" call :2 if "%input%"=="z" call :z if "%input%"=="x" call :x if "%input%"=="c" call :c color 0c set _colorFlagRandomskRgadKbwFDF=0c echo 输入错误,重新输入,输入x可关闭本程序 echo= goto 0 :1 echo 已输入1 打开资源→本地文件 echo= start "" %rimworldmodpath1% if %1="x" exit goto 0 :2 echo 已输入2 打开资源→Steam 创意工坊 echo= start "" %rimworldmodpath2% goto 0 :z echo 已输入z 打开本程序文件位置 echo= start "" %~dp0 goto 0 :x color 0c set _colorFlagRandomskRgadKbwFDF=0c echo 已输入x 程序即将关闭 timeout /t 3 exit :c echo 已输入c 清除已输入 echo= timeout /t 1 >nul cls set _0or1FlagRandomskRgadKbwFDF=0 goto 0
-
vscode > 终端(T) > 配置默认生成任务…
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "dotnet publish", "type": "shell", "command": "dotnet publish -c Release -o './MODname named by yourself/Assemblies'", "problemMatcher": [], "group": { "kind": "build", "isDefault": true } } ] }
-
相关链接
RimWorld Wiki:About.xml格式
RimWorld Wiki:MOD 开发教程(译自: Sidoupiar)
CSDN专栏:Rimworld Mod教程(作者: Shadowrabbit)
哔哩哔哩专栏文集:Unity游戏Mod/插件制作教程(作者: 宵夜97)
3DM论坛:MOD制作教程(作者: JKstring)
小莫的博客园:拦截/注入 游戏函数实现高级操作(作者: 小莫)
动态IL织入框架Harmony简单入手(作者: 彭伟) - 360快照
OpCodes,IL指令字段表示形式(微软 .NET API 参考文档) - 英文文档
RimWorld Mod集(作者: spdskatr)
灰机wiki:Mod教程
XML 自动文档(这是什么?)(祭出老古董IE11(哆啦A梦伸手发光)) -
相关软件
RimWorld翻译工具[RimTrans] Github 百度网盘 哔哩哔哩 代码/文本编辑工具[VSCode] 官网 格式化快捷键Shift + Alt + F 终端快捷键Ctrl + Shift + B 文本编辑工具[Notepad++] 官网 XML插件 右键文件名:移动到另一视图 反编译工具[ILSpy] Github Microsoft Store 查看IL代码:标题栏(月亮图标附近)C# 改为 IL(或IL with C#) 反编译工具[dnSpy] Github C#代码编辑/反编译工具[JetBrains Rider](个人首年140刀) 官网 30天免费试用 无社区版/无抢先体验计划 (EAP)
制作 Rimworld Mod dll 部分记录
最新推荐文章于 2021-07-13 11:43:45 发布