0
votes

Comment réparer NullReferenceException lors de l'initialisation du tableau d'une classe d'un autre script dans l'unité? Je ne suis pas capable d'initialiser le tableau via le script

J'ai une classe sérialisable, je souhaite créer son tableau dans un autre script xxx pré>

ici, j'ai une autre classe qui crée et initialise une gamme de questions. P>

 public class Initialize : MonoBehaviour
 {
     Question[] questions;
     void Start()
     {
         questions = new Question[1];
         StartCoroutine(InitializeArray());
     }

    IEnumerator InitializeArray()
    {
        yield return null;
        questions[0].fact = "First Question";
    }
}


3 Réponses :


1
votes

Lorsque vous appelez

questions = new[] { new Question() };


0 commentaires

2
votes

Lorsque vous Déclarez un tableau de type de référence , chaque élément est initialisé en tant que null. C'est pourquoi vous obtenez une nullreferenceException lorsque vous essayez d'accéder à la propriété de l'un des éléments de tableau.

Pour éviter cela, vous pouvez initialiser le tableau avec le (s) type de référence initialisé: P>

Question[] questions;
questions = new Question[] 
{
    new Question
    {
        fact = "First Question"
    },
    new Question
    {
        fact = "Second Question"
    }
};


7 commentaires

Pouvez-vous spécifier comment j'initialiserais un tableau de 2 éléments, votre code ne fonctionne pas. Pouvez-vous me donner du code pour initialiser un tableau de deux éléments?


@Junedkhanmomin J'ai mis à jour la réponse à inclure un exemple d'initialisation de la matrice avec plusieurs éléments


Cela fonctionne, merci, n'y a-t-il pas une méthode simple pour le faire, comme pour les grandes tableaux, ce sera un moyen très fastidieux d'initialiser la matrice.


questions [0] = nouvelle question (); Si vous aviez un tableau plus grand, vous pouvez tout initialiser à l'aide d'une boucle: pour (int i = 0; i


@ Pinkfloydx33, il n'y avait pas besoin de votre commentaire. La réponse déjà acceptée est-ce que voir ici: Stackoverflow.com/a/54072338/8304176


Au moment de la rédaction de mon commentaire, pas de réponse initialisée via une boucle et c'était en réponse directe à votre commentaire précédent "N'y a-t-il pas une méthode simple ..."


En outre, rien dans la question initiale n'a indiqué que le tableau n'était nécessaire que toute sorte d'initialisation de boucle



0
votes

meilleure façon d'initialiser la matrice de votre propre classe personnalisée: xxx

S'il y a plusieurs éléments à initialiser, nous pouvons utiliser une boucle comme: xxx


1 commentaires

@Devnull, c'est la façon la plus simple que j'ai trouvée.