Version: 2017.2
public Material material ;


返回指定给渲染器的第一个实例化 Material

修改 material 将仅更改该对象的材质。

如果材质被任何其他渲染器使用, 则克隆共享的材质并从现在开始使用它。

This function automatically instantiates the materials and makes them unique to this renderer. It is your responsibility to destroy the materials when the game object is being destroyed. Resources.UnloadUnusedAssets also destroys the materials but it is usually only called when loading a new level.

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { Material m_Material;

void Start() { //Fetch the Material from the Renderer of the GameObject m_Material = GetComponent<Renderer>().material; print("Materials " + Resources.FindObjectsOfTypeAll(typeof(Material)).Length); }

void Update() { if (Input.GetKeyDown(KeyCode.A)) { //Output the amount of materials before GameObject is destroyed print("Materials " + Resources.FindObjectsOfTypeAll(typeof(Material)).Length); //Destroy GameObject Destroy(gameObject); } }

void OnMouseOver() { // Change the Color of the GameObject when the mouse hovers over it m_Material.color =; }

void OnMouseExit() { //Change the Color back to white when the mouse exits the GameObject m_Material.color = Color.white; }

void OnDestroy() { //Destroy the instance Destroy(m_Material); //Output the amount of materials to show if the instance was deleted print("Materials " + Resources.FindObjectsOfTypeAll(typeof(Material)).Length); } }