【问题标题】:How to change alpha of children如何改变孩子的阿尔法
【发布时间】:2018-06-19 12:23:07
【问题描述】:

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

【问题讨论】:

  • 作为文本和图像,您指的是 UI 元素吗?如果是这样,您必须使用 GetComponentsInChildren 和 GetComponentsInChildren。不要忘记包含 UnityEngine.UI
  • 是的,我指的是 UI 元素。我想改变父母孩子的阿尔法。如何在 Unity 中制作它?

标签: c# unity3d alpha


【解决方案1】:

如果您使用的是SpriteRenderer,您的代码就可以工作。

您可以通过更改 TextImage 的颜色属性的 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 元素。

【讨论】:

  • 领先我一步
  • 我会尽快检查的。非常感谢!:)
【解决方案2】:

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

它具有应用于所有子级的 Alpha 属性。

【讨论】:

    猜你喜欢
    • 2016-06-21
    • 2013-09-20
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 2018-02-02
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多