Как сохранить 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();
}
}
