【问题标题】:Mask UI Image/RawImage遮罩 UI 图像/原始图像
【发布时间】:2017-06-28 01:21:43
【问题描述】:

我最近遇到了 UI 问题。我打开了一个新的 2D 项目并创建了一个带有 GameObject 和 Image 组件的画布。然后我通过右键单击Assets > Create > Sprites > Circle 添加了一个精灵。这在我的 Assets 文件夹中添加了一个圆形精灵。

问题是当我为 Image 组件选择 Source Image 作为圆形时,它仍然显示为矩形。

圆形精灵作为纹理类型的精灵导入。

其他形状也会出现这个问题,例如三角形。

我正在使用 Unity 5.6.0b9 个人版。构建目标是 PC、Mac、Linux Standalone。

我可能遗漏了一些非常简单的东西。任何帮助表示赞赏!

【问题讨论】:

    标签: user-interface unity3d


    【解决方案1】:

    它不是那样工作的。 Assets > Create > Sprites 菜单下的圆形和所有其他类型的 Sprite可用于SpriteRenderers。如果您使用 GameObject--> 2D Object--> Sprite 中的 SpriteRenderer,这会起作用。它们不适用于 UI。

    对于 UI,这必须通过 Mask 组件来完成。只需获取任何圆形图像,然后使用它从目标方形图像中切出圆形。

    1. 创建一个名为“TargetSquare”的 UI 图像,这是您要圆整的图像。

    2. 复制它,然后将其命名为“MaskCircle”,然后调整其大小以使其小于“TargetSquare”,直到您想要的圆形。

    3. 使“MaskCircle”对象成为“TargetSquare”对象的父对象,然后使用我制作的this圆形Sprite作为它的源图像。

    4. Mask 组件附加到“MaskCircle”对象。

    完成。您的“TargetSquare”对象将具有“MaskCircle”对象的形状。

    如果边缘呈锯齿状,请选择用于“MaskCircle”图像的精灵,然后确保禁用 Mipmap。

    【讨论】:

    • 这很奇怪......常规 PNG 对 SpriteRenderer 和 Image 都适用。他们为什么不给内置的精灵兼容性?
    • 为什么?它清楚地写着“雪碧”。最初,这是为SpriteRenderer 制作的,以便轻松创建许多形状。 Unity 的 UI/Image 是新的,几年前刚刚发布。 Unity 的 UI/Image 与 Sprite 和 SpriteRenderer 不同。它仅用于显示 UI。如果您使用的是 2D 角色或 2D 世界,您应该使用SpriteRenderer。 UI/Image 有自己的自己的 解决方案来为图像赋予假形状,那就是Mask。它允许您在运行时执行此操作。你不能用 Sprites。
    • 至于为什么不支持,假精灵使用占位符精灵和算法来生成该形状,但这不是 UI 的工作方式。这就是它不被支持的原因。UI 使用直接的 OpenGL/stencil 来使其工作,因此它会非常快。我确信 Unity 希望您使用 Mask,因为这样更有意义。该菜单实际上称为“SpriteCreator”,您可以阅读更多关于它的信息here
    • 你能帮我在 Unity 创建屏幕过渡,如垂直和水平过渡。
    • @shankarkn 对此创建新的 Unity 问题,并解释您到底想做什么以及您尝试过什么。我会看看,看看我能不能做到。
    【解决方案2】:

    也许它是错误,在统一 5.6.1f1 相同的故事。 只需尝试下载新版本 unity 5.6.2f。我不知道,这个错误是否已修复。

    或者

    使用一些图像编辑器,例如 Photoshop。

    附:我的失败,一切正常,它适用于 SpriteRenderer 组件。 Unity 生成白色正方形,并在此精灵属性中将 Sprite Mode 设置为 Polygon 并使用顶点创建一些形状。

    【讨论】:

    • 这不是错误,更新 Unity 也无法解决该问题。也许 Unity 会将其添加到功能的 UI 中。
    • 是的,我失败了,但也许他只想画圆,不使用蒙版。
    • menitoned 的菜单操作不画圈。如果您想使用 UI 来执行此操作,它会创建可以使用蒙版复制的圆形精灵。如果 OP 不想使用 UI,那么他应该使用 SpriteRenderers,就像我提到的那样,因为这支持 Assets > Create > Sprites > Circle munu 中的所有内容。
    • @nipercop 是的,我确实想画一个圆圈,但蒙版是唯一的方法。
    • @yummypasta 小心,如果你创建手机游戏,遮罩组件会占用大量 DrawCall。
    猜你喜欢
    • 2022-10-23
    • 2013-01-11
    • 2018-05-29
    • 2016-06-09
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多