Saltar al contenido principal

IPlayerData

Contrato para acceder al estado del jugador desde el código del juego.

iplayer data

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

Un valor guardado, no el saldo en vivo

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";
}
}
Referencias obsoletas

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.