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

模组依赖

NML中模组依赖分为硬依赖和软依赖两种

硬依赖

也称必需依赖, 只有当所有硬依赖的模组均加载了才会被加载.

硬依赖在mod.json中声明硬依赖于某些模组, 而后在项目文件中添加对硬依赖的模组的引用即可(让IDE给出正常的代码分析).

软依赖

也称可选依赖, 当软依赖模组不存在时也能被加载. 如果带软依赖模组时编译失败后, 会尝试取消依赖于所有软依赖模组后再次编译.

为了在软依赖的模组缺失时仍能正常编译运行, NML采用宏来控制编译.

当软依赖模组存在时, NML在编译时会加入软依赖模组的ID作为宏, 不存在时则不会添加.

下面的代码是在示例模组(软依赖于"一米_中文名")中, 根据"一米_中文名"模组是否存在来选择添加命名器的方式

// 用宏包裹所有"可选"依赖. "一米_中文名"是这个可选依赖的模组id. Chinese_Name是模组"一米_中文名"提供的命名空间.
using System.IO;
#if 一米_中文名
using Chinese_Name;
#endif

namespace ExampleMod.Content;

internal static class ExampleNameGenerators
{
    public static void init()
    {
        // 如果模组"一米_中文名"被编译, 初始化中文名生成器. 否则, 初始化原版名字生成器.
#if 一米_中文名
        init_chinese_name_generators();
#else
        init_vanilla_name_generators();
#endif
    }
#if 一米_中文名
    private static void init_chinese_name_generators()
    {
        // 因为下面的方法和类是由模组"一米_中文名"提供的, 你应该用宏包裹它们.
        WordLibraryManager.SubmitDirectoryToLoad(Path.Combine(ExampleModMain.Instance.GetDeclaration().FolderPath,
            "additional_resources/word_libraries"));
        CN_NameGeneratorLibrary.SubmitDirectoryToLoad(Path.Combine(ExampleModMain.Instance.GetDeclaration().FolderPath,
            "additional_resources/name_generators"));
    }
#endif
    private static void init_vanilla_name_generators()
    {
        // 暂时没有内容
    }
}

在IDE中, 你也需要添加对依赖模组的引用, 除此之外, 你还需要在项目文件中添加模组ID为预定义常量(这一行都是针对你要使用完整IDE功能的情况)

如何添加对依赖模组的引用

DLL引用

引用在worldbox_Data/StreamingAssets/mods/NML/CompiledMods中, 名为对应模组ID的.dll文件

项目引用

如果发布的依赖模组中包含了项目文件, 可以直接引用依赖模组的项目文件.

Previous模组设置Next多语言文本

Last updated 1 year ago

🤔
👍
相关示例代码
mod.json配置示例
预定义常量配置示例
相关示例