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

创建一个模组

Previous预先准备Next常用NML功能

Last updated 1 year ago

两个可选项:

  1. 从Mod模板创建

  2. 从空文件夹创建

从Mod模板创建

如果你会使用Git并且有配置SSH Key后的Github的话, 在GamePath/Mods下执行即可

git clone git@github.com:WorldBoxOpenMods/ModTemplate.git 模组名

如果你不会的话, 下载, 并解压到GamePath/Mods文件夹下

应该得到类似于这样的文件夹结构, 注意目录

有几个文件必须要修改

  1. mod.json 将"name"的值改为模组名, "author"的值改为作者名

  2. ModClass.cs 将"CHANGEME"改为你的模组的命名空间, 尽量保证不要和别的模组重复

然后在ModClass.cs文件中的OnModLoad函数中初始化你的模组. BasicMod继承自MonoBehaviour, 你可以实现MonoBehaviour所有其他的函数.

从空文件夹创建

在GamePath/Mods文件夹下创建一个文件夹, 在里面放一个下面所示的mod.json和Main.cs文件, 其中的中文均需要修改

// mod.json
{
    "name": "模组名",
    "author": "作者名",
    "version": "版本号",
    "description": "模组描述"
}
// Main.cs
using UnityEngine;
using NeoModLoader.api;
using NeoModLoader.services;
namespace 命名空间名;

public class ModClass : IMod, MonoBehaviour
{
    private ModDeclare _declare;
    private GameObject _gameObject;
    
    public ModDeclare GetDeclaration()
    {
        return _declare;
    }
    public GameObject GetGameObject()
    {
        return _gameObject;
    }
    public string GetUrl()
    {
        return "你模组的网站URL, 没有的话可以填仓库URL, 也可以填创意工坊物品页面, 也可以乱填";
    }
    public void OnLoad(ModDeclare pModDecl, GameObject pGameObject)
    {
        _declare = pModDecl;
        _gameObject = pGameObject;
        // 加载你的模组内容, 这个函数的调用甚至早于第一次Awake
        // OnLoad -> Awake -> OnEnable -> Start -> Update
        LogService.LogInfo($"[{pModDecl.Name}]: Hello World!");
    }
}

到这里一个最简单的模组已经完成.

注意

对于一个实现IMod的模组(包括继承了BasicMod的模组), 函数调用顺序会是OnLoad(OnModLoad)->Awake->OnEnable->Start->Update->Update->...->Update

加载运行模组

如果没有出错的话, 应该能够在游戏控制台里找到

[NML]: [模组名]: Hello World!

除此之外, 在NML的模组列表里也应该能够找到你的模组

😅
😎
压缩包