Unity RGB发射颜色的更改仅在达到0时显示

问题描述 投票:0回答:1

因此,经过相当多的谷歌搜索之后,我想出了一些脚本来根据武器中剩余的弹药量来改变材料的发射(武器侧面的一点反应堆东西)。这样它就可以作为指标。

唯一的问题是,发射颜色只有在达到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小时一直处于审核状态,所以我想我会去这里,答案显然要容易得多)

c# unity3d rgb
1个回答
0
投票

您使用的是Color,其成分是从0.0到1.0范围内的浮点数。

但是您将其作为Color32进行操作,其成分是0到255之间的整数。

虽然这两个可以隐式转换为彼此,但要使其正常工作,您只需要在此行中更改“颜色”:

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

...到“ Color32”。

© www.soinside.com 2019 - 2024. All rights reserved.