Unity RGB 发射颜色的变化仅在达到 0 时显示

A change in a Unity RGB emission colour only shows when it reaches 0

所以在谷歌搜索之后,我想出了一些脚本来改变material(武器侧面的一个小反应堆)的发射,具体取决于武器中剩余的弹药量,以便它可以作为一种指标。

唯一的问题是发光颜色只有在达到 0 时才会发生明显变化。

我试了一下,但由于我对 C# 缺乏经验(我或多或少是个新手),我不确定问题出在哪里。

这是我的代码,有一些删减,所以它只是在每次更新时移除弹药,而不是在武器射击时移除弹药(默认情况下弹药设置为 51,以便于颜色变化):

   public Material reactor;

   public float ammo;

   Vector4 emit = new Color(0f, 255f, 0f, 1f);

   public void Update() {

     Renderer renderer = GetComponent<Renderer> ();

     reactor.SetColor ("_EmissionColor", emit);

     if (ammo >= 1) {

       ammo--;
       float emitchange = emit.y - 5f;
       emit = new Vector4(emit.x, emitchange, emit.z, emit.w);

       reactor.SetColor("_EmissionColor", emit);

     } else {

       Debug.Log("Ammo Empty");

     }
   }

出于某种原因,它只是拒绝显示发射的任何变化,直到 emit.y 达到 0,这意味着我没有从中得到我想要的效果。

希望有人知道该怎么做,谢谢!

(我也将此发布到 Unity Answers,但在过去 24 小时内它一直处于适度状态,所以我想我会带到这里,答案显然更容易)

你已经使用了Color,哪些组件是在 0.0 到 1.0 范围内的浮点数。

但是您可以将其作为 Color32 来操作,其中的组成部分是 0 到 255 范围内的整数。

虽然这两个可以隐式地相互转换,但要使其正常工作,您只需要在这一行中更改 "Color":

Vector4 emit = new Color(0f, 255f, 0f, 1f);

...到 "Color32".