資源描述:
《unity3D游戲開(kāi)發(fā)之NGUI 圓形血條、進(jìn)度條制作實(shí)現(xiàn)詳解》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、通常,為了美化界面布局,進(jìn)度條或者角色血條、經(jīng)驗(yàn)條并不是長(zhǎng)方形的,可能會(huì)是個(gè)圓形,看了下別人的制作過(guò)程都稍顯復(fù)雜,為此整理了一份步驟非常簡(jiǎn)單的制作圓形進(jìn)度條或者圓形血條、經(jīng)驗(yàn)條的方法。????這兒我們使用了一個(gè)遮罩Shader。????先來(lái)看看最終效果圖:????需要的美術(shù)素材如圖所示:????導(dǎo)入NGUI以及布局經(jīng)驗(yàn)條的步驟省略,最終的經(jīng)驗(yàn)條樹(shù)形結(jié)構(gòu)如圖:????這兒需要特別注意的是,附加到圓形經(jīng)驗(yàn)條的NGUI組件類一定要是UITexture,因?yàn)閁ITexture有Material選項(xiàng),這樣才可以使用我們的遮罩材質(zhì)。????下面是遮罩Shader的代碼:123Shader"Custom/
2、CircleAlphaMask"{??Properties4567891011121314151617181920212223242526272829303132333435363738394041424344454647??{??_Color("MainColor",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??{??????LightingOf
3、f??????ZWriteOff??????Cullback??????Fog{ModeOff}??????Tags{"Queue"="Transparent""IgnoreProjector"="True"}??????BlendSrcAlphaOneMinusSrcAlpha??????SubShader??????{????????Pass????????{??????????CGPROGRAM??????????#pragmavertexvert??????????#pragmafragmentfrag??????????sampler2D_MainTex;??????????sam
4、pler2D_MaskTex;??????????fixed4_Color;??????????float_Progress;??????????structappdata??????????{??????????????float4vertex:POSITION;??????????????float4texcoord:TEXCOORD0;??????????};??????????structv2f??????????{??????????????float4pos:SV_POSITION;??????????????float2uv:TEXCOORD0;??????????};????
5、??????v2fvert(appdatav)??????????{??????????????v2fo;??????????????o.pos=mul(UNITY_MATRIX_MVP,v.vertex);??????????????o.uv=v.texcoord.xy;??????????????returno;??????????}??????????half4frag(v2fi):COLOR??????????{4849505152535455565758596061626364656667??????????????fixed4c=_Color*tex2D(_MainTex,i.u
6、v);??????????????fixedca=tex2D(_MaskTex,i.uv).a;??????????????c.a*=ca>=_Progress?0:1;??????????????returnc;??????????}??????????ENDCG????????}??????}??????SubShader??????{????????????????AlphaTestLEqual[_Progress]????????????Pass????????????{??????????????SetTexture[_MaskTex]{combinetexture}???????
7、???????SetTexture[_MainTex]{combinetexture,previous}????????????}????????}??}??Fallback"Transparent/VertexLit"}????新建一個(gè)材質(zhì),把Shader賦予這個(gè)新建立的材質(zhì),然后設(shè)置如下屬性,如圖所示:????最后通過(guò)代碼來(lái)控制進(jìn)度的顯示:123456789101112usingUnityEngine;u