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

时间:2019-01-17 21:00:35

标签: unity3d

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

之后,我想保存它们。

我得到了所有网格物体:

MeshFilter[] meshfilters = MyObject.GetComponentsInChildren<MeshFilter>();

然后我修改单个网格。

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

谢谢

1 个答案:

答案 0 :(得分:1)

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

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

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

可以在统一的编辑器中序列化网格数据,因为meshdata实际上是与FBX不同的格式(Unity读取FBX,然后从FBX的数据生成网格资产,然后将该网格与FBX)可以通过AssetDatabase.CreateAsset() https://docs.unity3d.com/ScriptReference/AssetDatabase.CreateAsset.html

但是我不认为这是您打算要做的。

如果您想要完整的FBX功能套件(蒙皮,动画,在其他统一项目中使用),并且希望在运行时使用它们,则实际上我没有任何选择。缺少实现自己的FBX序列化库的方法(不是真正的解决方案)