使用脚本从球体更改材质图像/纹理

时间:2015-11-01 15:21:16

标签: c# unity3d

我试图从Sphere更改图像/纹理,这是带有代码的材质。

1 个答案:

答案 0 :(得分:0)

在新脚本中尝试此操作,并将其作为组件添加到对象中:

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);
    }
}

现在,如果要按名称设置材料,则材料需要位于资产/资源文件夹中。您通过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标准着色器),则必须通过引用或资源获取纹理,如果您想通过名称获取纹理:< / p>

C#:

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