MaterialPropertyBlock导致Z战斗精灵

时间:2018-09-19 21:26:51

标签: unity3d shader

我正在尝试在自定义的精灵着色器上使用MaterialPropertyBlock,但是只要在MaterialPropertyBlock内修改值,它似乎就会引起Z角冲突。


正如在下面的gif (gif 1)中所看到的,每次修改精灵的颜色时,它都会向前和向后跳跃,像Z形战斗一样闪烁。需要明确的是,是的,两个精灵都位于同一“排序层和排序”上。但是,具有相同配置的默认Sprite材质不会闪烁,看起来像gif 2。

alt text

gif 1:使用MaterialPropertyBlock更改值会导致闪烁


我尝试使用具有相同着色器的基本材质,并且没有任何闪烁问题。因此,问题肯定与MaterialPropertyBlock有关。

alt text

gif 2:使用基本材质效果完美(但效率低下)


所以我的问题是:我使用的MaterialPropertyBlock不正确吗?这是已知的人工产物吗?您如何处理?


SpriteRenderer spriteRenderer;
MaterialPropertyBlock mpb;

void OnEnable()
{
    spriteRenderer = GetComponent<SpriteRenderer>();
    mpb = new MaterialPropertyBlock();
    spriteRenderer.GetPropertyBlock(mpb);
}

void Update()
{
    mpb = new MaterialPropertyBlock();
    mpb.SetColor("_OutlineColor", OutlineColor);
    spriteRenderer.SetPropertyBlock(mpb);
}

0 个答案:

没有答案