Unity Shader教程之 序列帧动画效果的实现

 时间:2024-10-16 01:23:12

UnityShader教程之序列帧动画效果的实现,本节介绍,在Unity患束锍瓜开发中,使用Shader实现序列帧动画播放的效果,具体如下

Unity Shader教程之 序列帧动画效果的实现

Unity Shader教程之 序列帧动画效果的实现

工具/原料

Unity

方法/步骤

1、在Unity中新建一个工程,并且在场景中添加一个Plane,具体如下图

Unity Shader教程之 序列帧动画效果的实现

Unity Shader教程之 序列帧动画效果的实现

2、导入一个序列图,一般的序列图效果如下图

Unity Shader教程之 序列帧动画效果的实现

Unity Shader教程之 序列帧动画效果的实现

3、在在工程中新建一个Shader脚本,命名为UVAnimation,双击打开进行代码编辑,具体如下图

Unity Shader教程之 序列帧动画效果的实现

4、UVAnimation脚本具体代码如下图

Unity Shader教程之 序列帧动画效果的实现

Unity Shader教程之 序列帧动画效果的实现

Unity Shader教程之 序列帧动画效果的实现

5、UVAnimation脚本具体内容如下:Shader"Cust艺皱麾酪om/UVAnimation"{Prop髫潋啜缅erties{_Color("BaseColor",Color)=(1,1,1,1)_MainTex("Base(RGB)",2D)="white"{}}SubShader{tags{"Queue"="Transparent""RenderType"="Transparent""IgnoreProjector"="True"}BlendSrcAlphaOneMinusSrcAlphaPass{CGPROGRAM#pragmavertexvert#pragmafragmentfrag#include"UnityCG.cginc"float4_Color;sampler2D_MainTex;structv2f{float4pos:POSITION;float2uv:TEXCOORD0;};float2moveUV(float2vertUV){//因为序列图有12帧所以是12floattextureNum=12.0;floattimePerFrame=100;floatindex=frac(_Time.x/textureNum*timePerFrame);float2uvScale=float2(1/textureNum,1);if(index<=uvScale.x)returnvertUV*uvScale;elseif(index<=2*uvScale.x)returnvertUV*uvScale+float2(uvScale.x,0.0);elseif(index<=3*uvScale.x)returnvertUV*uvScale+float2(2*uvScale.x,0.0);elseif(index<=4*uvScale.x)returnvertUV*uvScale+float2(3*uvScale.x,0.0);elseif(index<=5*uvScale.x)returnvertUV*uvScale+float2(4*uvScale.x,0.0);elseif(index<=6*uvScale.x)returnvertUV*uvScale+float2(5*uvScale.x,0.0);elseif(index<=7*uvScale.x)returnvertUV*uvScale+float2(6*uvScale.x,0.0);elseif(index<=8*uvScale.x)returnvertUV*uvScale+float2(7*uvScale.x,0.0);elseif(index<=9*uvScale.x)returnvertUV*uvScale+float2(8*uvScale.x,0.0);elseif(index<=10*uvScale.x)returnvertUV*uvScale+float2(9*uvScale.x,0.0);elseif(index<=11*uvScale.x)returnvertUV*uvScale+float2(10*uvScale.x,0.0);elsereturnvertUV*uvScale+float2(11*uvScale.x,0.0);}v2fvert(appdata_basev){v2fo;o.pos=mul(UNITY_MATRIX_MVP,v.vertex);o.uv=moveUV(v.texcoord.xy);returno;}half4frag(v2fi):COLOR{half4c=tex2D(_MainTex,i.uv)*_Color;returnc;}ENDCG}}}

6、脚本编译正确,回到Unity新建一个材质,把Shade筠续师诈r设置为新建的Shader,图片附上对应的序列帧图片,并把材质赋给Plane,具体如下图

Unity Shader教程之 序列帧动画效果的实现

Unity Shader教程之 序列帧动画效果的实现

7、运行场景,就实现序列帧动画效果,具体如下图

Unity Shader教程之 序列帧动画效果的实现

王者荣耀如何调整分路? 为什么我赵云技能滑不快 浮生为卿歌武则天是谁 王者营地如何设置铭文陌生人不可见? 王者荣耀如何投屏到电视机上
热门搜索
蓝鲸图片 罗圈腿图片 忧郁图片 秋千图片 奥特曼的图片