Unity 消融特效教程之 简单消融效果的快速实现

 时间:2024-10-25 17:12:53

1、打开Unity,新建一个工程,具体如下图

Unity 消融特效教程之 简单消融效果的快速实现

2、在工程中新建一个 Shader 脚本,双击打开 Shader 进行编辑,具体如下图

Unity 消融特效教程之 简单消融效果的快速实现

3、Shader 脚本具体内容如下:Shader"Custom/Dissolve"{ Properties { _MainTex("Texture",2D)="white"{} _NoiseTex("Noise",2D)="white"{} _Threshold("Threshold",Range(0.0,1.0))=0.5 _EdgeLength("EdgeLength",Range(0.0,0.2))=0.1 _EdgeFirstColor("FirstEdgeColor",Color)=(1,1,1,1) _EdgeSecondColor("SecondEdgeColor",Color)=(1,1,1,1) } SubShader { Tags{"Queue"="Geometry""RenderType"="Opaque"}Pass { CullOff//要渲染背面保证效果正确CGPROGRAM #pragmavertexvert #pragmafragmentfrag #include"UnityCG.cginc"structappdata { float4vertex:POSITION; float2uv:TEXCOORD0; };structv2f { float4vertex:SV_POSITION; float2uvMainTex:TEXCOORD0; float2uvNoiseTex:TEXCOORD1; };sampler2D_MainTex; float4_MainTex_ST;sampler2D_NoiseTex; float4_NoiseTex_ST; float_Threshold; float_EdgeLength; fixed4_EdgeFirstColor; fixed4_EdgeSecondColor; v2fvert(appdatav) { v2fo; o.vertex=UnityObjectToClipPos(v.vertex); o.uvMainTex=TRANSFORM_TEX(v.uv,_MainTex);o.uvNoiseTex=TRANSFORM_TEX(v.uv,_NoiseTex); returno; } fixed4frag(v2fi):SV_Target {//镂空 fixedcutout=tex2D(_NoiseTex,i.uvNoiseTex).r; clip(cutout-_Threshold);//边缘颜色 if(cutout-_Threshold<_EdgeLength) { floatdegree=(cutout-_Threshold)/_EdgeLength; returnlerp(_EdgeFirstColor,_EdgeSecondColor,degree); }fixed4col=tex2D(_MainTex,i.uvMainTex); returncol; } ENDCG } }}

4、导入两张贴图,一个作为底图一个作为消融噪点图,并且设置为精灵图格式,具体如下图

Unity 消融特效教程之 简单消融效果的快速实现Unity 消融特效教程之 简单消融效果的快速实现Unity 消融特效教程之 简单消融效果的快速实现

5、在工程中,新建一个 Material ,并且设置 Shader 为刚才新建的 Shader,并且添加材质贴图,改变Threshold 就可以看到消融效果,改变EdgeLength 是调整 消融边缘效果,具体如下图

Unity 消融特效教程之 简单消融效果的快速实现

6、在场景中添加一个 Cube,把材质赋给 Cube,具体如下图

Unity 消融特效教程之 简单消融效果的快速实现Unity 消融特效教程之 简单消融效果的快速实现

7、在工程中,新建一个脚本 Test,来控制改变材质的Threshold 值,来实现脚本控制消融效果,打开脚本进行编辑,具体如下图

Unity 消融特效教程之 简单消融效果的快速实现

8、Test 脚本具体代码和代码说明如下图

Unity 消融特效教程之 简单消融效果的快速实现

9、Test 脚本具体内容如下:usingUnityEngine;publicclassTest:MonoBehaviour{//获得消融材质,设置消融的当前值,以及消融速度 privateMaterialmat; privatefloatcurrtentValue; publicfloatspeed=1.0f;//Usethisforinitialization voidStart(){//获得消融材质 mat=this.GetComponent<Renderer>().material; } //Updateiscalledonceperframe voidUpdate(){ //差值修改材质消融值,_Threshold为Shader中控制消融的参数 currtentValue=Mathf.Lerp(currtentValue,1.0f,Time.deltaTime*speed); if(!Mathf.Approximately(currtentValue,1.0f)){ mat.SetFloat("_Threshold",currtentValue); }}}

10、脚本编译正确,回到Unity界面,把脚本挂载到 Cube 上,具体如下图

Unity 消融特效教程之 简单消融效果的快速实现

11、运行场景,效果如下图

Unity 消融特效教程之 简单消融效果的快速实现

12、到此,《Unity 消融特效教程之 简单消融效果的快速实现》讲解结束,谢谢

  • 2015Pr CC如何调节声音,调低声音?
  • 文字描边数值调到多少文字才会更加明显
  • After effects球面文字动画
  • 解析造成腰部脂肪的原因
  • vegas如何将视频进行截图使用
  • 热门搜索
    结石是怎么形成的 drink怎么读 鹌鹑蛋怎么煮 zippo怎么换火石 心包积液怎么治疗 贵妇膏怎么用 word怎么转pdf 电信怎么查话费 我的世界西瓜怎么种 插不进去怎么办