我正在开发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);
答案 0 :(得分:1)
您正在为每个GameObject使用相同的材料。
因此,如果更改材质的属性(如溶解值),无论是在游戏对象的检查器中还是在材质本身上执行此操作,都将更改使用该材质的每个游戏对象的值。 / p>
为避免这种情况,您需要其他材料。您可以复制材质,将其称为不同的材质,然后将该材质应用于您想要与众不同的游戏对象。