用途:为 Unity 游戏设计社区模组支持,覆盖资源加载系统、脚本化模组 API、模组管理器模式、分发平台,以及为已有游戏制作模组的技术。
主要能力:按复杂度划分模组层级——数据模组(替换贴图、音效、JSON/XML 配置)、资源模组(通过 Asset Bundles 添加模型、地图、物品)、脚本模组(用 Lua/脚本 API 实现自定义逻辑)、代码模组(通过 Harmony/BepInEx 修补程序集)。建议游戏从一开始至少支持前两层。
使用方式:资源加载推荐 Addressables,可在运行时用 Addressables.LoadContentCatalogAsync 加载模组目录,再用 LoadAssetAsync 按地址取资源;传统方式用 AssetBundle.LoadFromFileAsync,注意同一 bundle 不要重复加载,禁用模组时用 bundle.Unload(true)。简单数据模组可直接读取 JSON 配置,并用 FileSystemWatcher 热重载。脚本模组可用 MoonSharp(C# 编写的 Lua 解释器)注册安全 API,如 SpawnEntity、GetPlayerHealth、ShowMessage、RegisterEvent。模组管理器负责发现、校验、加载、卸载与依赖排序,模组清单包含 id、名称、版本、作者、依赖、游戏版本范围、入口点与资源路径。Steam 创意工坊可用 Steamworks.NET 或 Facepunch.Steamworks 实现上传、订阅、下载与加载。
适用场景:为 Unity 游戏添加模组支持,或为已有游戏编写 Harmony 补丁。
限制与安全:不要向 Lua 暴露 System.IO、HTTP 或 socket API;设置指令数上限(如 script.Options.InstructionLimit = 100000);限制表大小并监控内存;校验注册类型。若游戏计划支持 Harmony 模组,应避免激进代码混淆并保持方法签名稳定。具体收费、价格与平台支持情况资料未提供。