【解決方法】インデックスの修正方法が範囲外でした。 負ではなく、コレクションのサイズより小さくなければなりません。


カードを表示するようにコーディングしましたが、カードは表示されません。
コード:

   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

解決策 1

これは、ここで示した小さなコードからの単なる推測です。 問題の説明によると、メソッド Start が最初に呼び出されるように見えるため、エラーがメソッド Start で発生すると思います。 デバッガーを使用して、エラーが示された行にブレークポイントを設定して、何が起こっているかを正確に確認します。

コードの先頭で、いくつかの「カード」オブジェクト (デフォルトの容量) を保持できる新しいリスト (displayCard) を作成しました。 ただし、この時点では空であり、カードは入っていません。

Start メソッド (および Update メソッド) で、displayCard のインデックス 0 にあるカード オブジェクトを使用しようとしましたが、その中にカードがないため、0 は範囲外です。 最初にカードをリストに追加する必要があります (追加方法は一方向です)。

インデックス 0 を使用する前に、displayCard にカード オブジェクトを追加するコードがないため、これも単なる推測です。これを行うコードがある場合は、デバッガを使用して何が起こっているかを調べてください。 貴重なツールであるデバッガーは、それを持たずにシステムを使い始めた人から譲り受けたものです。

コメント

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