在一开始的时候我利用shader对目标图片进行翻转
shader代码如下:
Shader "Custom/FragMove" {
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
//输入结构
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float4 vertex : SV_POSITION;
float2 uv : TEXCOORD0;
};
sampler2D _MainTex;
float _MoveSpeed;
v2f vert(appdata data)
{
v2f v;
v.vertex = UnityObjectToClipPos(data.vertex);
v.uv = data.uv;
return v;
}
float4 frag(v2f vert) : SV_Target //SV_Target是输出数据
{
float2 OffsetUV = vert.uv;
OffsetUV.x = OffsetUV.x * -1;//x轴翻转
//OffsetUV.y = OffsetUV.y * -1;//y轴翻转
float4 texCol = tex2D(_MainTex, OffsetUV);
return texCol;
}
ENDCG
}
}
FallBack "Diffuse"
}
但是到image就显示不对了
图片直接变黑
后来知道sprite中wrap mode对uv的影响
若sprite中wrap mode为边界模式
则uv翻转后依然显示为边界
边界若为黑色则显示黑色(本人目标图片的边界为黑色)
于是我将wrap mode改成repeating
目标图片翻转后正常显示