Skip to content

Mod进阶教程8 模组重载

inmny edited this page Dec 2, 2023 · 5 revisions

模组重载/热更新

为了更快的开发(主要是修仙有需求), NML提供了简单的模组部分重载功能, 你可以在游戏运行时修改模组代码, 并且使得立即生效.

限制范围

  • 修改函数, 不可修改函数的定义, 只能修改函数内部的代码
  • 添加函数, 实验性功能, 可能添加失败

使用方法

  1. 为你的Mod主类实现IReloadable接口
  2. 运行游戏
  3. IReloadable::Reload方法中实现你的重载逻辑
  4. 为你需要热更新/添加的函数添加Hotfixable特性(IReloadable::Reload也可以是Hotfixable的函数)
  5. 打开模组列表, 点击你的模组的重载按钮

注意!!!必看, 否则届时浪费大量时间就是活该

  • 保证你的Reload方法不会重复添加键值对(特指Dictionary::Add), 尽量保证覆写而非添加
  • AssetLibrary<T>::Add的覆写并不是完全安全的, 特别对于ActorAsset, Actor直接引用了ActorAsset实例, 覆写时并不会更新Actor的引用, 你需要自己手动更新或者仅更新ActorAsset的字段
  • 你可以在运行时给函数添加/删除Hotfixable特性
  • 匿名函数能够热更, 同样需要添加Hotfixable特性
Clone this wiki locally