在Unity中,我有一个游戏对象作为父对象,有两个子文本对象作为子对象。还有一个图像子对象(总共三个子)。
现在,我想更改游戏对象的三个孩子的alpha。如何以编程方式完成此任务?
我有以下代码,但不适用于文本和图像对象:
public void setAlpha(float alpha) {
SpriteRenderer[] children = GetComponentsInChildren<SpriteRenderer>();
Color newColor;
foreach(SpriteRenderer child in children) {
newColor = child.color;
newColor.a = alpha;
child.color = newColor;
}
}
答案 0 :(得分:3)
如果您使用的是SpriteRenderer
,则您的代码将起作用。
您可以通过更改Text
和Image
的color属性的alpha通道来实现这一点,这与您所做的非常相似:
public void setAlpha(float alpha) {
Color newColor;
Image[] childrenImg = GetComponentsInChildren<Image>();
foreach(Image img in childrenImg) {
newColor = img.color;
newColor.a = alpha;
img.color = newColor;
}
Text[] childrenText = GetComponentsInChildren<Text>();
foreach(Text text in childrenText) {
newColor = text.color;
newColor.a = alpha;
text.color = newColor;
}
}
别忘了在脚本的顶部包含using UnityEngine.UI;
,因为Text
和Image
是UI元素。
答案 1 :(得分:0)