😘常用NML功能

对于BasicMod

日志

BasicMod提供了LogInfo, LogWarning, LogError三个静态函数来打印日志, 会带上模组名称的前缀

实例

BasicMod提供了Instance静态属性可以直接访问模组主类的实例

模组信息

BasicMod提供了GetDeclaration能够获取模组声明信息(ModDeclare, 不是ModDeclaration, 这个名给可恶的NCMS用作命名空间了, 为了方便代码编写, 故改名), 包括模组名, 所在文件夹等, 具体定义如下

// 部分字段不在此处展示, 具体见 `基础概念/模组声明`
public class ModDeclare
{
    // 模组名
    public string Name { get; private set; }
    // 模组ID
    public string UID { get; private set; }
    // 作者
    public string Author { get; private set; }
    // 版本
    public string Version { get; private set; }
    // 描述/简介
    public string Description { get; private set; }
    // 仓库地址
    public string RepoUrl { get; private set; }
    // 必需依赖
    public string[] Dependencies { get; private set; }
    // 可选依赖
    public string[] OptionalDependencies { get; private set; }\
    // mod.json文件所在文件夹路径
    public string FolderPath { get; private set; } = null!;
    // 图标路径(相对于mod.json文件所在文件夹路径)
    public string IconPath { get; private set; }
}

BasicMod提供了GetLocaleFilesDirectory(ModDeclare)能够直接获取本地化文件所在文件夹路径. 传入GetDeclaration的结果作为参数.

模组设置

BasicMod默认是一个提供设置界面的Mod, 你可以通过GetConfig来获取ModConfig实例, 具体用法见模组设置

多语言

在模组文件夹下创建Locales文件夹, 参考ModTemplate中的写法即可. 目前仅支持json和csv文件.

其他常用特性

日志

NeoModLoader.services.LogService提供了

  • 一般的LogInfo,LogWarning,LogError三件套,

  • 打印调用堆栈的LogStackTraceAsInfo, LogStackTraceAsWarning, LogStackTraceAsError

  • 在多线程情况下使用的LogInfoConcurrent, LogWarningConcurrent, LogErrorConcurrent.

贴图

在模组文件夹下创建一个名为GameResources的文件夹, 其中的.png,.jpg,.jpeg会由对应的.meta文件或sprites.json文件解释然后加载进游戏, 可以通过Resources.Load, SpriteTextureLoader.getSprite相关函数进行加载. 具体见模组资源概览.

NeoModLoader.utils.SpriteLoadUtils提供了

  • LoadSingleSprite(string)来加载指定系统路径下的图片文件

  • LoadSprites(string)搜寻相关联的.meta文件(解释为一个TextureImporter, 并提供了一个SpriteSheet)或sprites.json来加载路径下的图片文件

模组名/作者/简介多语言

如果要你的模组在英文环境下 模组名/作者/简介显示为英文(en),则需要添加本地化文本,相应的key为:

  1. 模组名_en

  2. 作者_en

  3. 简介_en

AssetBundle拓展

NeoModLoader.utils.AssetBundleUtils提供了加载AssetBundle文件为WrappedAssetBundle的方法(同时避免重复加载).

NeoModLoader.utils.WrappedAssetBundle提供了类似Resources.Load, Resources.LoadAll的方法来加载资源

Last updated