Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
/// <Summary>
/// 結合したメッシュをアセットとして保存します。
/// 保存先は現在開いているシーン名のフォルダです。
/// </Summary>
void SaveMeshAsAsset(Mesh saveMesh)
{
// 現在開いているシーンのパスを取得します。
string scenePath = EditorSceneManager.GetActiveScene().path;
// フォルダの存在を確認します。
string folderPath = scenePath.Replace(".unity", "");
bool existFolder = AssetDatabase.IsValidFolder(folderPath);
// フォルダがない場合は作成します。
if (!existFolder)
{
string sceneName = EditorSceneManager.GetActiveScene().name;
string parentFolder = folderPath.Substring(0, folderPath.LastIndexOf(sceneName) - 1);
string folderName = sceneName;
AssetDatabase.CreateFolder(parentFolder, folderName);
}
// メッシュを保存します。
string meshPath = $"{folderPath}/{saveMesh.name}.asset";
var asset = (Mesh)AssetDatabase.LoadAssetAtPath(meshPath, typeof(Mesh));
if (asset == null)
{
AssetDatabase.CreateAsset(saveMesh, meshPath);
}
else
{
EditorUtility.CopySerialized(saveMesh, asset);
AssetDatabase.SaveAssets();
}
AssetDatabase.Refresh();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment