跳到主要内容

创建怪物

本指南涵盖在 MCE 中创建和配置怪物物种所需了解的一切。我们将深入讲解 MonsterEntry ScriptableObject,包括形态、变体和高级配置。

MonsterEntry 概览​

MCE 中的每个怪物物种都由一个 MonsterEntry ScriptableObject 定义。它是物种的权威数据定义 —— 包含基础能力值、属性、特性、可学习的招式、进化路径和视觉资源。

MonsterEntry 代表_物种_(例如 “Flameleon”),而 MonsterInstance 代表某个具体的_个体_(例如“玩家那只带有这些具体个体值、努力值、性格和招式的 25 级 Flameleon”)。

Monster Creator Wizard

向导依照与本指南相同的六个步骤、相同的顺序进行 —— 基本信息、基础 能力值、特性与招式、进化、美术,以及在任何内容写入磁盘之前的最终审查。 直到最后一步才会创建任何内容,所以你可以放弃一个误开的物种,而不会 留下孤立的资产。

创建 MonsterEntry​

使用向导(推荐)​

创建怪物最快的方式是向导:打开 OpenMon Hub(Tools > MCE > OpenMon Hub)→ Art Studio 选项卡 → Monster Creator。

关于向导的分步演练,参见第一只怪物指南。

手动创建​

  1. 在 Project 窗口中右键点击:Create > MCE > Monster Database > Monster。
  2. 用你的物种名称命名该资产(例如 Flameleon)。
  3. 选中它,并在 Inspector 中配置所有字段。

MonsterEntry 结构​

MonsterEntry 是物种级别的容器。实际的能力值、属性和视觉数据位于按形态划分的条目中。

物种级字段(MonsterEntry)​

字段类型说明
DexNumberuint唯一的全国图鉴编号
AvailableFormsList<Form>该物种可以拥有的所有形态
DataByFormList<DataByFormEntry>私有的按形态配置数据(索引 0 = 基础形态)

按形态字段(DataByFormEntry)​

私有 DataByForm 列表中的每个形态都保存下列内容的自己的完整副本;形态之间没有继承。该列表与 AvailableForms 保持同步,你可以用 monsterEntry[form] 读取一个条目。

基本信息​

字段类型说明
CatchRatebyte基础捕获率(0-255)。越低越难捕捉
BaseExperienceuint被击败时给予的经验值
GrowthRateGrowthRate经验曲线:Fast、MediumFast、MediumSlow、Slow、Erratic、Fluctuating

属性​

字段类型说明
FirstTypeMonsterType主属性(必填)
SecondTypeMonsterType副属性(单属性则设为 None)

基础能力值​

存储为以 Stat 枚举为键的字典。通过 Inspector 配置。

字段类型说明
BaseStatsSerializableDictionary<Stat, byte>能力 → 数值 字典

努力值产出​

击败该物种时,胜利者获得哪些努力值?

字段类型说明
EVYieldList<StatByteValuePair>每项能力的努力值奖励

特性​

字段类型说明
AbilitiesList<Ability>普通特性(向导最多填写两个)
HiddenAbilitiesList<Ability>隐藏特性

性别与繁殖​

字段类型说明
HasBinaryGenderbool是否存在雄雌之分
FemaleRatiofloat为雌性的几率(0-1)
EggGroupsList<EggGroup>繁殖兼容组
EggCyclesbyte孵化所需步数(乘以一个基础步数)

DataByFormEntry 结构​

MCE 支持每个物种有多个形态(例如阿罗拉形态、Mega 形态、季节变体)。每个形态都可以覆盖基础物种的任意数据或全部数据。

MonsterEntry 上私有的 DataByForm 列表为每个形态保存一个条目:

[Serializable]
public class DataByFormEntry
{
public Form Form; // The form identifier
public MonsterType FirstType; // Type 1
public MonsterType SecondType; // Type 2
public SerializableDictionary<Stat, byte> BaseStats; // Dictionary keyed by Stat enum
public List<Ability> Abilities; // Regular abilities of this form
public List<Ability> HiddenAbilities; // Hidden abilities of this form
public Material Front; // Battle visuals (materials)
public Material Back;
// ... plus male/shiny material overrides, evolutions, breeding data
}

设置形态​

  1. 创建一个 Form ScriptableObject:Create > MCE > Monster Database > Form。
  2. 为它起一个描述性名称(例如 MegaFlameleon、AlolanDiglett)。
  3. 把它添加到你的 MonsterEntry 的 AvailableForms 列表中。DataByForm 中会出现一个对应的 DataByFormEntry。
  4. 填写该条目。若想从现有形态而不是从零开始,请使用 MonsterEntry 上的 Copy Data From Form To Form 按钮(当物种有多个形态时显示),然后只修改不同的部分。
基础形态

