在预制件中实例化后无法改变点光源的颜色

时间:2013-11-22 03:31:45

标签: unity3d

我有一个点光源的预制件可以在球体周围产生光晕。基于“类型”(健康,个性,才能),发光的颜色必须改变。这是我的代码 -

GameObject glow = (GameObject)Instantiate(glowPrefab,new Vector3(0,0,0),Quaternion.identity);
glow.transform.parent = child.transform;
glow.transform.localPosition = new Vector3(0,0,0);

switch(type)
{
    case "health":
    child.renderer.material = health;
    glow.GetComponent<Light>().color = new Color(254f,137f,96f,255f);
    //Debug.Log ("Health Color" + glow.light.color );
    break;

    case "personality":
    child.renderer.material = personality;
    glow.GetComponent<Light>().color = new Color(137f,254f,96f,255f);
    //Debug.Log ("Personality Color" + glow.GetComponent<Light>().color );
    break;

    case "talent":
    child.renderer.material = talent;
    glow.GetComponent<Light>().color = new Color(137f,96f,254f,255f);
    //Debug.Log ("Talent Color" + glow.GetComponent<Light>().color );
    break;
}

虽然debug.log显示灯光已经改变,但在游戏中,它仍然是白色的。 有趣的是,当它运行时,场景显示多彩的灯光 -

enter image description here

但是,在游戏中,颜色是白色的 -

enter image description here

当我点击单个灯光时,颜色为白色 -

enter image description here

即使我更改了预制颜色,灯光的颜色仍然是白色。

enter image description here

如何检查颜色的变化位置?是否有可用于记录的事件?

谢谢!

1 个答案:

答案 0 :(得分:2)

那是因为你传递了错误的颜色数据。 UnityEngine.Color将RGBA值取为0-1。你可以将你的值转换为正确的RGBA值,或者使用UnityEngine.Color32到特定的0-255 RGBA值。

glow.GetComponent<Light>().color = new Color32(254,137,96,255);
// OR
glow.GetComponent<Light>().color = new Color(1, 0.92, 0.016, 1); // Yellow
// OR
glow.GetComponent<Light>().color = new Color.yellow;