Duda Básica Unity C#

Kaos

Buenas! Tengo una duda un poco básica (de conceptos fundamentales) con C# en Unity. El caso que no sé cómo buscar ayuda acerca de cómo hacerlo y os lo planteo a vosotros.

Tengo lo siguiente:

	
[System.Serializable]
	public class Cards
	{
		public List<Card> MyDeck;
		public List<Card> MyCards;
	}

[System.Serializable]
public class Card {
	public int id;
	public string cardName;
	public string description;
	public string faction;
	public string type;
	public string rarity;
	public string ap;
	public string hp;
	public string cd;
}

Y me gustaría crear un archivo a parte para Card. El que tengo es así:

using UnityEngine;
using System.Collections;

[System.Serializable]
public class Card : MonoBehaviour {
	public int id;
	public string cardName;
	public string description;
	public string faction;
	public string type;
	public string rarity;
	public string ap;
	public string hp;
	public string cd;
}

El caso que, si pongo todo el código corrido, funciona. En el momento que lo trato de llamar en plan:

public Card card;

Deja de rular...
No debería ser lo mismo una cosa que otra?

Kaos

El problema es que no se pueden serializar MonoBehaviours...

1 respuesta
7 días después
crazyguy

#2 Los MonoBehaviours se pueden serializar sin problema

El problema no es de Unity o C#, es más bien estructura general del código. Si tienes dos clases en el mismo espacio de nombres que se llaman igual, ¿a cuál estarás referenciando? Tiene pinta de ser una mala elección de nombres, así que tiene fácil solución ;)

Sin saber mucho más del problema, lo que llamas "Card" en el primer caso lo convertiría en una estructura y lo llamaría "CardData". El MonoBehaviour "Card" pasaría a ser algo así:

public class Card : MonoBehaviour
{
[Tooltip("Attributes of the card")]
[SerializeField] protected CardData cardData;

// ...
}

Ya se encarga Unity de sacar en el Inspector los campos de cardData para que los modifiques

1 respuesta
Kaos

#3 Exacto. Así lo he hecho al final.

Dentro de Card he metido todo :)

Gracias!

Usuarios habituales

  • Kaos
  • crazyguy