【发布时间】:2016-12-18 09:31:15
【问题描述】:
所以我有一个 2D 对象,您可以使用按钮更改颜色,每个按钮都会更改对象的精灵。我有一个红色、橙色、黄色、绿色、蓝色、紫色的精灵。
现在我有一个粒子系统(前面提到的对象的一个子对象),我想将它的 startColor 属性更改为与 2D 对象的精灵相同的颜色。我正在使用此代码(附加到您可以更改其精灵的 2D 对象):
var sprite = gameObject.GetComponent<SpriteRenderer>().sprite;
var startColor = gameObject.transform.GetChild(0).gameObject.GetComponent<ParticleSystem>().startColor;
if (sprite == red) startColor = new Color(255, 29, 0);
else if (sprite == orange) startColor = new Color(254, 32, 0);
else if (sprite == yellow) startColor = new Color(254, 215, 0);
else if (sprite == green) startColor = new Color(0, 254, 32);
else if (sprite == blue) startColor = new Color(0, 37, 254);
else if (sprite == purple) startColor = new Color(178, 0, 255);
gameObject.transform.GetChild(0).gameObject.GetComponent<ParticleSystem>().startColor = startColor;
我正在尝试从 RGB 创建所有新的 Colors()。所以我取了所有颜色精灵的RGB值并插入它们。当我执行代码时,粒子的颜色与对象的精灵颜色不匹配。
注意:我在 android 上运行它,粒子系统的材质是纯白色的,所以它不应该着色。
我将颜色精灵的 RGB 值放入了五次以上。但它与精灵不匹配!我不知道怎么了...如果您需要我附上彩色精灵图像,请问。
【问题讨论】:
-
请清理代码,它很难阅读。你不需要每次都重新加载相同的精灵,只需将
gameObject.GetComponent<SpriteRenderer>().sprite存储在一个变量中,即var sprite=gameObject.GetComponent<SpriteRenderer>().sprite; -
你得到什么颜色?
-
您也可以将
gameObject.transform.GetChild(0).gameObject存储在变量中。事实上,代码是不可读的