关闭

轻量级便捷DIY的遮罩

301人阅读 评论(0) 收藏 举报
分类:
遮罩应该很多人都会需要的,血条、进度条神马的都离不开它。
最简单高效的办法是用Shader实现
贴上一个:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Shader "Custom/AlphaMask" {
   Properties
    {
    _Color ("Main Color", Color) = (1,1,1,1)
    _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
    _MaskTex ("Mask (A)", 2D) = "white" {}
    _Progress ("Progress", Range(0,1)) = 0.5
    }
 
    Category
    {
        Lighting Off
        ZWrite Off
        Cull back
        Fog { Mode Off }
        Tags {"Queue"="Transparent" "IgnoreProjector"="True"}
        Blend SrcAlpha OneMinusSrcAlpha
        SubShader
        {
            Pass
            {
                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
                sampler2D _MainTex;
                sampler2D _MaskTex;
                fixed4 _Color;
                float _Progress;
                struct appdata
                {
                    float4 vertex : POSITION;
                    float4 texcoord : TEXCOORD0;
                };
                struct v2f
                {
                    float4 pos : SV_POSITION;
                    float2 uv : TEXCOORD0;
                };
                v2f vert (appdata v)
                {
                    v2f o;
                    o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
                    o.uv = v.texcoord.xy;
                    return o;
                }
                half4 frag(v2f i) : COLOR
                {
                    fixed4 c = _Color * tex2D(_MainTex, i.uv);
                    fixed ca = tex2D(_MaskTex, i.uv).a;
                    c.a *= ca >= _Progress ? 0f : 1f;
                    return c;
                }
                ENDCG
            }
        }
 
        SubShader
        {          
             AlphaTest LEqual [_Progress] 
              Pass 
              
                 SetTexture [_MaskTex] {combine texture} 
                 SetTexture [_MainTex] {combine texture, previous} 
              
        }
         
    }
    Fallback "Transparent/VertexLit"
}
另存为.shader就可以用了,无需任何脚本配合。用这个Shader建一个材质,拖给一个Plane,就能用了。


主纹理可以指定任意图片,不指定图片直接用颜色也可以。Mask可以指定任意带Alpha的图片,只要是Alpha从0-1连续变化就行了,PhotoShop里面一分钟搞定的东西,你懂的。
那个Progress量就是遮罩范围的大小了。
要运行时设置,在Update里这样写:renderer.material.SetVector("_Progress",当前血量、进度百分比等等..);注意范围是0-1。
完全DIY,效果完全取决于图片和DIY的遮罩。

附两个遮罩图片供测试,一个是条形,一个是圆形,纯测试用随便作的,不够美观。

0
0
查看评论

轻量级便捷DIY的遮罩

遮罩应该很多人都会需要的,血条、进度条神马的都离不开它。        最简单高效的办法是用Shader实现该文章出自【狗刨学习网】 贴上一个: Shader "Custom/AlphaMask" {  ...
  • Carl180
  • Carl180
  • 2015-01-27 20:21
  • 297

Unity3D学习之轻量级便捷DIY的遮罩

欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。     遮罩应该很多人都会需要的,血条、进度条神马的都离不开它。最简单...
  • Qst_Baron
  • Qst_Baron
  • 2015-02-08 16:45
  • 1353

轻量级分布式 RPC 框架DIY(转)

 http://www.csdn123.com/html/topnews201408/67/12167.htm RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。 RPC 可基于 HTTP 或 T...
  • tantexian
  • tantexian
  • 2015-07-12 19:46
  • 2934

百度脑图-便捷的思维工具

百度脑图-便捷的思维工具,大大解放内存占用。
  • museions
  • museions
  • 2017-05-12 13:05
  • 677

轻量级数据库sqlite的使用

本文不涉及一些概念性的东西,请大家多多原谅 这个就是Android sqlite的简单框架。 使用sqlite 大概分为3步 第一步:创建自己的sqliteopenhelper类 第二步:创建数据库中的dao层 ,其中分装了对数据库的操作 第三步:在activity...
  • u012938203
  • u012938203
  • 2015-06-04 20:55
  • 856

DIY分享:国外DIY网站大集合

多个国外DIY网站收集  http://www.powerlabs.org 高能diy,电磁枪,微波武器.  http://www.altair.org/tesla.html 高电压diy爱好者  http://www.richieburnet...
  • u010794281
  • u010794281
  • 2015-05-04 11:46
  • 2126

Unity遮罩效果

这个两天在看关于遮罩的文章,下面这个连接里的文章给了我一点提示:http://www.cocoachina.com/gamedev/gameengine/2011/0602/2917.html 我理解的遮罩是:两张图片,重叠的部分不显示,未重叠的部分显示出来,下图我用了两张png图片,其中一张是空图...
  • qq_bingfeng_8
  • qq_bingfeng_8
  • 2014-02-13 16:16
  • 5732

DISCUZ网站DIY后,导致DIY功能失效,无法在前台删除已创建的DIY功能解决办法

DISCUZ网站DIY后,导致DIY功能失效,无法在前台删除已创建的DIY功能解决办法,这是一个经常会遇到的问题,在程序调试过程中经常的会遇到这样的问题,这里提供一个自己常用的解决办法,供遇到这个问题的朋友一块用找到表 pre_common_block 然后找到你添加的DIY的标
  • w_yunlong
  • w_yunlong
  • 2015-12-29 11:54
  • 2138

java中重量级和轻量级的区别

首先轻量级与重量级是一个相对的概念,主要是对应用框架使用方便性和所提供服务特性等方面做比较的。 重量级的框架在耦合性方面要比轻量级的大一些,但是重量级框架提供的服务要比轻量级的多。 比方说EJB就是一个重量级的框架,因为它对所编写的代码有限制,同时它也提供分布式等复杂的功能。 相比之下,S...
  • chenyuanyong110
  • chenyuanyong110
  • 2016-05-16 16:13
  • 1360

关于轻量级与重量级的区别。

轻量级容器"越来越成为Java世界的讨论关键词之一。那么到底什么是"轻量级"容器?  在你浏览最近的有关J2EE的文章或者blog,都有意无意的提到了"lightweigh containter",  伴随着...
  • sxhshsxh
  • sxhshsxh
  • 2017-01-12 15:48
  • 2576
    个人资料
    • 访问:36475次
    • 积分:430
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:40篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档