AvailableForms 的第一个形态就是基础形态(GetFirstAvailableForm())。不要把闪光形态添加到列表中:闪光版本是通过 Form 的 ShinyVersion 字段从基础形态派生的。

形态与变体​

MCE 支持几种常见的形态模式:

模式实现
Mega 进化一个被标记为战斗形态的 Form(IsCombatForm,CombatFormType = Mega),带有自己的 DataByFormEntry(提升的能力值、特殊精灵)。基础形态的 MegaEvolutions 字典把所需的 Item 映射到 Mega Form;由战斗的 BattleManagerMegaModule 执行变化。
地区变体带有自己的 DataByFormEntry(不同的属性、能力值、精灵)的 Form。遭遇条目通过其 Form Calculator 选择出现哪个形态(SingleFormEncounter 总是返回一个形态)。
性别差异启用 HasBinaryGender 的一个形态条目、FemaleRatio,以及材质和图标的雄性变体(FrontMale、BackMale、IconMale 等)。
仅限战斗的形态战斗形态(CombatFormType 为 Mega、Max 或 Other)。当引擎为赠礼或对战塔对手随机选择形态时,会把它们排除在外。

其他任何情况 —— 例如季节形态 —— 都只是一个普通的额外 Form;怪物何时采用它,由你自己的图或脚本决定。

进化链​

每个按形态条目(DataByFormEntry)都有一个由 EvolutionData 条目组成的 Evolutions 列表。大多数内置类型派生自 TargetSpeciesAndFormEvolutionData,它携带进化目标:

[Serializable]
public abstract class TargetSpeciesAndFormEvolutionData : EvolutionData
{
[SerializeField] protected MonsterEntry TargetSpecies; // What it evolves into
[SerializeField] protected Form TargetForm; // Form it evolves into
[SerializeField] protected bool KeepShinyIfItIs; // Preserve shininess
// Trigger conditions are defined by the concrete class
}

进化类型是通过 [SerializeReference] 多态序列化的普通 [Serializable] 类 —— 它们不是独立的 ScriptableObject 资产。你在 Inspector 中选择合适的进化类型(例如 EvolveByLevel)并配置其参数(例如 TargetLevel = 16)。

关于全部 37 种受支持的类型,参见进化指南。

精灵与材质​

每只怪物都需要视觉资源。战斗用的面部是 Material(MCE 的战斗模型通过翻页动画着色器绘制精灵);图标和世界帧是普通的 Unity Sprite 引用:

资源字段用途备注
FrontFront(Material)战斗(对手视角)像素画,点过滤
BackBack(Material)战斗(玩家视角)像素画,点过滤
IconIcon(Sprite)菜单、PC、队伍小图标,通常为 32x32
OverworldWorldIdleSprite*、WorldWalkingSprite*(Sprite)跟随者系统每个方向一套
闪光变体FrontShiny、BackShiny、IconShiny 等上述全部重新着色的版本

像素画的导入设置​

对所有怪物精灵,使用以下导入设置:

  1. Texture Type:Sprite (2D and UI)
  2. Sprite Mode:Single(如果使用精灵图集则为 Multiple)
  3. Pixels Per Unit:与你游戏的图块大小匹配(通常为 16 或 32)
  4. Filter Mode:Point (no filter)
  5. Compression:None
  6. Max Size:保持实际分辨率
过滤模式

使用 Point 以外的任何过滤模式都会让像素画显得模糊。这是设置怪物精灵时最常见的视觉问题。

测试你的怪物​

创建 MonsterEntry 之后:

  1. Database Browser —— 打开 OpenMon Hub → Database 选项卡 → Database Browser,按名称或图鉴编号搜索你的怪物。
  2. Validate Database —— 打开 OpenMon Hub → Database 选项卡 → Validate Database 检查是否缺少引用。
  3. 游戏内图鉴 —— 启动游戏,在 MonsterDex 中查看你的怪物条目。
  4. 野生遭遇 —— 把怪物添加到 WildEncountersSet,然后在野外遇到它。

批量创建​

要一次创建大量怪物,你有几种选择:

  • Essentials Importer(Indie、Pro、Source 和 Studio 版本)—— 直接从 Pokemon Essentials 的 PBS 数据导入物种。
  • 脚本化创建(Source 和 Studio 版本)—— 编写以编程方式创建 MonsterEntry SO 的编辑器脚本。

最佳实践​

  1. 为单个怪物使用向导。它会验证你的输入并捕获常见错误。
  2. 保持图鉴编号唯一。重复会导致查找失败。
  3. 设置合理的能力值范围。使用第一只怪物中的 BST 指南。
  4. 始终分配精灵。缺失的精灵在战斗和菜单中会显示为粉色/品红色。
  5. 端到端测试进化链。确保链中的每个物种都存在于数据库中。
  6. 谨慎使用形态。每个形态都会因精灵资产而增加内存开销。