c# - 如何将 Unity3d Mesh 保存到文件?

标签 c# unity3d

在运行时我创建了一个网格。我想保存它,使其成为我项目中的一项 Assets ,这样我就不必每次都重新创建它。

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

最佳答案

您可以使用 Mesh Serializer: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 MeshSerializer.ReadMesh(bytes);
    }
    return null;
}

关于c# - 如何将 Unity3d Mesh 保存到文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35674647/

相关文章:

c# - 异步运行两个任务

c# - 将 Keith Hill 的 PowerShell Get-Clipboard 和 Set-Clipboard 转换为 PSM1 脚本

c# - 在 Azure 中发布时 Web 应用程序行为不同

c# - 如何使用 unity3d 在圆柱体/钟摆上保持位置

c# - 关于 Unity3D SOLID SRP 的建议

unity3d - 统一 5 : Automatically specifying the triangle list for the vertices of a mesh

c# - 如何在 LayoutGroup 中跟踪 UI 游戏对象的移动?

c# - 从结构中读取双字段

c# - PInvoking 时将参数声明为 [In] 有什么意义吗?

vector - 如何沿圆的圆周从向量点 A 移动 n 度? (包括图像)