2017-09-20 124 views
0

我想讓鯨魚的顏色不同。Unity FBX問題

一個會渲染這個皮膚,另一個會是另一個。

但是當我嘗試編輯顏色時,它們中的兩個顏色會同時更改。

他們的皮膚跟隨最後一個。

我該怎麼辦?

enter image description here

回答

4

爲了優化渲染,當兩個相同的對象使用相同的材​​料或網狀物,它實際上是所使用的相同的實例。簡單來說,你的兩隻鯨魚正在使用相同的材​​料。這是爲了保存繪製調用。

所以當你改變它時,它都會改變。

解決方案是複製材料並將其分配給其中的一個。現在你可以改變一個而不影響另一個。你還添加了一個額外的平局。

3

作爲複製材料的另一種解決方案(可以防止兩個鯨魚的配料!),您可以使用MaterialPropertyBlocks

它們通常很容易使用。在新腳本中,您創建一個MaterialPropertyBlock,將顏色設置爲您想要對象的顏色,並將MaterialPropertyBlock分配給對象的渲染器。

MaterialPropertyBlock.SetColor()有一個工作示例,雖然不需要繪製調用(這是一個過度設計的示例)。這足以:

Start() { 
    MaterialPropertyBlock mpb = new MaterialPropertyBlock(); 
    mpb.SetColor("_MainColor", new Color(1,0,0)); 
    gameObject.GetComponent<MeshRenderer>().SetPropertyBlock(mpb); 
} 

結果:

Only one material

這最終被從長遠來看更有效率,因爲你可以做一些與着色器很複雜的事情,有充分的對象使用相同的單一材質,但它們都有各自獨特的外觀,並且渲染速度不會受到影響。 硬件部分正在找出你想調整的着色器中的屬性名稱。

當然,結果只有在播放模式下運行時纔會顯示(除非您使用[ExecuteInEditMode]標記類別)。

+0

這是一個非常簡潔的方式,我沒有遇到過。 – Everts

+0

@Everts哦,是的,它超級整潔。 – Draco18s