| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- using System;
- using UnityEditor;
- using UnityEngine;
- namespace ET.PackageManager.Editor
- {
- public class ETPackageCreateWindow : EditorWindow
- {
- #if !ODIN_INSPECTOR
- [MenuItem("ET/ETPackage 创建")]
- #endif
- private static void OpenWindow()
- {
- var window = GetWindow<ETPackageCreateWindow>();
- if (window != null)
- window.Show();
- }
- public static void CloseWindow()
- {
- GetWindow<ETPackageCreateWindow>()?.Close();
- }
- public EPackageCreateType PackageCreateType = EPackageCreateType.All;
- public EPackageRuntimeRefType RuntimeRefType = EPackageRuntimeRefType.All;
- public EPackageCreateFolderType FolderType = EPackageCreateFolderType.All;
- public string PackageAuthor;
- public string PackageName;
- public string PackageId;
- public string DisplayName;
- public string AssemblyName;
- public string Description;
- public bool ForceCreate;
- private string PackagePath;
- private void OnGUI()
- {
- EditorGUILayout.LabelField("提示:安装Odin 可使用更详细丰富的界面");
- GUILayout.Space(10);
- if (GUILayout.Button("ETPackage 创建文档"))
- {
- Application.OpenURL("https://lib9kmxvq7k.feishu.cn/wiki/O6Ukw7k3SiBHmek8MMwc5HdInev");
- }
- GUILayout.Space(10);
- PackageCreateType = (EPackageCreateType)EditorGUILayout.EnumFlagsField("生成类型", PackageCreateType);
- RuntimeRefType = (EPackageRuntimeRefType)EditorGUILayout.EnumFlagsField("Runtime引用类型", RuntimeRefType);
- FolderType = (EPackageCreateFolderType)EditorGUILayout.EnumFlagsField("CodeMode类型", FolderType);
- GUILayout.Space(10);
- PackageAuthor = EditorGUILayout.TextField("作者", PackageAuthor);
- PackageName = EditorGUILayout.TextField("模块名称 cn.etetet.{0}", PackageName);
- PackageId = EditorGUILayout.TextField("模块ID", PackageId);
- DisplayName = EditorGUILayout.TextField("显示名称", DisplayName);
- AssemblyName = EditorGUILayout.TextField("程序集名称", AssemblyName);
- Description = EditorGUILayout.TextField("描述", Description);
- ForceCreate = EditorGUILayout.Toggle("强制创建", ForceCreate);
- GUILayout.Space(10);
- if (GUILayout.Button("创建", GUILayout.Height(50)))
- {
- Create();
- }
- }
- private void Create()
- {
- if ((int)PackageCreateType == 0)
- {
- UnityTipsHelper.Show("必须选择生成类型");
- return;
- }
- if (string.IsNullOrEmpty(PackageAuthor))
- {
- UnityTipsHelper.Show("必须输入 作者名称");
- return;
- }
- if (OnRuntimeRefTypeShowIf() && string.IsNullOrEmpty(AssemblyName))
- {
- UnityTipsHelper.Show("必须输入 程序集名称");
- return;
- }
- if (string.IsNullOrEmpty(DisplayName))
- {
- UnityTipsHelper.Show("必须输入 显示名称");
- return;
- }
- if (string.IsNullOrEmpty(PackageName))
- {
- UnityTipsHelper.Show("必须输入 模块名称");
- return;
- }
- PackagePath = ETPackageCreateHelper.GetPackagePath(ref PackageName);
- var projPath = EditorHelper.GetProjPath(PackagePath);
- if (!ETPackageCreateHelper.CreateDirectory(projPath, ForceCreate))
- {
- UnityTipsHelper.Show($"模块[ {PackageName} ] 已存在 请勿重复创建");
- return;
- }
- ETPackageCreateHelper.CreatePackage(
- new ETPackageCreateData
- {
- PackageAuthor = this.PackageAuthor,
- PackagePath = this.PackagePath,
- PackageId = int.Parse(this.PackageId),
- PackageName = this.PackageName,
- AssemblyName = this.AssemblyName,
- DisplayName = this.DisplayName,
- Description = this.Description,
- PackageCreateType = this.PackageCreateType,
- RuntimeRefType = this.RuntimeRefType,
- FolderType = this.FolderType,
- });
- UnityTipsHelper.Show($"创建成功 [ {PackageName} ]");
- PackageExecuteMenuItemHelper.ETAll();
- CloseWindow();
- AssetDatabase.SaveAssets();
- EditorApplication.ExecuteMenuItem("Assets/Refresh");
- }
- private bool OnRuntimeRefTypeShowIf()
- {
- return PackageCreateType.HasFlag(EPackageCreateType.Runtime);
- }
- }
- }
|