点光源 Prefab 实例化后不能改变颜色

我预设一个point light,使一个球体发光。我改变了辉光的颜色。这里是我的代码 -

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中显示,point light发生了变化,但在游戏中,它仍然是白色的。有趣的是,运行时,场景中显示五彩灯光:
请输入图片描述
在游戏中,颜色为白色:
请输入图片描述
当我点击一个单独的光,颜色为白色:
请输入图片描述
即使我改变 prefab 的色彩,灯光的颜色仍然是白色的。
请输入图片描述
如何检查那里的颜色被改变了?是否有一个事件,我可以用日志记录?
谢谢!

原文:unable to change color of point light after instantiating in prefab

阅读 3.7k
1 个回答

来自@S.Richmond 的回答:
那将是因为你传递了错误的颜色数据。UnityEngine.Color需要0-1之间的RGBA值。你可以转换你的数据,为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;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进