我不想用UGUI来提高一些教学水平,所以需要整体处于黑暗中,但需要一些矩形区域,而不是黑暗。
我可以通过添加一个带有图像组件的游戏对象,在黑暗中制作整个场景,并控制它的阿尔法到暗。
但我不知道如何使一些矩形区域被点燃,长方形将在不同的教学水平上发生变化。不同的设备,不同的分辨率,也会改变雷克的边界。
Picutre3是我想要的,只要矩形区域就可以了。
Picture1
Picture2
Picture3
Picture4
发布于 2015-06-19 08:52:31
我将解释如何通过一个简单的着色器和一些设置,你可以实现这一点。我是从记忆里说的,所以如果有什么问题,请问。
所以你能做的是:
此时,您应该注意到,雪碧在“游戏”窗口或camA预览中不再可见。只有剩下的部分是可见的。当您选择camB时,只有平面会在预览中可见。来自camB的输出表示“漏洞”的位置。
现在我们继续这样做:
所以,我们用简单的英语在我们的着色器中说的是:我的颜色是纯黑的,有一点透明度(0.8),除非我的输入纹理在相同的位置上有一个白色,在这种情况下,我是更透明的(-texcol.r)。
我们在这里使用r分量,但是你也可以很容易地使用任何颜色成分。
现在将这个新的材质和着色器分配到您的全屏精灵,并将您的MaskRT渲染纹理设置为蒙版着色器的输入纹理漫射。
如果一切顺利的话,你现在应该有你想要的效果了。移动掩码现在就像移动场景中任何被标记为MaskLayer层的对象一样容易。这样你就可以有很多面具了。
备注:
- In your shader there will probably a Color input by default. You can use this in the fragment shader instead of saying (0,0,0..) for easier and more control over the resulting mask. This will allow you to change your masking appearance as usual with the sliders of the material. For example:
fixed4 outputColor = fixed4(InputColor.Albedo,InputCol.a-texcoll)
编辑:您可以在这里查看“在Cg代码中使用着色器属性”部分:http://docs.unity3d.com/Manual/ShaderTut2.html,您可以复制粘贴整个片段,如果您正在挣扎,可以更改片段着色器(对不起,我不知道您对它有多大的体验)。
编辑:这是要求的着色器。还请阅读以下说明。
Shader "Tutorial/Textured Colored" {
Properties {
_Color ("Main Color", Color) = (1,1,1,0.5)
_MainTex ("Texture", 2D) = "white" { }
}
SubShader {
Tags
{
"Queue" = "Transparent"
}
Blend One OneMinusSrcAlpha
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
fixed4 _Color;
sampler2D _MainTex;
struct v2f {
float4 pos : SV_POSITION;
float2 uv : TEXCOORD0;
};
float4 _MainTex_ST;
v2f vert (appdata_base v)
{
v2f o;
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.uv = TRANSFORM_TEX (v.texcoord, _MainTex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
fixed4 texcol = tex2D (_MainTex, i.uv);
fixed4 outputColor = _Color;
outputColor.a -= texcol.r;
return outputColor ;
}
ENDCG
}
}
}
备注:
更新:
对不起,我漏掉了阴影的关键部分。请参阅标签部分和混合操作添加到着色器。另外,请注意,对于全屏四边形,您应该使用的是平面而不是精灵,因为在这种状态下,着色器与精灵不兼容。
还要注意,在这里的示例项目中:https://drive.google.com/file/d/0Bw8X8yAt21AiYjRyVkxJUkhreVU/view?usp=sharing
飞机在x和z轴上都是翻转的。
至于我之前遗漏的UGUI部分,这个解决方案可能有效。我还没查过。如果掩码在UI后面,您可以尝试将着色器中的"Queue“标记设置为"Overlay”。
https://stackoverflow.com/questions/30931700
复制相似问题