2016-02-27 24 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; 
}