2017-04-12 35 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中改变某些东西吗? –