Hi, I am using Unity 5.5.1
I have a custom shader, it’s created from Sprite/Default, and I added 2 properties, like this
Properties
{
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
[MaterialToggle] PixelSnap ("Pixel snap", Float) = 0
[PerRendererData] _ActorY ("ActorY", Float) = 0 // My own data
[PerRendererData] _ActorZ ("ActorZ", Float) = 0 // My own data
}
And I set these 2 properties in my script:
SpriteRenderer SR;
MaterialPropertyBlock matProBlock = null;
void Update()
{
if (matProBlock == null)
matProBlock = new MaterialPropertyBlock();
SR.GetPropertyBlock(matProBlock);
matProBlock.SetFloat("_ActorY", trans.position.y);
matProBlock.SetFloat("_ActorZ", m_zHeight);
SR.SetPropertyBlock(matProBlock);
}
The problem is:
_ActorY and _ActorZ are always 0 when I get them in shader.
If I just use this code, everything is fine.
void Update()
{
SR.material.SetFloat("_ActorY", trans.position.y);
SR.material.SetFloat("_ActorZ", m_zHeight);
}
So, does SpriteRender eat my properties?