1、打开Unity,新建一个工程,在场景中添加一个 Plane,合理放置,具体如下图
2、在场景中导入一张中心对称的图片,具体如下图
3、在工程中新建一个 Shader,命名为 RotateShader,双击打开进行编辑,具体如下图
4、RotateShader 脚本具体代码如下图
5、RotateShader 脚本具体内容如下:Shader "觊皱筠桡Custom/RotateShader" { Properties{ _Color("Color", Color) = (1, 1, 1, 1) _MainTex("Main Texture", 2D) = "white"{} _RSpeed("Rotate Speed", Range(1, 100)) = 10 } SubShader{ tags{"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True" } Blend SrcAlpha OneMinusSrcAlpha Pass{ Name "RotateShader" Cull off CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" float4 _Color; sampler2D _MainTex; float _RSpeed; struct v2f{ float4 pos : POSITION; float4 uv : TEXCOORD0; }; v2f vert (appdata_base v){ v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); o.uv = v.texcoord; return o; } half4 frag(v2f i) : COLOR{ float2 uv = i.uv.xy - float2(0.5, 0.5); uv = float2(uv.x * cos(_RSpeed * _Time.x) - uv.y * sin(_RSpeed * _Time.x), uv.x * sin(_RSpeed * _Time.x) + uv.y * cos(_RSpeed * _Time.x)); uv += float2(0.5, 0.5); half4 c = tex2D(_MainTex, uv) * _Color; return c; } ENDCG } }}
6、脚本编译正确,回到unity,在工程中添加一个材质,可以命名为 RotateMaterial,把材质的 Shader 设置为刚才新建的 RotateShader,并把把贴图设置上,具体如下图
7、然后把材质赋给 Plane,运行场景,具体如效果如下图
8、发现旋转时边缘有重复图案,把贴图的 Wrap Mode 设置为 Clamp,具体如下图
9、运行场景,即会发现边缘的重复图案消失了,具体如下图