【问题标题】:Unity3d - How to do transparency images?Unity3d - 如何做透明图像?
【发布时间】:2020-04-27 12:04:01
【问题描述】:

我有一个统一的应用程序。当用户将鼠标悬停在对象上时,我想更改鼠标图像。所以,我想知道如何在 unity3d 中使部分图像透明?如果我直接使用 .png 图片,鼠标如下图所示:

我不想显示灰色区域。我该怎么办?

【问题讨论】:

  • 透明度在使用非透明着色器时显示为黑色。您的图像似乎是 jpg,因此它没有透明度。 Unity 不使用 jpg 并将它们转换为 png,但原件无论如何都没有透明度,它是白色的。您需要在 Gimp 或 Photoshop 中重新处理图像以去除无用的灰色部分。
  • @Everts 如果你写你的消息作为答案,我会接受。

标签: unity3d cursor texture2d


【解决方案1】:

图像文件可以以多种格式保存。因为您的箭头可以有透明区域,您应该将其保存为处理所谓的“alpha 通道”的格式。该通道存储有关所有和每个像素的透明度(从 0% 到 100%)的信息。 Windows Paint 等简单程序消除了这个通道。我推荐你使用“Gymp”,是我使用的那个(它是免费的)

如果你没有这个问题。确保您选择了正确的着色器类型。并非所有着色器都准备好透明化。我建议您对 3D 对象使用“透明剪切”:

以及 2D 对象的“Sprite(2d 和 UI)”:

【讨论】:

  • 我不知道gimp,是gimp吗?
  • 我为 apologi-C-e 道歉:-D
【解决方案2】:

在 Unity 的资源管理器中,如果您单击 .png 图像,您应该能够选择纹理类型。绝对有可能拥有具有透明度的纹理。 您还应该简单地检查您保存的 png 图像是否具有透明度

【讨论】:

  • 如果我选择透明,图像的所有部分都是透明的。我看不到任何鼠标指针。
  • 我想你改变了图像颜色。我建议你检查你有正确类型的纹理和着色器。看看 ORParga 的回答。他更详细地解释了我的意思
【解决方案3】:

使用非透明着色器时,透明度显示为黑色,所以这不是您的情况。您的图像似乎是 jpg,因此它没有透明度(仅限 RGB)。

Unity 不使用 jpg 并将它们转换为 png,但由于原件无论如何都没有透明度,所以它是原件中的白色像素和 png 转换中的白色像素。

您需要在 Gimp 或 Photoshop 中重新处理图像以删除无用的灰色部分,并确保将其保存为 png 以便存储透明度 (RGBA)。

【讨论】:

    【解决方案4】:

    这是一个老问题,但我想人们可能会喜欢针对最新 Unity 版本的更现代的解决方案(就像我一样)。

    Unity 现在支持 Shaders Graphs,这意味着您可以创建一个着色器,为通常没有 Alpha 通道的图像(如 jpg 或 gif)中的选定颜色提供透明度。

    当然,如果您要创建图像,只需制作一个带有 alpha 通道的 .png,但有时免费资源需要稍作调整(因为您没有创建它们):

    1. 确保您安装了支持着色器图的渲染管道(窗口 -> 包管理器 -> 轻量级 RP)
    2. 在您的项目中创建渲染管道(创建 -> 渲染 -> UniversalRenderPipeline -> 正向渲染)
    3. 使其处于活动状态(编辑-> 项目设置-> 图形-> 可编写脚本的渲染管线设置(选择您创建的那个)
    4. 创建一个新的着色器(Create -> Shader -> Unlit Graph),我创建了这个,效果很好:
    5. 创建一个材质,所以我们可以在精灵中实际使用这个着色器(创建 -> 材质)
    6. 配置材质以使用新创建的着色器(选择材质,Shader Graphs -> [您的着色器名称]

    瞧!

    我是这个着色器图的新手,但它看起来非常非常有前途。

    如果一切顺利,你最终会得到这样的材料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 2020-05-31
      相关资源
      最近更新 更多