unity3D游戏开发之NGUI 圆形血条、进度条制作实现详解.doc
上传人:qw****27 上传时间:2024-09-11 格式:DOC 页数:6 大小:1.3MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

unity3D游戏开发之NGUI 圆形血条、进度条制作实现详解.doc

unity3D游戏开发之NGUI圆形血条、进度条制作实现详解.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

通常,为了美化界面布局,进度条或者角色血条、经验条并不是长方形的,可能会是个圆形,看了下别人的制作过程都稍显复杂,为此整理了一份步骤非常简单的制作圆形进度条或者圆形血条、经验条的方法。这儿我们使用了一个遮罩Shader。先来看看最终效果图:需要的美术素材如图所示:导入NGUI以及布局经验条的步骤省略,最终的经验条树形结构如图:这儿需要特别注意的是,附加到圆形经验条的NGUI组件类一定要是UITexture,因为UITexture有Material选项,这样才可以使用我们的遮罩材质。下面是遮罩Shader的代码:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667Shader"Custom/CircleAlphaMask"{Properties{_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{LightingOffZWriteOffCullbackFog{ModeOff}Tags{"Queue"="Transparent""IgnoreProjector"="True"}BlendSrcAlphaOneMinusSrcAlphaSubShader{Pass{CGPROGRAM#pragmavertexvert#pragmafragmentfragsampler2D_MainTex;sampler2D_MaskTex;fixed4_Color;float_Progress;structappdata{float4vertex:POSITION;float4texcoord:TEXCOORD0;};structv2f{float4pos:SV_POSITION;float2uv:TEXCOORD0;};v2fvert(appdatav){v2fo;o.pos=mul(UNITY_MATRIX_MVP,v.vertex);o.uv=v.texcoord.xy;returno;}half4frag(v2fi):COLOR{fixed4c=_Color*tex2D(_MainTex,i.uv);fixedca=tex2D(_MaskTex,i.uv).a;c.a*=ca>=_Progress?0:1;returnc;}ENDCG}}SubShader{AlphaTestLEqual[_Progress]Pass{SetTexture[_MaskTex]{combinetexture}SetTexture[_MainTex]{combinetexture,previous}}}}Fallback"Transparent/VertexLit"}新建一个材质,把Shader赋予这个新建立的材质,然后设置如下属性,如图所示:最后通过代码来控制进度的显示:123456789101112usingUnityEngine;usingSystem.Collections;publicclassExpBar:MonoBehaviour{publicUITextureuiTexture;voidAwake(){this.uiTexture.material.SetFloat("_Progress",0.9f);}}把ExpBar.cs拖到ExpBar对象上,然后把Bar对象拖到uiTexture属性上,如图所示: