🎨模组接口
介绍
模组主类接口
与NCMS的不同点
与NCMS的ModEntry
特性来表示模组入口不同, NML用IMod
接口来表示一个模组主类.
并不是为了和NCMS做区分, 通过接口的方式能够在保证模组设计统一的情况下保证coding的自由, 以及模组的可拓展性.
与NCMS的相同点
模组的主类除了需要实现IMod
接口外, 还需要继承MonoBehaviour
.
模组其他功能接口
除了表示模组主类的IMod
以外, NML还提供了IConfigurable
(提供设置), ILocalizable
(自动多语言处理), IReloadable
(热更新), IUnloadable
(可卸载), ...(后续可能会继续添加)等功能性的接口.
常用接口打包
这么多接口, 一个个实现太麻烦了, BasicMod
欢迎你. 打包实现了IMod
, IConfigurable
, ILocalizable
, 并提供了一些有用的函数.
IMod
通常用于模组主类, 在实现IMod
接口外, 还需要继承MonoBehaviour
(除非你有想法做子模组).
IMod
需要实现以下四个函数
IConfigurable
当一个模组主类实现了IConfigurable
, 那么就可以在模组列表里看到这个模组的模组设置的入口按钮.
相应的, 你需要实现下面这个函数
ModConfig
相关具体见模组设置
ILocalizable
当一个模组主类实现了ILocalizable
, 那么就会自动在模组OnLoad
加载前为其加载本地化文本(.csv和.json两种格式). 貌似没什么用,
相应的, 你需要实现下面这个函数
IReloadable
当一个模组主类实现了IReloadable
, 并且在Config.isEditor=true
的情况下, 在模组列表里可以看到该模组的重载按钮.
限制Config.isEditor=true
是为了避免在玩家误触模组重载按钮而导致不知名的异常.
相应的, 你需要实现下面这个函数
除此之外, NML还提供了Hotfixable
特性, 作用于函数上, 能够标记一个函数在重载前被热更新. 更具体的详见模组重载
IUnloadable
当一个模组主类实现了IUnloadable
, 在模组列表里点击模组按钮禁用模组时会直接调用其卸载函数将模组"卸载"(并不是完全意义上的卸载, 只是让模组自己将内容给卸了). 应该没有人闲的要用这个吧.
你需要实现下面这个函数
Last updated