2017-04-12 36 views
1

製作一個統一的遊戲,我正在使用此代碼。我不知道什麼是錯的,爲什麼在實例化時精靈不會改變顏色。你能幫助我,所以我不會失去主意嗎? :D(我也是隨機產生的GameObjects)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); 

回答

0

你能嘗試使用

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

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

好了,錯誤的是要創建你的顏色的方式,Color只接受0和1之間浮動值。您需要使用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); 

不要忘了數組也更改爲Color32

+0

不,它不起作用。所以這段代碼可以工作,但它會給出隨機顏色我怎麼能改變它,所以它會給數組的顏色? (),UnityEngine.Random.Range(0f,1f),UnityEngine.Random.Range(0f,1f)'clone.GetComponent ()。material.color = new Color(UnityEngine.Random.Range(0f,1f) ,UnityEngine.Random.Range(0f,1f));' –

+0

@KlemenŠkrlj我編輯了我的答案,你可以試試。 – CNuts

+0

此錯誤:嚴重\t代碼\t說明\t項目\t文件\t線\t抑制狀態 錯誤\t CS7036 \t沒有給出說法,對應於所需形式參數「A」「Color32.Color32(字節,字節,字節,字節) –

0

也許試試renderer.material.color = colors[colorRandomIndex];?它已經,因爲我用統一了一會兒......

+0

沒了..仍然使用它原來的顏色。我必須在Inspector中改變某些東西嗎? –