[RESOLU] [MY-AL] Array / tableaux out of range

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
riobusor66
Messages : 6
Inscription : 04 Avr 2018 23:24

[RESOLU] [MY-AL] Array / tableaux out of range

Message par riobusor66 » 12 Juil 2018 01:12

Bonjour, sa fait des heures que j'essaye de régler mon problème mais rien ne marche..

J'utilise une coroutine pour utiliser une fonction qui génère des arbre, le problème est qu’après 2 arbre j’obtiens cette erreur:
IndexOutOfRangeException: Array index is out of range.
PlanetGenerator+<GenerateTree>c__Iterator3.MoveNext () (at Assets/Scripts/PlanetGenerator.cs:281)
UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) (at C:/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)
et voici le code:

Code : Tout sélectionner

private IEnumerator GenerateTree(Vector3 sCoord, int[,] coordTop)
    {
        int[] pos = new int[2] { 2, 2 };

        for (int i = 0; i < sliderPSize.value - 4; i++)
        {
            for (int j = 0; j < sliderPSize.value - 4; j++)
            {
                if (pos[1] < sliderPSize.value - 4)
                {
                    Debug.Log("pos[0]: " + pos[0] + " | coordTop[pos[i], pos[j]: " + coordTop[pos[i], pos[j]] + " | pos[1]: " + pos[1] + " | i: " + i + " | j:" + j);
                    TreeGenerator(new Vector3(pos[0] + sCoord.x, coordTop[pos[i], pos[j]] + sliderPSize.value + sCoord.y + 1, pos[1] + sCoord.z));
                    pos[0] += Random.Range(4, 9);
                    if (pos[0] > sliderPSize.value - 4)
                    {
                        pos[0] = Random.Range(2, 5);
                        pos[1] += Random.Range(4, 9);
                    }
                }
                Debug.Log("pos[0]: " + pos[0] + " | coordTop[pos[i], pos[j]: " + coordTop[pos[i], pos[j]] + " | pos[1]: " + pos[1] + " | i: " + i + " | j:" + j);
                yield return new WaitForSeconds(0.01f);
            }
        }
    }
La ligne 281 est TreeGenerator(...

Pour les valeur des variables:
float sliderPSize = 20 (Même en augmentant celle si sa change rien)
Vector3 SCoord = (0, 0, 0)
int[,] coordTop[(int)sliderPSize.value - 2, (int)sliderPSize.value - 2]

Merci d'avance pour votre aide
Dernière édition par riobusor66 le 12 Juil 2018 15:22, édité 1 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY-AL] Problème dans mes tableau

Message par boubouk50 » 12 Juil 2018 09:16

salut, je pense que cela vient de pos[ i], pos[j] dans la ligne.
pos est un tableau de 2 éléments, i et j vont de 0 à sliderPSize.value - 4. Il se peut alors que i et j soient supérieurs à 1 et donc que tu essaies d'accéder à un élément de pos inexistant.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

riobusor66
Messages : 6
Inscription : 04 Avr 2018 23:24

Re: [Résolue] [MY-AL] Problème dans mes tableau

Message par riobusor66 » 12 Juil 2018 15:23

Merci beaucoup sa a marché. :-D

Répondre

Revenir vers « (C#) CSharp »