影响所有预制件的材料?

时间:2017-04-06 03:50:02

标签: unity3d 2d shader sprite material

我正在开发2D平台游戏。我有一个带有素材的精灵和一个着色器,我发现here

着色器有一个值属性,可以影响精灵的溶解效果, 但是如果我在场景中多次使用相同的GameObject(作为预制或通过代码实例化),更改一种材质上的溶解值会影响所有具有相同材质的游戏对象(我尝试更改材质名称,克隆材质和所有类型的东西),我觉得我现在低调了,因为我使用相同的精灵(图像)

我可以做些什么来避免这种行为?

float dissolvePower = dissoleMaterial.GetFloat(dissolveProperty);        
float minus = -0.1f;
while (dissolvePower > 0)
{
    //print(dissolvePower);
    dissolvePower += minus;           
    dissoleMaterial.SetFloat(dissolveProperty, dissolvePower);           
    yield return new WaitForSeconds(0.07f);
}
print("Exit DeathDissolve()");
Destroy(gameObject);

1 个答案:

答案 0 :(得分:1)

您正在为每个GameObject使用相同的材料。

因此,如果更改材质的属性(如溶解值),无论是在游戏对象的检查器中还是在材质本身上执行此操作,都将更改使用该材质的每个游戏对象的值。 / p>

为避免这种情况,您需要其他材料。您可以复制材质,将其称为不同的材质,然后将该材质应用于您想要与众不同的游戏对象。