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);
}
能否請你解釋我還是讓C#,因爲我沒有用javascript那麼好什麼新型材料是所有行吟詩人r ..感謝您的幫助 –
呵呵,我以爲你會用「Javascript」(這不是真正的JS,它是UnityScript;))代碼,因爲你把unityscript作爲標籤添加進來。我將添加C#代碼到我原來的答案。 newMaterial是您提供給SetMaterial函數的參數。這是您想要分配給對象的材質。如果您在理解上述代碼時遇到問題,我會建議您花一些時間使用C#(或任何語言),並收集一些關於函數調用等概念的理解。這是值得的努力:) – pLaw
非常感謝,請告訴什麼newMaterial和其他,所以我可以使它工作 –