跳到主要内容

SDK API 概览

MCE SDK 提供了一个清晰、稳定的公共 API 接口面,用于从你的游戏代码与引擎交互。所有 SDK 接口都位于 OpenMon.MCE.SDK 命名空间中。公共 SDK API 随 Indie、Pro、Source 和 Studio 版提供;Starter 版的 API 是封闭的。

sdk overview

如果它不在这四个接口之中,就不属于 SDK 契约的一部分。

设计原则​

  • 基于接口:所有公共 API 都以接口而非具体类的形式公开。这使得实现可以演进,而不会破坏你的代码。
  • 以读为主:大多数 SDK 方法都是只读查询。修改通过引擎的内部系统进行(CommandGraph、Inspector 等)。
  • 事件驱动:关键的状态变化通过 C# 事件传达。
  • 由 Zenject 注入:通过 [Inject] 特性访问 SDK 接口。

入口点​

主入口点是 IMonsterCaptureEngine:

[Inject] private IMonsterCaptureEngine engine;

通过这个接口,你可以访问所有子系统:

属性接口用途
engine.DatabaseIMonsterDatabase查询怪物、招式、道具、属性
engine.BattleIBattleSystem战斗状态与事件
engine.PlayerIPlayerData玩家队伍、金钱、名字、徽章
engine.SaveSystemISaveSystem存档/读档操作
engine.Versionstring引擎版本字符串

快速示例​

using OpenMon.MCE.SDK;
using Zenject;

public class GameDashboard : MonoBehaviour
{
[Inject] private IMonsterCaptureEngine engine;

private void Start()
{
// Query database
var allMonsters = engine.Database.GetAllMonsters();
Debug.Log($"Database has {allMonsters.Count} monster species");

// Check player state
Debug.Log($"Player: {engine.Player.PlayerName}");
Debug.Log($"Team size: {engine.Player.PlayerRoster.RosterSize}");
Debug.Log($"Money: {engine.Player.Money}");
Debug.Log($"Badges: {engine.Player.BadgeCount}");

// Listen to battle events
engine.Battle.OnBattleStarted += () => Debug.Log("Battle!");
engine.Battle.OnBattleEnded += (won) => Debug.Log($"Won: {won}");

// Save/load
if (engine.SaveSystem.HasSaveData(0))
Debug.Log("Save slot 0 has data");
}
}

数据库和玩家接口读取的是引擎的实时状态。战斗和存档接口(engine.Battle、engine.SaveSystem)是依赖尚未接通的引擎钩子的外观类:在依赖它们的事件之前,请先阅读 IBattleSystem 和 ISaveSystem 中的说明。

各接口的详细文档请参阅各自的 API 页面。