IPlayerData
Contrato para acceder al estado del jugador desde el código del juego.
En un mundo en línea, el servidor responde estas mismas propiedades y el código que las llama no cambia.
Namespace: OpenMon.MCE.SDK
Definición
public interface IPlayerData
{
Roster PlayerRoster { get; }
int Money { get; }
string PlayerName { get; }
int BadgeCount { get; }
}
Propiedades
PlayerRoster
El equipo actual de monstruos del jugador.
Tipo: Roster
Un Roster contiene hasta 6 objetos MonsterInstance. Accede a cada miembro por índice:
Roster roster = player.PlayerRoster;
MonsterInstance first = roster[0]; // Lead monster
int teamSize = roster.RosterSize; // How many monsters in the party
Money
El valor de dinero que guarda GlobalGameData.
Tipo: int
GlobalGameData.Money existe para la vista previa de la partida guardada, y el motor lo escribe cuando se guarda la partida. El saldo que el jugador está gastando es el de la Bag del jugador (PlayerBag.Money), así que Money puede ir por detrás de él entre guardados.
PlayerName
El nombre del asset CharacterData del jugador (el personaje que eligió el jugador).
Tipo: string
BadgeCount
La cantidad de medallas de gimnasio que el jugador ha obtenido.
Tipo: int
Ejemplo de uso
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";
}
}
No guardes PlayerRoster en caché a largo plazo. La referencia al equipo puede cambiar después de operaciones de guardado y carga. Consulta player.PlayerRoster cada vez que lo necesites.