如何从编辑器脚本中的场景中提取每种材料?

问题描述

我必须编写一个编辑器脚本,将导入的场景(使用内部过程)的内容保存到Unity上。导入本身运行良好,我每个GameObject都有各自的材质,其中一些材质是通过 AssetBundle 导入的。

As you can see,all the materials are fine.

因此,当我保存场景时,我丢失了一些材质,因为它们来自AssetBundles。

Note : All materials here are marked as 'None',not 'Missing'

为了避免这个问题,我必须找到一种方法来将所有AssetBundle资源保存到Unity项目中,以保留我的材料引用。

目前,我尝试通过FindobjectsOfType获取所有渲染器。这是代码段:

        foreach (var renderer in FindobjectsOfType<Renderer>())
        {
            var materials = renderer.sharedMaterials;
            for (var i = 0; i < renderer.sharedMaterials.Length; i++)
            {
                var materialPath = materialsPath + "/Materials/" + materials[i].name + ".mat";

                if (!AssetDatabase.Contains(materials[i]))
                {
                    AssetDatabase.CreateAsset(materials[i],materialPath);
                }
            }
        }

这样可以保留材料,但丢弃纹理。 如果您想获得更多详细信息以提供帮助,请随时询问。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)