| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using UnityEditor;
- using UnityEngine;
- namespace YIUIFramework.Editor
- {
- public static class MenuItemYIUIPanel
- {
- [MenuItem("Assets/YIUI/Create UIPanel", false, 1)]
- static void CreateYIUIPanelByFolder()
- {
- var activeObject = Selection.activeObject as DefaultAsset;
- if (activeObject == null)
- {
- UnityTipsHelper.ShowError($"请在路径 {YIUIConstHelper.Const.UIProjectResPath}/xxx/{YIUIConstHelper.Const.UIPrefabs} 下右键创建");
- return;
- }
- var path = AssetDatabase.GetAssetPath(Selection.activeObject);
- if (!path.Contains(YIUIConstHelper.Const.UIProjectResPath))
- {
- UnityTipsHelper.ShowError($"请在路径 {YIUIConstHelper.Const.UIProjectResPath}/xxx/{YIUIConstHelper.Const.UIPrefabs} 下右键创建");
- return;
- }
- CreateYIUIPanelByPath(path);
- }
- internal static void CreateYIUIPanelByPath(string path)
- {
- if (!path.Contains(YIUIConstHelper.Const.UIProjectResPath))
- {
- UnityTipsHelper.ShowError($"请在路径 {YIUIConstHelper.Const.UIProjectResPath}/xxx/{YIUIConstHelper.Const.UIPrefabs} 下右键创建");
- return;
- }
- var saveName = $"{YIUIConstHelper.Const.UIProjectName}{YIUIConstHelper.Const.UIPanelName}";
- var savePath = $"{path}/{saveName}.prefab";
- if (AssetDatabase.LoadAssetAtPath(savePath, typeof(Object)) != null)
- {
- UnityTipsHelper.ShowError($"已存在 请先重命名 {saveName}");
- return;
- }
- var createPanel = CreateYIUIPanel();
- PrefabUtility.SaveAsPrefabAsset(createPanel, savePath);
- Object.DestroyImmediate(createPanel);
- UIMenuItemHelper.SelectAssetAtPath(savePath);
- }
- private static GameObject CreateYIUIPanel(GameObject activeObject = null)
- {
- //panel
- var panelObject = new GameObject();
- var panelRect = panelObject.GetOrAddComponent<RectTransform>();
- panelObject.GetOrAddComponent<CanvasRenderer>();
- var cdeTable = panelObject.GetOrAddComponent<UIBindCDETable>();
- cdeTable.UICodeType = EUICodeType.Panel;
- cdeTable.IsSplitData = false;
- cdeTable.PanelOption |= EPanelOption.TimeCache;
- var panelEditorData = cdeTable.PanelSplitData;
- panelEditorData.Panel = panelObject;
- panelObject.name = $"{YIUIConstHelper.Const.UIProjectName}{YIUIConstHelper.Const.UIPanelName}";
- if (activeObject != null)
- {
- panelRect.SetParent(activeObject.transform, false);
- EditorUtility.SetDirty(activeObject);
- }
- panelRect.ResetToFullScreen();
- //阻挡图
- var backgroundObject = new GameObject();
- var backgroundRect = backgroundObject.GetOrAddComponent<RectTransform>();
- backgroundObject.GetOrAddComponent<CanvasRenderer>();
- backgroundObject.GetOrAddComponent<UIBlock>();
- backgroundObject.name = "UIBlockBG";
- backgroundRect.SetParent(panelRect, false);
- backgroundRect.ResetToFullScreen();
- panelObject.SetLayerRecursively(LayerMask.NameToLayer("UI"));
- return panelObject;
- }
- }
- }
|