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
并重新计算边界。这将保存对网格所做的更改。