2016-02-27 92 views
1

在运行时我创建了一个Mesh。我想保存这个,所以这是我项目中的一项资产,所以我不必每次都重新创建它。如何保存Unity3d网格文件?

如何将运行时创建的网格保存到我的资源文件夹中?

+0

一个非常有用的技巧是:只要有东西在你的资产有一个简单的网格(使其在Cheetah3D开始...只是盒子,不管)。现在,而不是从头开始,将其作为基础 - 删除所有vert,并从头开始。实际上保存并且它实际上重写资产。这是一个令人难以置信的节省时间的窍门 - 它可以为您节省所有无意义的设置代码。 – Fattie

回答

3

您可以使用网串行http://wiki.unity3d.com/index.php?title=MeshSerializer2

public static void CacheItem(string url, Mesh mesh) 
{ 
    string path = Path.Combine(Application.persistentDataPath, url); 
    byte [] bytes = MeshSerializer.WriteMesh(mesh, true); 
    File.WriteAllBytes(path, bytes); 
} 

它不会保存到资源文件夹,因为这一个在运行时不存在了。您很可能会将其保存到实际存储数据的持久数据路径中。

然后你可以检索它只是去周围的其他方法:

public static Mesh GetCacheItem(string url) 
{ 
    string path = Path.Combine(Application.persistentDataPath, url); 
    if(File.Exists(path) == true) 
    { 
     byte [] bytes = File.ReadAllBytes(path); 
     return MeshSerialize.ReadMesh(bytes); 
    } 
    return null; 
}