Cómo arreglar el índice estaba fuera de rango. Debe ser no negativo y menor que el tamaño de la colección.

programación


Lo codifiqué para que muestre una tarjeta, excepto que no es así.
El código:

   public List<card> displayCard = new List<card>();
    public int displayId;

    public int id;
    public string cardName;
    public int cost;
    public int power;
    public string cardDescription;

    
    public Text nameText;   
    public Text costText;
    public Text powerText;
    public Text descriptionText;
  


    


    // Start is called before the first frame update    
    void Start()
    {
        displayCard[0] = CardDatabase.cardList[displayId];
    }

    // Update is called once per frame
    void Update()
    {
         id = displayCard[0].id;
         cardName = displayCard[0].cardName;
         cost = displayCard[0].cost;
         power = displayCard[0].power;
         cardDescription = displayCard[0].cardDescription;
       

       nameText.text = " " + cardName;
       costText.text = " " + cost;
       powerText.text = " " + power;
       descriptionText.text = " " + cardDescription;
    }
}

I have the cards on a different script

What I have tried:

Changing the card id etc. Rewriting it incase i forgot something, idk what esle to do

Solución 1

Esto es sólo una suposición del pequeño código que has mostrado aquí. Supongo que su error ocurre en el método Inicio, ya que parece ser lo primero que se llama según la descripción del problema. Utilice el depurador y coloque un punto de interrupción en la línea indicada de error para ver exactamente qué está pasando.

En la parte superior de su código, ha creado una nueva Lista (displayCard) que puede contener algunos objetos numéricos de “tarjeta” (la capacidad predeterminada). Pero en este punto está vacío y no tiene tarjetas.

En el método Inicio (y en Actualización), intenta utilizar el objeto de tarjeta en el índice 0 de displayCard, pero no hay tarjetas en él, por lo que 0 está fuera de rango. Primero debe colocar una tarjeta (el método Agregar es unidireccional) en la lista.

Nuevamente, esto es solo una suposición porque no veo ningún código que agregue un objeto de tarjeta a displayCard antes de intentar usar el índice 0. Si hay un código para hacer esto, use el depurador para descubrir qué está sucediendo. Herramientas valiosas, esos depuradores, lo dice alguien que comenzó en un sistema sin uno.

コメント

タイトルとURLをコピーしました