2017-04-06 41 views
0

我正在開發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

回答

1

您使用的是相同的材料爲每個GameObjects的。

因此,如果您更改材質的屬性(如溶解值),無論您是在檢查器中爲GameObject還是材質本身執行此操作,都將更改使用該材質的每個GameObject的值。

爲了避免這種情況,您需要使用其他材料。您可以複製材質,將其稱爲不同的材質,然後將這些材質應用到您想與衆不同的GameObject上。

+0

感謝您的回答...是的,我知道,我正在改變每個遊戲對象的matrerial,而其他遊戲對象不會受到變化的影響,只有具有相同精靈的那個! – Dude

+0

Material materialClone = Instantiate (materialDissolve); – Dude