This commit is contained in:
陈思海 2025-09-10 14:26:54 +08:00
parent 8746a69c62
commit 7157a9fa25
6 changed files with 33 additions and 62 deletions

View File

@ -2,20 +2,22 @@
using UnityEditor; using UnityEditor;
using UnityEngine; using UnityEngine;
namespace AlicizaX.UI.Editor namespace AlicizaX.UI.Editor {
{ public static class UIGenerateEditorTool {
public static class UIGenerateEditorTool [MenuItem("GameObject/UI生成绑定/热更工程UI代码", priority = 10)]
{ public static void GenerateHotfixUIScript() {
[MenuItem("GameObject/UI工具/热更工程UI代码", priority = -1)] UIScriptGeneratorHelper.GenerateAndAttachScript(
public static void GenerateHotfixUIScript() Selection.gameObjects.FirstOrDefault(),
{ UIGenerateConfiguration.Instance.UIScriptGenerateConfig.HotFixProjectUIScriptGenerateData
UIGenerateWindow.ShowWindow(Selection.gameObjects.FirstOrDefault(),UIGenerateConfiguration.Instance.UIScriptGenerateConfig.HotFixProjectUIScriptGenerateData); );
} }
[MenuItem("GameObject/UI工具/主工程UI代码", priority = -1)] [MenuItem("GameObject/UI生成绑定/主工程UI代码", priority = 21)]
public static void GenerateMainUIScript() public static void GenerateMainUIScript() {
{ UIScriptGeneratorHelper.GenerateAndAttachScript(
UIGenerateWindow.ShowWindow(Selection.gameObjects.FirstOrDefault(),UIGenerateConfiguration.Instance.UIScriptGenerateConfig.MainProjectUIScriptGenerateData); Selection.gameObjects.FirstOrDefault(),
UIGenerateConfiguration.Instance.UIScriptGenerateConfig.MainProjectUIScriptGenerateData
);
} }
} }
} }

View File

@ -1,42 +0,0 @@
using UnityEditor;
using UnityEngine;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using AlicizaX.UI.Editor;
using AlicizaX.UI.Runtime;
using UnityEngine.UIElements;
public class UIGenerateWindow : EditorWindow
{
private GameObject targetObject;
public static GameObject GetTargetObject()
{
return GetWindow<UIGenerateWindow>().targetObject;
}
public static void ShowWindow(GameObject target, UIScriptGenerateData scriptGenerateData)
{
var window = GetWindow<UIGenerateWindow>(false, "UI Config Editor", false);
window.maxSize = Vector2.zero;
window.minSize = Vector2.zero;
window.rootVisualElement.style.display = DisplayStyle.None;
window.rootVisualElement.parent.style.display = DisplayStyle.None;
window.Initlize(target, scriptGenerateData);
}
public static void CloseWindow()
{
var window = GetWindow<UIGenerateWindow>(false, "UI Config Editor");
window.Close();
}
private void Initlize(GameObject target, UIScriptGenerateData scriptGenerateData)
{
targetObject = target;
UIScriptGeneratorHelper.GenerateAndAttachScript(targetObject, scriptGenerateData);
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 7bfa0d164c11486cb3a133829d53dccf
timeCreated: 1739339632

View File

@ -44,7 +44,7 @@ namespace AlicizaX.UI.Editor
} }
public static class UIScriptGeneratorHelper internal static class UIScriptGeneratorHelper
{ {
private static UIGenerateConfiguration _uiGenerateConfiguration; private static UIGenerateConfiguration _uiGenerateConfiguration;
@ -305,6 +305,7 @@ namespace AlicizaX.UI.Editor
public static void GenerateAndAttachScript(GameObject targetObject, UIScriptGenerateData scriptGenerateData) public static void GenerateAndAttachScript(GameObject targetObject, UIScriptGenerateData scriptGenerateData)
{ {
EditorPrefs.SetInt("InstanceId", targetObject.GetInstanceID());
UIBindDatas.Clear(); UIBindDatas.Clear();
GenerateNameSpace = scriptGenerateData.NameSpace; GenerateNameSpace = scriptGenerateData.NameSpace;
ArrayComs.Clear(); ArrayComs.Clear();
@ -377,12 +378,25 @@ namespace AlicizaX.UI.Editor
UIBindDatas.Clear(); UIBindDatas.Clear();
ArrayComs.Clear(); ArrayComs.Clear();
var className = EditorPrefs.GetString("Generate"); var className = EditorPrefs.GetString("Generate");
var targetObject = UIGenerateWindow.GetTargetObject(); // var targetObject = UIGenerateWindow.GetTargetObject();
int instanceId = EditorPrefs.GetInt("InstanceId", -1);
if (instanceId == -1)
{
return;
}
var targetObject = (GameObject)EditorUtility.InstanceIDToObject(instanceId);
if (!targetObject)
{
Debug.Log("UI脚本生成附加物体丢失!");
}
EditorPrefs.DeleteKey("Generate"); EditorPrefs.DeleteKey("Generate");
GetBindData(targetObject.transform); GetBindData(targetObject.transform);
AttachScriptToGameObject(targetObject, className); AttachScriptToGameObject(targetObject, className);
Debug.Log($"Generate {className} Successfully attached to game object"); Debug.Log($"Generate {className} Successfully attached to game object");
UIGenerateWindow.CloseWindow();
} }
} }

View File

@ -8,7 +8,7 @@ using UnityEngine.Windows;
namespace AlicizaX.UI.Editor namespace AlicizaX.UI.Editor
{ {
public class UISettingEditorWindow : OdinEditorWindow internal class UISettingEditorWindow : OdinEditorWindow
{ {
[MenuItem("Tools/AlicizaX/UI Setting Window")] [MenuItem("Tools/AlicizaX/UI Setting Window")]
private static void OpenWindow() private static void OpenWindow()

View File

@ -46,7 +46,7 @@ namespace AlicizaX.UI.Runtime
[SerializeField] [SerializeField]
[HideLabel] [HideLabel]
internal UXButton[] hotButtons; private UXButton[] hotButtons;
internal void BindHotKeys() internal void BindHotKeys()
{ {