如何改变孩子的阿尔法

时间:2018-06-19 12:23:08

标签: c# unity3d alpha

在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;
    }
}

2 个答案:

答案 0 :(得分:3)

如果您使用的是SpriteRenderer,则您的代码将起作用。

您可以通过更改TextImage的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;,因为TextImage是UI元素。

答案 1 :(得分:0)

没有必要重新发明轮子。 对于 UI元素,有一个现成的组件 CanvasGroup

enter image description here

它具有 Alpha 属性,该属性适用于所有子项。