2015-11-01 18 views

回答

0

在一個新的腳本試試這個,把它添加到您的對象作爲一個組件:

C#:

class MaterialSetter : MonoBehaviour{ 
    public void SetMaterial(Material newMaterial) 
    { 
     Renderer renderer = GetComponent<Renderer>(); 
     renderer.material = newMaterial; 
    } 
} 

你可以從任何其它腳本中調用SetMaterial,只要你有關於你的目標目的。你可以,例如,在你的遊戲中添加一個start()函數,你MaterialSetter類的開頭設定的材料:

C#:

class MaterialSetter : MonoBehaviour{ 
    public Material StartMaterial; 

    // ... 
    void Start() 
    { 
     SetMaterial(StartMaterial); 
    } 
} 

現在如果你想通過名稱來設定材料,您的材料需要位於資產/資源文件夾中。您通過Resources.Load獲得的所有內容必須位於該文件夾中。然後代碼是這樣的:

C#:

class MaterialSetter : MonoBehaviour{ 
    public void SetMaterial(string materialName) 
    { 
     Material mat = Resources.Load(materialName, typeof(Material)) as Material; 
     Renderer renderer = GetComponent<Renderer>(); 
     renderer.material = newMaterial; 
    } 
} 

如果你想改變你的材料中使用的紋理(假設你使用的統一標準着色器),你必須通過獲得紋理參考或從你的資源,如果你想通過名字來得到它:

C#:

public void SetTexture(string textureName) 
{ 
    Texture tex = Resources.Load(textureName, typeof(Texture)) as Texture; 
    Renderer renderer = GetComponent<Renderer>(); 
    renderer.material.SetTexture("_MainTex", tex); 
} 
+0

能否請你解釋我還是讓C#,因爲我沒有用javascript那麼好什麼新型材料是所有行吟詩人r ..感謝您的幫助 –

+0

呵呵,我以爲你會用「Javascript」(這不是真正的JS,它是UnityScript;))代碼,因爲你把unityscript作爲標籤添加進來。我將添加C#代碼到我原來的答案。 newMaterial是您提供給SetMaterial函數的參數。這是您想要分配給對象的材質。如果您在理解上述代碼時遇到問題,我會建議您花一些時間使用C#(或任何語言),並收集一些關於函數調用等概念的理解。這是值得的努力:) – pLaw

+0

非常感謝,請告訴什麼newMaterial和其他,所以我可以使它工作 –