【问题标题】:a black image's color can not be changed in Unity在 Unity 中无法更改黑色图像的颜色
【发布时间】:2015-04-29 00:28:06
【问题描述】:

黑色图像的颜色或图像的黑色部分无法更改。

我将图像的颜色设置为红色,但图像仍然是黑色的。

这是一个理想的功能吗?

我想要的是,图像变成红色。

Unity 版本是 5.0.1f。 我正在使用新的用户界面。

【问题讨论】:

    标签: image colors unity3d


    【解决方案1】:

    要了解问题的根源,您必须了解“更改颜色”的工作原理。这不过是一个简单的乘法。在 RGB 术语中,“黑色”是 (0, 0, 0) 的向量 - 很明显,无论您将 0 乘以什么,它都会保持黑色。

    如果您希望模板图像能够更改为任何颜色,请使用白色。

    要以更复杂的方式修改颜色,您必须了解Image 组件的Color 属性是如何工作的。 UI 系统在下面隐藏了很多复杂性(这很好)。基本上,Color 修改了网格的顶点颜色。由于您通常不指定材质,因此使用默认精灵材质,并且它使用默认精灵着色器。在这个着色器中,当它在屏幕上绘制像素时,它将顶点颜色乘以在该像素处采样的纹理颜色,这就是它产生最终结果的方式。如果你想以不同的方式组合颜色,你必须编写一个自定义着色器——这真的不那么难,但你可能不需要它来做你想做的事情。这个问题。

    【讨论】:

    • 很好的回复。有没有办法把黑色变成其他颜色?
    • 将其添加到答案中,因为评论太长了。
    • 太棒了!你给了我更多。谢谢。
    【解决方案2】:

    黑色保持黑色。

    然而,白色会随着您选择的任何颜色而变化,因此,如果您使用图像编辑器并将图像设置为白色而不是黑色,则图像可以是您在 Unity 中选择的任何颜色。

    【讨论】:

    • 知道了。编辑图像需要很多时间。如何通过脚本改变任何图像的颜色是否为黑色?
    • 在编辑器中编辑图像比为其编写着色器要快。 (对于这个具体的例子)
    【解决方案3】:

    检查您的图像是否具有 Alpha 通道。您可以使用 GIMP 或 Photoshop 完成此操作。如果是这样,请检查您的着色器/材质以确保将其设置为透明/漫反射(而不仅仅是漫反射)。仅漫反射不会将 alpha 属性应用于材质。

    另外,您似乎没有分配材质...

    【讨论】:

      【解决方案4】:

      确保您使用过yourImage.canvasRenderer.SetColor

      例如:

      damageAnim.canvasRenderer.SetColor (new Color (255, 255, 255, 255));
      

      【讨论】:

        猜你喜欢
        • 2023-03-17
        • 2017-05-30
        • 2023-03-20
        • 1970-01-01
        • 2021-04-09
        • 2021-12-28
        • 2022-08-05
        • 1970-01-01
        • 2020-05-15
        相关资源
        最近更新 更多