[英]Changing MeshRenderer materials array does not update game object
我正在尝试在运行时将材质添加到网格渲染器,但是新材质不会出现在游戏中。 调试日志显示材质确实添加到了objRender.materials
数组中,但在场景中没有任何变化。
private void updateLockMaterial()
{
MeshRenderer objRender = GetComponentInChildren<MeshRenderer>();
List<Material> mats = objRender.materials.ToList();
mats.Add(Instantiate<Material>(lockMat));
Debug.Log(objRender.materials[objRender.materials.Length-1]); //Debugging
objRender.materials = mats.ToArray();
Debug.Log(objRender.materials[objRender.materials.Length - 1]); //Debugging
}
我也尝试过使用sharedMaterials
,但没有运气。
您将需要使用Material
构造函数在运行时创建一个新的Material
。
只需更换
mats.Add(Instantiate<Material>(lockMat));
取而代之的是
mats.Add(new Material(lockMat));
Material
文档有很多关于材质的其他有用信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.