c# - Unity RGB 发射颜色的变化仅在达到 0 时显示
问题描述
因此,经过一番谷歌搜索后,我想出了一些脚本来根据武器中剩余的弹药量来改变材料(武器侧面的一个小反应堆)的发射,以便它可以作为一个指标。
唯一的问题是发射颜色只有在达到 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 小时内一直处于适度状态,所以我想我会带到这里,答案显然更容易)
解决方案
推荐阅读
- javascript - 使用 NgRx 和 Kendo UI (Angular) 上传组件在 formState 中编辑时如何传递(设置)文件字符串数据?
- reactjs - 与 React Router 链接时如何传递函数?
- python - 模块导入错误,使用 Google Colab
- python - 如何修复“TypeError:'int' 对象在 rfind(os.sep.path) + 1 中不可下标:”
- angular - 如何在上一个 api 请求在 ionic 中完成后发出 api 请求
- java - Tika Parser 无法解析希腊字符
- ajax - RAILS 6 Ajax 事件和 Ajax Spinner
- javascript - 如何在useEffect中处理获取的数据
- java - 如何在 Java 8 中格式化 ZoneDateTime?
- javascript - 如何使用 react 和 javascript 修复输入验证电子邮件的正则表达式?