Как сохранить mesh в unity?

Создаю mesh как переменную в коде, необходимо выгрузить ее в папку Assets.


Ответы (1 шт):

Автор решения: Yaroslav

Скрипт должен находится в папке с именем Editor! Иначе при билде проекта будет ошибка.

using UnityEngine;
using UnityEditor;

public static class MeshFilterContext 
{
    [MenuItem("CONTEXT/MeshFilter/Save Mesh Asset")]
    public static void SaveMeshContect (MenuCommand menuCommand) 
    {
        MeshFilter filter = menuCommand.context as MeshFilter;
        SaveMesh(filter, false);
    }

    [MenuItem("CONTEXT/MeshFilter/Save Mesh Asset (instance)")]
    public static void SaveMeshInstanceContect (MenuCommand menuCommand) 
    {
        MeshFilter filter = menuCommand.context as MeshFilter;
        SaveMesh(filter, true);
    }

    private static void SaveMesh (MeshFilter filter, bool instance) 
    {
        string path = EditorUtility.SaveFilePanel("Save Mesh Asset", "Assets/", mesh.name, "asset");
        if (string.IsNullOrEmpty(path))
            return;
        path = FileUtil.GetProjectRelativePath(path);
        Mesh mesh = filter.sharedMesh;
        Mesh targetMesh = instance ? Object.Instantiate(mesh) as Mesh : mesh;
        AssetDatabase.CreateAsset(targetMesh, path);
        AssetDatabase.SaveAssets();
    }
}

введите сюда описание изображения

→ Ссылка