官网原文解释:
CanUseSpriteAtlas tag
Set CanUseSpriteAtlas
tag to “False” if the shader is meant for sprites, and will not work when they are packed into atlases (see Sprite Packer).
翻译:
CanUseSpriteAtlas标签
CanUseSpriteAtlas
如果着色器用于精灵,则将标签设置为“ False”,并且在将它们打包为地图集时将不起作用(请参见Sprite Packer)。
实际效果,并没有发生官网所述的设置为False,Shader将不起作用,Shader仍然在正常地工作着(问题所在,无解)
Shader "Hidden/CanUseSpriteAtlasTest"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
}
SubShader
{
Tags
{
"CanUseSpriteAtlas" = "False" //默认为True 即允许图集
}
// No culling or depth
Cull Off
ZWrite Off
ZTest Always
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
sampler2D _MainTex;
fixed4 frag (v2f i) : SV_Target
{
fixed2 uv = i.uv;
uv.x = (uv.x + _Time.x * 10) % 1;
fixed4 col = tex2D(_MainTex, uv);
return col;
}
ENDCG
}
}
}
发现如下述问题等待解答
1、CanUseSpriteAtlas属性的实际作用是什么?
2、当Canvas处于WorldSpace、Screen Space-Camera 渲染模式时,Shader渲染队列必须大于2500,一般人只会注意到必须是Transparent(3000)透明队列的物体才会渲染出来,为什么?
新发现:
1、经过对比两种打图集方式,进行打包发现,Sprite Packer旧图集会比Sprite Atlas新图集占用更少的包体占用大小。