2016-02-27 3 views
1

Во время выполнения я создаю сетку. Я хотел бы сохранить это, поэтому это актив в моем проекте, поэтому мне не нужно его повторно создавать каждый раз.Как сохранить файл Unity3d в файл?

Как сохранить сетку, созданную во время выполнения, в мою папку с активами?

+0

очень полезный трюк является: просто начать с чем-то в ваших активах, что имеет тривиальную сетку (сделать это в Cheetah3D ... просто коробка, что угодно). Теперь вместо того, чтобы начать с нуля, используйте это как основу - сотрите все вершины и начните с нуля. Фактически сохраняет и фактически перезаписывает актив. Это невероятно сберегающий время трюк - это избавляет вас от всего нецензурного кода. – 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); 
} 

Это не спасет в папку Asset, так как это один больше не существует во время выполнения. Скорее всего, вы сохраните его на постоянном пути данных, который предназначен для хранения данных на самом деле.

Тогда вы можете получить это просто происходит наоборот:

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; 
}