Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 如何在运行时保存修改的网格?_Unity3d - Fatal编程技术网

Unity3d 如何在运行时保存修改的网格?

Unity3d 如何在运行时保存修改的网格?,unity3d,Unity3d,在我的游戏中,我在运行时使用损坏算法修改网格 在那之后,我想拯救他们 我使用以下工具获取所有网格: MeshFilter[] meshfilters = MyObject.GetComponentsInChildren<MeshFilter>(); MeshFilter[]meshfilters=MyObject.GetComponentsInChildren(); 然后修改单个网格 如何将其保存在我的原始FBX文件中 感谢Unity的内部网格类型与FBX不同,FBX是一种文件存

在我的游戏中,我在运行时使用损坏算法修改网格

在那之后,我想拯救他们

我使用以下工具获取所有网格:

MeshFilter[] meshfilters = MyObject.GetComponentsInChildren<MeshFilter>();
MeshFilter[]meshfilters=MyObject.GetComponentsInChildren();
然后修改单个网格

如何将其保存在我的原始FBX文件中


感谢Unity的内部网格类型与FBX不同,FBX是一种文件存储格式,而Unity在运行时使用不同的内部结构以提高效率

据我所知,没有标准方法将运行时网格保存为FBX(这是3D建模软件的功能,而不是游戏引擎)

您可以以某种方式保存变形并在重新加载模型时重新应用它们,当我执行类似操作(运行时自定义生成的地形网格)时,我会在运行时生成网格,然后保存生成该网格所需的数据,然后将其传递到我最初用于生成网格的相同流中

可以在unity编辑器中序列化meshdata,因为meshdata实际上与FBX的格式不同(unity读取FBX,然后从FBX的数据生成网格资源,然后将该网格与FBX关联)。可以通过使用
AssetDatabase.CreateAsset()

但我不认为你打算这么做


如果您想要完整的FBX功能套件(蒙皮、动画、在其他unity项目中使用),并且希望在运行时使用它们,那么我知道您没有任何选项。除了实现您自己的FBX序列化库(不是一个真正合理的解决方案)

您将来会需要原始的、未修改的网格吗?我建议将变形与基础网格分开保存。我不确定FBX文件如何存储在Unity中,但您可以修改
sharedMesh
并重新计算边界。这将保存对网格所做的更改。