【发布时间】:2015-11-10 18:42:27
【问题描述】:
【问题讨论】:
【问题讨论】:
您可以将每张图像放在单独的Layer 上,并使用LayerMask 告诉您的“橡皮刷”忽略要擦除的图层后面的图层。当用户点击图像时,它会擦除第一层上的部分图像,但将图像单独留在后面。
来自here的声明的信用:
LayerMask,或计算机科学中的任何“Mask”,是一个整数,它使用 它的 32 位代表不同的标志。虽然它是一个整数,但 value 在数字上并不意味着任何有用的东西。重要的是哪个 标志被打开或关闭。
在 LayerMask 的情况下,每个标志(每个位)代表一层。
可以在检查器顶部为每个GameObject 选择图层,您可以在那里添加和命名图层,还可以选择查看它们的不同组合(见图)。
【讨论】:
如果你想在一个平面上有 2 个纹理: - 制作具有 3 个纹理(背景、前景、蒙版)的自定义着色器 - 然后您可以使用灰度颜色绘制到该蒙版纹理中,并且着色器会根据蒙版颜色淡化 2 个纹理(例如,如果颜色为全白,则只有前景可见)
或者如果你想在一个单独的纹理平面后面有 3D 对象(你只需要擦除现有的纹理,而不是画回相同的图案) - 可以使用任何支持 alpha 的默认纹理 - 只需在材质中的 MainTexture 中绘制,使用颜色 alpha 0 绘制使区域透明 - 纹理需要在导入器设置中启用 [x] 读/写以允许在其上绘图
一些相关链接:
来自统一文档的基本像素绘图示例:http://docs.unity3d.com/ScriptReference/RaycastHit-textureCoord.html
旧演示场景,绘制纹理并使用溶解着色器:http://unitycoder.com/blog/2011/08/10/painting-holes-with-shader-v2-0/
并搜索 unity blend 2 个带蒙版的纹理、unity draw to texture 等,以找到更多示例和着色器。
【讨论】: