影响所有预制件的材料?

问题描述:

我正在开发2D平台游戏。我有一个精灵和一个着色器,我发现here影响所有预制件的材料?

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

我该怎么做避免这种行为?

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

发布您用于更改材料或颜色的代码 – Programmer

+0

您应该使用代码编辑您的答案,因为它在评论中不可读。 – Maakep

您使用的是相同的材料为每个GameObjects的。

因此,如果您更改材质的属性(如溶解值),无论您是在检查器中为GameObject还是材质本身执行此操作,都将更改使用该材质的每个GameObject的值。

为了避免这种情况,您需要使用其他材料。您可以复制材质,将其称为不同的材质,然后将这些材质应用到您想与众不同的GameObject上。

+0

感谢您的回答...是的,我知道,我正在改变每个游戏对象的matrerial,而其他游戏对象不会受到变化的影响,只有具有相同精灵的那个! – Dude

+0

Material materialClone = Instantiate (materialDissolve); – Dude