繁体   English   中英

更改 MeshRenderer 材质数组不会更新游戏 object

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM