From 63b30ebd035eb3d6c6346f49d2da12a299df5da1 Mon Sep 17 00:00:00 2001
From: MuHua-123 <136542559+MuHua-123@users.noreply.github.com>
Date: Sat, 13 Sep 2025 15:48:27 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DBUG?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ModuleInput/InputControl/InputMenu.cs | 9 ++-
Assets/ModuleCore/ModuleSingle/ManagerMenu.cs | 81 -------------------
.../ModuleSingle/ManagerMenu.cs.meta | 11 ---
.../ModuleUI/ModuleUISingle/UIShortcutMenu.cs | 53 +++++++++++-
.../SampleScene/SampleScene.unity | 47 +----------
5 files changed, 60 insertions(+), 141 deletions(-)
delete mode 100644 Assets/ModuleCore/ModuleSingle/ManagerMenu.cs
delete mode 100644 Assets/ModuleCore/ModuleSingle/ManagerMenu.cs.meta
diff --git a/Assets/ModuleCore/ModuleInput/InputControl/InputMenu.cs b/Assets/ModuleCore/ModuleInput/InputControl/InputMenu.cs
index def603b..59a6e37 100644
--- a/Assets/ModuleCore/ModuleInput/InputControl/InputMenu.cs
+++ b/Assets/ModuleCore/ModuleInput/InputControl/InputMenu.cs
@@ -19,11 +19,16 @@ public class InputMenu : InputControl {
/// 鼠标左键
public void OnMouseLeft(InputValue inputValue) {
if (inputValue.isPressed) return;
- ManagerMenu.I.Close();
+ UIShortcutMenu.I.Close();
}
/// 鼠标右键
public void OnMouseRight(InputValue inputValue) {
- ManagerMenu.I.Open();
+ UIShortcutMenu.I.Add("测试1/测试11", () => { Debug.Log("测试1/测试11"); });
+ UIShortcutMenu.I.Add("测试1/测试12", () => { Debug.Log("测试1/测试12"); });
+
+ UIShortcutMenu.I.Add("测试2", () => { Debug.Log("测试2"); });
+
+ UIShortcutMenu.I.Open();
}
#endregion
}
diff --git a/Assets/ModuleCore/ModuleSingle/ManagerMenu.cs b/Assets/ModuleCore/ModuleSingle/ManagerMenu.cs
deleted file mode 100644
index 851c039..0000000
--- a/Assets/ModuleCore/ModuleSingle/ManagerMenu.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using MuHua;
-
-///
-/// 菜单管理器
-///
-public class ManagerMenu : ModuleSingle {
-
- private List datas = new List();
-
- protected override void Awake() => NoReplace(false);
-
- private void Start() {
- // 初始化菜单项数据
- Add("建筑/伐木场", () => Debug.Log("伐木场"));
- Add("建筑/农场", () => Debug.Log("农场"));
- Add("建筑/矿场", () => Debug.Log("矿场"));
- Add("建筑/房屋/木屋", () => Debug.Log("木屋"));
- Add("建筑/房屋/豪宅", () => Debug.Log("豪宅"));
-
- Add("单位/步兵", () => Debug.Log("步兵"));
- Add("单位/骑兵", () => Debug.Log("骑兵"));
-
- Add("拆除", () => Debug.Log("拆除"));
- }
-
- public void Open() => UIShortcutMenu.I.Open(datas);
-
- public void Close() => UIShortcutMenu.I.Close();
-
- /// 添加菜单项(方法)
- public void Add(string name, Action callback) {
- string[] names = name.Split('/');
-
- List datas = this.datas;
- for (int i = 0; i < names.Length; i++) {
- string menu = names[i];
- DataMenuItem item = datas.Find(obj => obj.name == menu);
- if (item == null) {
- item = new DataMenuItem { name = menu };
- if (i == names.Length - 1) { item.callback = callback; }
- datas.Add(item);
- }
- datas = item.items;
- }
- }
- /// 移除菜单项
- public void Remove(string name) {
- string[] names = name.Split('/');
- List datas = this.datas;
- DataMenuItem parent = null;
- DataMenuItem target = null;
-
- for (int i = 0; i < names.Length; i++) {
- string menu = names[i];
- target = datas.Find(obj => obj.name == menu);
- if (target == null) return; // 未找到,直接返回
- if (i == names.Length - 1) {
- // 找到要移除的项
- datas.Remove(target);
- return;
- }
- parent = target;
- datas = target.items;
- }
- }
-}
-///
-/// 菜单项目
-///
-public class DataMenuItem {
- /// 名称
- public string name;
- /// 回调
- public Action callback;
- /// 子菜单项
- public List items = new List();
-}
\ No newline at end of file
diff --git a/Assets/ModuleCore/ModuleSingle/ManagerMenu.cs.meta b/Assets/ModuleCore/ModuleSingle/ManagerMenu.cs.meta
deleted file mode 100644
index d662290..0000000
--- a/Assets/ModuleCore/ModuleSingle/ManagerMenu.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 4fbad1b7bdd1ba34da55091f94b08438
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ModuleCore/ModuleUI/ModuleUISingle/UIShortcutMenu.cs b/Assets/ModuleCore/ModuleUI/ModuleUISingle/UIShortcutMenu.cs
index a08a728..206a8c5 100644
--- a/Assets/ModuleCore/ModuleUI/ModuleUISingle/UIShortcutMenu.cs
+++ b/Assets/ModuleCore/ModuleUI/ModuleUISingle/UIShortcutMenu.cs
@@ -13,6 +13,9 @@ public class UIShortcutMenu : ModuleUISingle {
public VisualTreeAsset menuTreeAsset;
/// 项目模板
public VisualTreeAsset itemTreeAsset;
+
+ /// 数据列表
+ public List datas = new List();
/// 控件列表
public static List controls = new List();
@@ -25,7 +28,7 @@ public class UIShortcutMenu : ModuleUISingle {
private void OnDestroy() => controls.ForEach(control => control.Dispose());
/// 打开菜单
- public void Open(List datas) {
+ public void Open() {
Close();
Vector3 position = UITool.GetMousePosition(Element);
UIMenuPanel menuPanel = Create();
@@ -48,6 +51,43 @@ public class UIShortcutMenu : ModuleUISingle {
return menuPanel;
}
+ /// 添加菜单项(方法)
+ public void Add(string name, Action callback) {
+ string[] names = name.Split('/');
+
+ List datas = this.datas;
+ for (int i = 0; i < names.Length; i++) {
+ string menu = names[i];
+ DataMenuItem item = datas.Find(obj => obj.name == menu);
+ if (item == null) {
+ item = new DataMenuItem { name = menu };
+ if (i == names.Length - 1) { item.callback = callback; }
+ datas.Add(item);
+ }
+ datas = item.items;
+ }
+ }
+ /// 移除菜单项
+ public void Remove(string name) {
+ string[] names = name.Split('/');
+ List datas = this.datas;
+ DataMenuItem parent = null;
+ DataMenuItem target = null;
+
+ for (int i = 0; i < names.Length; i++) {
+ string menu = names[i];
+ target = datas.Find(obj => obj.name == menu);
+ if (target == null) return; // 未找到,直接返回
+ if (i == names.Length - 1) {
+ // 找到要移除的项
+ datas.Remove(target);
+ return;
+ }
+ parent = target;
+ datas = target.items;
+ }
+ }
+
/// 添加控件
public static void AddControl(UIControl control) => controls.Add(control);
/// 移除控件
@@ -121,3 +161,14 @@ public class UIMenuPanel : ModuleUIPanel, UIControl {
}
}
}
+///
+/// 菜单项目
+///
+public class DataMenuItem {
+ /// 名称
+ public string name;
+ /// 回调
+ public Action callback;
+ /// 子菜单项
+ public List items = new List();
+}
\ No newline at end of file
diff --git a/Assets/SceneManager/SampleScene/SampleScene.unity b/Assets/SceneManager/SampleScene/SampleScene.unity
index 95466b5..1679d26 100644
--- a/Assets/SceneManager/SampleScene/SampleScene.unity
+++ b/Assets/SceneManager/SampleScene/SampleScene.unity
@@ -534,8 +534,7 @@ Transform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
- m_Children:
- - {fileID: 1646925906}
+ m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1439912284
@@ -689,50 +688,6 @@ MonoBehaviour:
m_EditorClassIdentifier:
document: {fileID: 670296963}
SlideButtonTemplate: {fileID: 9197481963319205126, guid: 9452bd34d4b5bff4084d975753638b86, type: 3}
---- !u!1 &1646925905
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1646925906}
- - component: {fileID: 1646925907}
- m_Layer: 0
- m_Name: ManagerMenu
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1646925906
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1646925905}
- serializedVersion: 2
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_ConstrainProportionsScale: 0
- m_Children: []
- m_Father: {fileID: 1439912283}
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1646925907
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1646925905}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 4fbad1b7bdd1ba34da55091f94b08438, type: 3}
- m_Name:
- m_EditorClassIdentifier:
--- !u!1 &1922845062
GameObject:
m_ObjectHideFlags: 0