ProjectDDD/Assets/_DDD/Editor/ProjectSetupMenu.cs
2025-08-18 16:54:25 +09:00

45 lines
1.2 KiB
C#

using System.Linq;
using UnityEditor;
using UnityEngine;
namespace DDD
{
public static class ProjectSetupMenu
{
[MenuItem("ProjectDDD/Project Setup", priority = 0)]
public static void OpenSetupByType()
{
var guids = AssetDatabase.FindAssets("t:" + nameof(ProjectDDD_Setup));
if (guids == null || guids.Length == 0)
{
EditorUtility.DisplayDialog(
"Project Setup",
$"타입 '{nameof(ProjectDDD_Setup)}'의 자산을 찾을 수 없습니다.\n" +
"아래 메뉴로 새 자산을 생성하고 원하는 위치에 보관하세요:\n" +
$"Create > {GetCreateMenuName()}",
"확인");
return;
}
var path = AssetDatabase.GUIDToAssetPath(guids.First());
var asset = AssetDatabase.LoadAssetAtPath<ProjectDDD_Setup>(path);
Selection.activeObject = asset;
EditorGUIUtility.PingObject(asset);
}
private static string GetCreateMenuName()
{
var attributes = typeof(ProjectDDD_Setup).GetCustomAttributes(typeof(CreateAssetMenuAttribute), false);
if (attributes != null && attributes.Length > 0)
{
var attr = (CreateAssetMenuAttribute)attributes[0];
return string.IsNullOrEmpty(attr.menuName) ? typeof(ProjectDDD_Setup).Name : attr.menuName;
}
return typeof(ProjectDDD_Setup).Name;
}
}
}