UnityShader实现百叶窗效果

  

本文实例为大家分享了UnityShader百叶窗展示的具体代码,供大家参考,具体内容如下

  

 UnityShader实现百叶窗效果

  

材质实现以上百叶窗效果,主要通过材质实现c#只是做开关控制

  

看到一篇文章弄的比较复杂,觉得可以都通过材质来实现,就动手了。

  

材质定义了2张纹理,自己随便找2张图片拖进去就行。

        材质“未点燃的/NewUnlitShader”   {   属性   {   _MainTex(“纹理”,2 d)=鞍咨眥}   _MainTex2 (“Texture2”、2 d)=鞍咨眥}   _StartFlag(“开始标记”,浮动)=0   _SpeedFactor(“速度”,范围(0.01,10))=0.1   _StartTime(“时间初始标记,不要手动设置”,浮动)=1   _Column(“百叶窗的列数”,浮动)=5   }   SubShader   {   标记{“RenderType”=安煌该鳌眪   LOD 100      通过   {   CGPROGRAM   # pragma顶点绿色   # pragma片段的破片//使雾工作   # pragma multi_compile_fog      # include“UnityCG.cginc”      struct appdata   {   float4顶点:位置;   float2紫外线:TEXCOORD0;   };      struct v2f   {   float2紫外线:TEXCOORD0;   float4顶点:SV_POSITION;   };      sampler2D _MainTex;   float4 _MainTex_ST;      sampler2D _MainTex2;   float4 _MainTex2_ST;      浮动_StartFlag;   浮动_Column;   浮动_SpeedFactor;   浮动_StartTime;      v2f绿色(appdata v)   {   v2f o;   o。顶点=UnityObjectToClipPos (v.vertex);   o。紫外线=TRANSFORM_TEX (v。紫外线、_MainTex);   返回啊;   }      fixed4碎片弹(v2f我):SV_Target   {   fixed4坳=0;//_StartFlag通过c#监听键盘事件,设置为1,作为开始动画的标记//步骤(a, b)=比;如果(b>=)返回1否则返回0//i.uv。i.uv x % (1/_Column)。x范围是0 - 1,分成_Column份每份(1/_Column)=_StartFlag *步骤(i.uv固定的结果。x % (1/_Column), (_Time。y - _StartTime) * _SpeedFactor);      如果结果==0)   {   坳=tex2D (_MainTex i.uv);   }   其他的   {   坳=tex2D (_MainTex2 i.uv);   }      返回上校;   }   ENDCG   }   }   }      

c#控制开关,点击键盘任意按键。挂到面板上

        使用System.Collections;   使用System.Collections.Generic;   使用UnityEngine;      公共类baiyechuang: MonoBehaviour {//用它来初始化   材料垫;   MeshRenderer meshRen;   无效的Start () {   meshRen=this.GetComponent();   打印(meshRen);   垫=meshRen.material;   打印(垫);   }      空白OnGUI () {   如果(Input.anyKeyDown)   {   事件e=Event.current;   如果(e.isMouse) {   Debug.Log (e.button);   }   如果(e.isKey)   {   如果(e。键码==KeyCode.None)   返回;   Debug.Log (e.keyCode);   mat.SetFloat (“_StartTime”, Time.timeSinceLevelLoad);   mat.SetFloat (" _StartFlag ", 1);   }   }   }         }      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

UnityShader实现百叶窗效果