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 小时内它一直处于适度状态,所以我想我会带到这里,答案显然更容易)
所以在谷歌搜索之后,我想出了一些脚本来改变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 小时内它一直处于适度状态,所以我想我会带到这里,答案显然更容易)