如图要获取划线物体并修改其材质球:
private Transform[] FindChild;
public Material ChangeMat;//变换后的材质球
private Material mat;
void Start()
{
FindChild = this.gameObject.GetComponentsInChildren<Transform>(true);//true表示包括隐藏物体的查找
foreach (Transform child in FindChild)
{
if(child.childCount == 1)//0为最下子物体即AttackPosition_Special
{
Transform FindLChild = child.GetChild(0);
mat = FindLChild.GetComponentInChildren<MeshRenderer>().material;
//Debug.Log("Mat");
}
}
}然后再做材质球的变化,记得拖拽。
这里要注意的是,如果代码运行无误,包括Debug也正常输出,且材质球由ShaderGraph制作,但材质球未发生变化,那么可考虑mat.shader = ChangeMat.shader;