2017-04-12 6 views
1

Machen Sie ein Spiel in Einheit und ich verwende diesen Code. Ich weiß nicht, was falsch ist und warum ändert das Sprite die Farbe nicht, wenn es instanziiert wird. Kannst du mir helfen, damit ich nicht den Verstand verliere? : D (ich auch zufällig Gameobjects bin Laichen)Zufällige Farbe aus Array für GameObject

int randomIndex = UnityEngine.Random.Range(0, arrows.Length); 
    GameObject prefab = arrows[randomIndex]; 
    GameObject clone = Instantiate(prefab, new Vector3(0.02F, 2.18F, -1), Quaternion.identity); 

    //change colors 
    colors[0] = new Color (250, 250, 250); 
    colors[1] = new Color (144, 249, 242); 
    colors[2] = new Color (20, 173, 163); 
    colors[3] = new Color (21, 129, 168); 
    colors[4] = new Color (5, 95, 127); 
    colors[5] = new Color (58, 125, 196); 
    int colorRandomIndex = UnityEngine.Random.Range(0, colors.Length); 
    SpriteRenderer renderer = clone.GetComponent<SpriteRenderer>(); 
    renderer.color = colors[colorRandomIndex]; 
    myObjects.Add(clone); 

Antwort

0

Könnten Sie versuchen

int colorRandomIndex = UnityEngine.Random.Range(0, colors.Length); 

clone.GetComponent<SpriteRenderer>().material.color = colors[colorRandomIndex]; 

Okay, mit so dass der Fehler die Art und Weise ist, dass Sie Ihre Farben erstellen, Color akzeptiert nur Werte zwischen 0 und 1 schweben. Sie müssen Color32

colors[0] = new Color32 (250, 250, 250, 255); 
colors[1] = new Color32 (144, 249, 242, 255); 
colors[2] = new Color32 (20, 173, 163, 255); 
colors[3] = new Color32 (21, 129, 168, 255); 
colors[4] = new Color32 (5, 95, 127, 255); 
colors[5] = new Color32 (58, 125, 196, 255); 

verwenden, vergessen Sie nicht, auch zu Color32

+0

Nein, es funktioniert nicht. Dieser Code funktioniert, aber es gibt zufällige Farben. Wie könnte ich es ändern, so dass es Farben aus dem Array geben würde? 'clone.GetComponent (). Material.color = new Farbe (UnityEngine.Random.Range (0f, 1f), UnityEngine.Random.Range (0f, 1f), UnityEngine.Random.Range (0f, 1f) , UnityEngine.Random.Range (0f, 1f)); ' –

+0

@ KlemenŠkrlj Ich habe meine Antwort bearbeitet, könntest es versuchen. – CNuts

+0

diese Fehler: Schwere \t-Code \t Beschreibung \t Projekt \t Datei \t Linie \t Unterdrückungszustand Fehler \t CS7036 \t Es gibt gegeben kein Argument, das 'a' auf die erforderlichen formalen Parameter von ‚Color32.Color32 (Byte, Byte, Byte entspricht, Byte) –

0

Vielleicht renderer.material.color = colors[colorRandomIndex]; versuchen? Es ist schon eine Weile her, seit ich Unity verwendet ...

+0

nee .. noch das Array ändern verwendet es ursprüngliche Farbe ist. Muss ich etwas in Inspector oder etwas in der Art ändern? –