试试这个扩展方法
public static void ChangeMaterial(this GameObject go, Material mat)
{
go.renderer.material = mat;
}
然后你可以通过使用来调用它
if(hit.collider.gameObject.tag == "Colour1")
{
hit.gameObject.renderer.material.ChangeMaterial( Your Material );
}
这是另一种更改颜色的扩展方法
public static void ChangeColor(this Material mat, Color color)
{
mat.SetColor("_Color", color);
}
编辑:在游戏对象上找到了支持多材质的旧扩展方法
public static void ChangeColor(this GameObject go, Color color)
{
if(go.GetComponent<MeshRenderer>())
{
Material[] materials = go.gameObject.renderer.materials;
foreach(Material m in materials)
{
m.SetColor("_Color", color);
}
}
}
最后,为了更具体地解决您的问题,这是您的最后一个功能
public static void ChangeColor(GameObject[] gameObjects, Color color)
{
foreach(GameObject gameObject in GameObjects)
{
gameObject.renderer.material.ChangeColor( "Your Color" );
}
}
那么你可以这样称呼它:
if(hit.collider.gameObject.tag == "Colour1")
{
GameObject[] _Colums = GameObject.FindGameObjectsWithTag("column");
ChangeColor(_Colums, "Your Color");
}