【问题标题】:Unity - paint a texture with alpha to make it dissapear partiallyUnity - 使用 alpha 绘制纹理以使其部分消失
【发布时间】:2015-11-10 18:42:27
【问题描述】:

我正在尝试实现这种效果,我想用 alpha 来“绘制”图像,例如在用户触摸或使用鼠标的位置擦除图像的一部分。

我不知道从哪里开始。

【问题讨论】:

    标签: c# unity3d textures alpha


    【解决方案1】:

    您可以将每张图像放在单独的Layer 上,并使用LayerMask 告诉您的“橡皮刷”忽略要擦除的图层后面的图层。当用户点击图像时,它会擦除​​第一层上的部分图像,但将图像单独留在后面。

    来自here声明的信用:

    LayerMask,或计算机科学中的任何“Mask”,是一个整数,它使用 它的 32 位代表不同的标志。虽然它是一个整数,但 value 在数字上并不意味着任何有用的东西。重要的是哪个 标志被打开或关闭。

    在 LayerMask 的情况下,每个标志(每个位)代表一层。

    可以在检查器顶部为每个GameObject 选择图层,您可以在那里添加和命名图层,还可以选择查看它们的不同组合(见图)。

    【讨论】:

      【解决方案2】:

      如果你想在一个平面上有 2 个纹理: - 制作具有 3 个纹理(背景、前景、蒙版)的自定义着色器 - 然后您可以使用灰度颜色绘制到该蒙版纹理中,并且着色器会根据蒙版颜色淡化 2 个纹理(例如,如果颜色为全白,则只有前景可见)

      或者如果你想在一个单独的纹理平面后面有 3D 对象(你只需要擦除现有的纹理,而不是画回相同的图案) - 可以使用任何支持 alpha 的默认纹理 - 只需在材质中的 MainTexture 中绘制,使用颜色 alpha 0 绘制使区域透明 - 纹理需要在导入器设置中启用 [x] 读/写以允许在其上绘图

      一些相关链接:

      并搜索 unity blend 2 个带蒙版的纹理、unity draw to texture 等,以找到更多示例和着色器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-03
        • 1970-01-01
        • 1970-01-01
        • 2013-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多