使用脚本从球体更改材质图像/纹理
本文关键字:图像 纹理 脚本 | 更新日期: 2023-09-27 18:20:02
我正在尝试用代码从"材质"的"球体"更改"图像/纹理"。
在新脚本中尝试此操作,并将其作为组件添加到对象中:
C#:
class MaterialSetter : MonoBehaviour{
public void SetMaterial(Material newMaterial)
{
Renderer renderer = GetComponent<Renderer>();
renderer.material = newMaterial;
}
}
您可以从任何其他脚本调用SetMaterial,前提是您有对目标对象的引用。例如,您可以在游戏开始时设置材质,向MaterialSetter类添加Start()函数:
C#:
class MaterialSetter : MonoBehaviour{
public Material StartMaterial;
// ...
void Start()
{
SetMaterial(StartMaterial);
}
}
现在,如果要按名称设置材质,则材质需要位于文件夹Assets/Resources中。您通过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;
}
}
如果要更改材质中使用的纹理(假设使用Unity Standard Shader),则必须通过引用或从资源中获取纹理(如果要通过名称获取):
C#:
public void SetTexture(string textureName)
{
Texture tex = Resources.Load(textureName, typeof(Texture)) as Texture;
Renderer renderer = GetComponent<Renderer>();
renderer.material.SetTexture("_MainTex", tex);
}