如何在游戏中存储网格[不在编辑器模式下]?

时间:2019-04-10 06:19:09

标签: c# unity3d

我尝试了Assetdatabase,然后才知道它仅在编辑器模式下起作用...现在如何在播放模式下存储网格,然后又要加载它?

var savePath1 = "Assets/" + saveMaterial + ".asset";
if (AssetDatabase.LoadAssetAtPath(savePath1, typeof(Mesh))) {
    AssetDatabase.DeleteAsset(savePath1);
    AssetDatabase.CreateAsset(pf.mesh, savePath1);
    //here pf is a reference of sphere(gameobject)   
}

1 个答案:

答案 0 :(得分:1)

网格是一种相对简单的结构,对于单个子网格,您可以在运行时很容易地将其序列化为json或其他格式

[System.Serializable]
public class MeshEquivalent
{
    public Vector3[] vertices;
    public Vector3[] normals;
    public Vector2[] uv;
    public int[] triangles;
    public MeshEquivalent(Mesh mesh)
    {
        vertices = mesh.vertices;
        uv = mesh.uv;
        normals = mesh.normals;
        triangles = mesh.triangles;
    }
}

还有其他uv通道(您可能不需要),子网格(相同)和边界可以重新计算。可以使用相反的过程来重建该网格。