模组教程
  • 🏠主页
  • 😀介绍
  • 😇玩家手册
    • 📕安装教程
    • 📔使用说明
    • 🐴注意事项
  • 😅模组制作教程
    • 😅预先准备
    • 😎创建一个模组
    • 😘常用NML功能
    • 🤔其他常用
    • 🥸BepInEx
  • 🤔基础概念
    • 👌模组声明
    • 🎨模组接口
    • 👌模组设置
    • 👍模组依赖
    • 🤗多语言文本
  • 😶‍🌫️资源加载
    • 📕概览
    • 😁Resources
    • 😂AssetBundle
  • 😪其他技术
    • 👌模组重载
    • 🫥事件监听
    • 😄上传模组
  • 🫨游戏内容添加
    • 🥳创建装备
  • 🤩用户交互界面
    • 🥳按钮
    • 😁交互栏
    • 😂内置预制体
    • 😄一般窗口
    • 😆自动布局窗口
  • 😘懒人福利
    • 😍基础模组
  • 🚗NML开发和OpenMods项目
    • 📕介绍
    • NML 开发
    • NML 模组文档
    • 示例模组
    • Unity开发工具包
    • 原版代码文档
Powered by GitBook
On this page
  • HarmonyTranspiler
  • Listener-Handler
  1. 模组制作教程

其他常用

Previous常用NML功能NextBepInEx

Last updated 1 year ago

当你想要修改游戏本身的一些函数, 或者在游戏的函数执行前后进行一些操作, 你就需要用到这个HarmonyPatch

入门参考, 专栏里自己找, 可以直接跳转Harmony补丁基础部分.

文档参考

HarmonyPrefix来覆盖整个目标函数提供了极大的自由度, 自然是非常简单的, 但非常容易造成与其他模组的兼容问题. 特别是对于一些"热门"的函数.

所以这里推荐两个可以缓解兼容问题的方式

HarmonyTranspiler

通过修改游戏函数的IL代码来插入你想要的功能, 具有一定的学习成本, 但相当灵活, 并且具有比HarmonyPrefix等高得多的运行效率.

Listener-Handler

这是NML引入的一个功能, 简单来说, NML或其他模组提供使用HarmonyTranspiler实现的Listener来监听原版的函数执行, 并依次调用Listener下注册的所有Handler来处理.

NML还会捕获Handler执行时发生的异常, 当异常数量大于一定值后, 将会停用该Handler来保证游戏的正常运行.

😅
🤔
传送门
传送门