Unity3d - 如何制作透明图像?

问题描述 投票:0回答:5

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

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

unity-game-engine cursor texture2d
5个回答
4
投票

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

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

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


1
投票

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


1
投票

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

Unity不使用jpg并将它们转换为png,但由于原始图像无论如何都没有透明度,因此原始图像中是白色像素,png转换中是白色像素。

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


0
投票

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

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

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

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

瞧!

我对这个着色器图很陌生,但它看起来真的非常有前途。

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


0
投票

我在 Paint 3D 中打开图像。进行魔法选择。剪切结果并粘贴到新的 Paint 3D 项目中。另存为图像并勾选透明度。

无论它来自哪里,无论原始图像的格式如何,这些似乎每次都有效。

© www.soinside.com 2019 - 2024. All rights reserved.