メインコンテンツまでスキップ

IBattleSystem

ゲームコードからバトルシステムを操作するためのコントラクトです。バトル状態のチェックとイベント購読を提供します。

名前空間: OpenMon.MCE.SDK

定義

public interface IBattleSystem
{
bool IsInBattle { get; }
event Action OnBattleStarted;
event Action<bool> OnBattleEnded;
}

プロパティ

IsInBattle

バトルが現在進行中かどうか。

: bool

バトルシーンがロードされた瞬間から、バトル結果が処理されフィールドマップが再開されるまで true を返します。

イベント

OnBattleStarted

バトル開始時に発火します。バトルシーンがロードされ、BattleManager が初期化された後に呼ばれます。

シグネチャ: event Action OnBattleStarted

OnBattleEnded

バトル終了時に発火します。バトルシーンがアンロードされる前に呼ばれます。

シグネチャ: event Action<bool> OnBattleEnded

パラメータ説明
playerWonboolプレイヤーが勝利した場合 true、敗北・逃走・倒された場合 false

使用例

using OpenMon.MCE.SDK;
using Zenject;

public class BattleTracker : MonoBehaviour
{
[Inject] private IBattleSystem battle;

private int totalBattles;
private int wins;

private void OnEnable()
{
battle.OnBattleStarted += OnBattleStart;
battle.OnBattleEnded += OnBattleEnd;
}

private void OnDisable()
{
battle.OnBattleStarted -= OnBattleStart;
battle.OnBattleEnded -= OnBattleEnd;
}

private void OnBattleStart()
{
totalBattles++;
}

private void OnBattleEnd(bool playerWon)
{
if (playerWon) wins++;
Debug.Log($"Record: {wins}/{totalBattles}");
}

private void Update()
{
// バトル中は特定のUIを無効化
if (battle.IsInBattle)
{
// フィールドマップHUD要素を非表示
}
}
}
メモリ管理

メモリリークを防ぐため、OnDisable() または OnDestroy() で必ずイベントの購読を解除してください。これはシーン遷移中に破棄される可能性のある MonoBehaviour では特に重要です。