2016-06-11 9 views
0

Ich arbeite an einer Brute-Force-Problemumgehung für einen Fehler in meinem Programm, weil es keine Möglichkeit gibt, die im Editor zugewiesenen Werte zu aktualisieren. Wie auch immer, ich versuche Bilder (Sprites) in ein Array zu laden, das ein anderes Skript verwenden kann. Es scheint jedoch nicht zu funktionieren und ich bin mir nicht sicher warum. Ich habe so etwas noch nie gemacht, also habe ich wahrscheinlich einen Fehler gemacht. Der Fehler besagt, dass pics1 [i] außerhalb des zulässigen Bereichs liegt. Hier ist mein Code unten:Leeres Array in Unity?

using UnityEngine; 
using System.Collections; 

public class Imageblock : MonoBehaviour { 

public Sprite[] pics1; 
public static Sprite[,] allPics; 

// Use this for initialization 
void Start() { 
    pics1 = Resources.LoadAll<Sprite> ("Dock Pics"); 
    allPics = new Sprite[100,100]; 
    for (int i = 0; pics1 [i] != null; i++) { 
     allPics [1,i] = pics1 [i]; 
    } 
} 

}

+0

Was ist das Problem mit "Aktualisieren von Werten im Inspektor"? Öffentliche Felder werden serialisiert und daher vom Inspector initialisiert und auch vom Inspektor überschrieben, wenn Sie sie von dort aus ändern, aber es ist trotzdem möglich, sie während der Laufzeit vom Code zu überschreiben. – Xarbrough

+0

Ich habe mehrere Instanzen des gleichen Codes, also brauche ich es, um Daten aus dem Inspektor in den Code zu ziehen, nicht bei der Initialisierung. – MechaScoots

Antwort

0

Ändern Sie for-Schleife dazu:

for(int i = 0; i < pics1.Length; i++) 

, die vielleicht schon den Trick. Wenn Sie pics1 [900] überprüfen, wird NULL nicht zurückgegeben, aber es wird die IndexOutOfRangeException ausgelöst, weshalb Sie vorher nach vorhandenen Indizes suchen möchten. Natürlich kann pic1 [i] innerhalb des gültigen Bereichs null zurückgeben, wenn der Index definiert ist, aber kein Element zugewiesen wurde.

+0

Das hat funktioniert! Vielen Dank! Obwohl ich jetzt einen Fehler erhalte, wenn ich versuche, Dinge mit dem Array zu tun. – MechaScoots

+0

IndexOutOfRangeException: Array-Index liegt außerhalb des zulässigen Bereichs. (wrapper stelemref) Objekt: stelemref (Objekt, intptr, Objekt) icontap.Update() (bei Assets/icontap.cs: 38) ist der Fehler. – MechaScoots

+0

Er bezieht sich auf diese: für (! Int i = 0; i MechaScoots

Verwandte Themen