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

IPlayerData

ゲームコードからプレイヤーの状態にアクセスするためのコントラクトです。

iplayer data

オンラインのワールドでは、同じプロパティにサーバーが応答し、呼び出し側のコードは変わりません。

名前空間: OpenMon.MCE.SDK

定義​

public interface IPlayerData
{
Roster PlayerRoster { get; }
int Money { get; }
string PlayerName { get; }
int BadgeCount { get; }
}

プロパティ​

PlayerRoster​

プレイヤーの現在のモンスターのパーティ。

型: Roster

Roster は最大6体の MonsterInstance オブジェクトを保持します。個々のメンバーにはインデックスでアクセスします:

Roster roster = player.PlayerRoster;
MonsterInstance first = roster[0]; // Lead monster
int teamSize = roster.RosterSize; // How many monsters in the party

Money​

GlobalGameData が保持する所持金の値。

型: int

保存された値であり、ライブの残高ではありません

GlobalGameData.Money はセーブデータのプレビュー用に存在し、エンジンはゲームをセーブしたときにこれを書き込みます。プレイヤーが実際に使っている残高は、プレイヤーの Bag(PlayerBag.Money)にあるものです。そのためセーブとセーブの間は、Money がそれより遅れることがあります。

PlayerName​

プレイヤーの CharacterData アセットの名前(プレイヤーが選んだキャラクター)。

型: string

BadgeCount​

プレイヤーが獲得したジムバッジの数。

型: int

使用例​

using OpenMon.MCE.SDK;
using Zenject;

public class PlayerHUD : MonoBehaviour
{
// Only IMonsterCaptureEngine is bound in DI; reach subsystems through it.
[Inject] private IMonsterCaptureEngine engine;

private IPlayerData player;

private void Awake()
{
player = engine.Player;
}

[SerializeField] private Text nameLabel;
[SerializeField] private Text moneyLabel;
[SerializeField] private Text badgeLabel;
[SerializeField] private Text teamLabel;

private void Update()
{
nameLabel.text = player.PlayerName;
moneyLabel.text = $"${player.Money:N0}";
badgeLabel.text = $"Badges: {player.BadgeCount}/8";

var roster = player.PlayerRoster;
teamLabel.text = $"Team: {roster.RosterSize}/6";
}
}
古い参照

PlayerRoster を長期間キャッシュしないでください。セーブ/ロード操作の後に、パーティの参照が変わることがあります。必要になるたびに player.PlayerRoster を参照してください。