模组开发指南

学习如何使用 tModLoader 的 C# API 创建精彩的 Terraria 模组

20 分钟阅读 开发 中级

前置条件

开发环境

  • • Visual Studio 2022(推荐)
  • • JetBrains Rider
  • • Visual Studio Code 配合 C# 扩展
  • • .NET 6.0 SDK 或更高版本

知识要求

  • • 基础 C# 编程
  • • 面向对象概念
  • • 熟悉 Terraria 游戏玩法
  • • 基本的游戏开发理解

开发环境设置

1 安装开发工具

选择你喜欢的 C# 开发环境:

Visual Studio 2022

功能全面的 IDE,调试体验出色

下载 →

JetBrains Rider

跨平台 IDE,功能先进

下载 →

VS Code

轻量编辑器,搭配 C# 扩展使用

下载 →

2 创建你的第一个模组

使用 tModLoader 的内置工具创建模组模板:

  1. 启动 tModLoader,前往"创意工坊" → "开发模组"
  2. 点击"创建模组"并输入你的模组详情
  3. 选择一个唯一的模组名称(不含空格或特殊字符)
  4. 点击"创建"生成模组模板

这将在你的 ModSources 文件夹中创建一个包含所有必要文件的基本模组结构。

基本模组结构

每个 tModLoader 模组都遵循标准结构:

YourModName/
├── build.txt          # 模组元数据和依赖项
├── description.txt    # 浏览器中的模组描述
├── icon.png          # 模组图标(推荐 64x64)
├── YourModName.cs    # 主模组类
├── Items/            # 自定义物品
├── NPCs/             # 自定义 NPC
├── Projectiles/      # 自定义弹幕
├── Tiles/            # 自定义图块/方块
├── Walls/            # 自定义墙壁
├── Buffs/            # 自定义增益/减益
└── Sounds/           # 自定义音频文件

示例模组类

以下是基本的模组类结构:

using Terraria.ModLoader;

namespace YourModName
{
    public class YourModName : Mod
    {
        public override void PostSetupContent()
        {
            // Code that runs after all mods are loaded
        }

        public override void PostUpdateInput()
        {
            // Code that runs every frame
        }

        public override void Unload()
        {
            // Cleanup code when mod is unloaded
        }
    }
}

build.txt 配置

build.txt 文件包含关于你的模组的重要元数据:

displayName = Your Mod Name
author = Your Name
version = 1.0.0
modReferences =
buildIgnore = *.csproj, *.user, *.suo, bin/, obj/, .vs/
homepage = https://github.com/yourusername/yourmod
description = A brief description of what your mod does

创建你的第一个物品

让我们创建一把简单的自定义剑作为你的第一个物品:

创建物品类

创建一个新文件:Items/ExampleSword.cs

using Terraria;
using Terraria.ID;
using Terraria.ModLoader;

namespace YourModName.Items
{
    public class ExampleSword : ModItem
    {
        public override void SetDefaults()
        {
            // Basic item properties
            Item.damage = 50;
            Item.DamageType = DamageClass.Melee;
            Item.width = 40;
            Item.height = 40;
            Item.useTime = 20;
            Item.useAnimation = 20;
            Item.useStyle = ItemUseStyleID.Swing;
            Item.knockBack = 6;
            Item.value = Item.buyPrice(gold: 1);
            Item.rare = ItemRarityID.Green;
            Item.UseSound = SoundID.Item1;
            Item.autoReuse = true;
        }

        public override void AddRecipes()
        {
            Recipe recipe = CreateRecipe();
            recipe.AddIngredient(ItemID.IronBar, 10);
            recipe.AddIngredient(ItemID.Wood, 5);
            recipe.AddTile(TileID.Anvils);
            recipe.Register();
        }
    }
}

添加物品纹理

创建一个 40x40 像素的 PNG 图片并保存为:

Items/ExampleSword.png

文件名必须与你的类名完全匹配。

构建和测试你的模组

构建 + 重载工作流

tModLoader 强大的开发功能允许你即时测试更改:

  1. 在 tModLoader 中,前往"创意工坊" → "开发模组"
  2. 在列表中找到你的模组,点击"构建 + 重载"
  3. 等待编译完成
  4. 你的模组将自动重载并应用更改
  5. 在游戏中测试你的新物品

小贴士:在开发过程中频繁使用"构建 + 重载"。这比重启游戏快得多!

常见构建错误

  • 缺少纹理:确保 PNG 文件与类名完全匹配
  • 编译错误:检查语法和 using 语句
  • 缺少引用:验证 ModLoader 引用是否正确
  • Build.txt 错误:检查模组元数据格式

高级开发主题

自定义 NPC

创建敌人、城镇 NPC 和带有自定义 AI 的 Boss

了解更多 →

世界生成

添加自定义生物群落、建筑和世界特征

了解更多 →

自定义 UI

创建界面、HUD 和交互元素

了解更多 →

多人联机支持

处理网络通信和数据同步

了解更多 →

发布你的模组

发布到 Steam Workshop

  1. 确保你的模组构建没有错误
  2. 前往"创意工坊" → "开发模组"
  3. 点击你的模组旁边的"发布"
  4. 填写 Steam Workshop 表单,包括描述和标签
  5. 上传截图并设置可见性
  6. 点击"发布"使其上线

发布后几分钟内,你的模组将在模组浏览器中可用。

发布最佳实践

内容准则

  • 编写清晰详细的描述
  • 包含高质量截图
  • 发布前进行充分测试
  • 记录已知问题

技术要求

  • 没有编译错误或警告
  • 正确的空值检查
  • 多人联机兼容性测试
  • 性能优化

其他资源