From a84a4e56b69e6b38a3af9150960f7f34a028ba4d Mon Sep 17 00:00:00 2001 From: tangbin <769851359@qq.com> Date: Sat, 19 Jul 2025 01:21:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=80=AA=E7=89=A9=E6=90=9E=E5=AE=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Maps/1000/XML/MonstersConfig.xml | 35 +- Assets/Scenes/SampleScene.unity | 302 +----------------- Assets/Scripts/Map/MapManager.Camera.cs | 8 + Assets/Scripts/Map/SceneArea.cs | 2 +- Assets/Scripts/UI/UIBaseItem.cs | 6 + Assets/Scripts/UI/UIMonsterItem.cs | 117 +------ Assets/Scripts/UI/UIMonsterPanel.cs | 82 ++++- 7 files changed, 100 insertions(+), 452 deletions(-) diff --git a/Assets/GameAssets/Maps/1000/XML/MonstersConfig.xml b/Assets/GameAssets/Maps/1000/XML/MonstersConfig.xml index 7233a5e..419b08a 100644 --- a/Assets/GameAssets/Maps/1000/XML/MonstersConfig.xml +++ b/Assets/GameAssets/Maps/1000/XML/MonstersConfig.xml @@ -2,43 +2,16 @@ - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index f18333e..47494f2 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -537,7 +537,6 @@ RectTransform: - {fileID: 2034936621} - {fileID: 222196070} - {fileID: 1806599535} - - {fileID: 1089439636} m_Father: {fileID: 2054237627} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} @@ -5901,7 +5900,7 @@ MonoBehaviour: m_FontStyle: 0 m_BestFit: 0 m_MinSize: 3 - m_MaxSize: 40 + m_MaxSize: 50 m_Alignment: 4 m_AlignByGeometry: 0 m_RichText: 1 @@ -7611,7 +7610,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: "\u683C\u5B50\u5217\u6570" + m_Text: "\u683C\u5B50\u603B\u9AD8" --- !u!222 &400502307 CanvasRenderer: m_ObjectHideFlags: 0 @@ -15413,85 +15412,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 795751229} m_CullTransparentMesh: 1 ---- !u!1 &796622637 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 796622638} - - component: {fileID: 796622640} - - component: {fileID: 796622639} - m_Layer: 5 - m_Name: Text (Legacy) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &796622638 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 796622637} - 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: 1089439636} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &796622639 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 796622637} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 10 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: "\u5220\u9664\u5206\u9875" ---- !u!222 &796622640 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 796622637} - m_CullTransparentMesh: 1 --- !u!1 &799717141 GameObject: m_ObjectHideFlags: 0 @@ -16741,6 +16661,7 @@ MonoBehaviour: mapNPCArea: {fileID: 687449962} mapTeleportArea: {fileID: 1286502939} mapReliveArea: {fileID: 655392906} + mapAudioTrigger: {fileID: 0} _curMapRegions: regionRowNum: 0 regionColNum: 0 @@ -21521,127 +21442,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1086954508} m_CullTransparentMesh: 1 ---- !u!1 &1089439635 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1089439636} - - component: {fileID: 1089439639} - - component: {fileID: 1089439638} - - component: {fileID: 1089439637} - m_Layer: 5 - m_Name: btnDeleteGroup - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1089439636 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1089439635} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0.000002810033} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 796622638} - m_Father: {fileID: 16935699} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 133, y: -81.60002} - m_SizeDelta: {x: 100, y: 30} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1089439637 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1089439635} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1089439638} - m_OnClick: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &1089439638 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1089439635} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1089439639 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1089439635} - m_CullTransparentMesh: 1 --- !u!1 &1097100022 GameObject: m_ObjectHideFlags: 0 @@ -34390,7 +34190,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: "\u683C\u5B50\u884C\u6570" + m_Text: "\u683C\u5B50\u603B\u5BBD" --- !u!222 &1766076126 CanvasRenderer: m_ObjectHideFlags: 0 @@ -36184,8 +35984,6 @@ GameObject: - component: {fileID: 1863547971} - component: {fileID: 1863547973} - component: {fileID: 1863547974} - - component: {fileID: 1863547975} - - component: {fileID: 1863547976} m_Layer: 5 m_Name: Window m_TagString: Untagged @@ -36252,46 +36050,6 @@ MonoBehaviour: uiMessageBox: {fileID: 1608300717} newMapTrans: {fileID: 0} bOvering: 0 ---- !u!223 &1863547975 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1863547970} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 2 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 1 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_VertexColorAlwaysGammaSpace: 0 - m_AdditionalShaderChannelsFlag: 25 - m_UpdateRectTransformForStandalone: 0 - m_SortingLayerID: 0 - m_SortingOrder: 1 - m_TargetDisplay: 0 ---- !u!114 &1863547976 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1863547970} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 --- !u!1 &1864759409 GameObject: m_ObjectHideFlags: 0 @@ -40147,8 +39905,6 @@ GameObject: - component: {fileID: 2054237627} - component: {fileID: 2054237630} - component: {fileID: 2054237629} - - component: {fileID: 2054237628} - - component: {fileID: 2054237631} - component: {fileID: 2054237632} m_Layer: 5 m_Name: MonstersPanel @@ -40180,34 +39936,11 @@ RectTransform: - {fileID: 129122987} m_Father: {fileID: 838871187} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 1, y: 0.5} - m_AnchorMax: {x: 1, y: 0.5} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 400, y: 1080} - m_Pivot: {x: 1, y: 0.5} ---- !u!223 &2054237628 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2054237626} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 2 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 1 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_VertexColorAlwaysGammaSpace: 0 - m_AdditionalShaderChannelsFlag: 0 - m_UpdateRectTransformForStandalone: 0 - m_SortingLayerID: 0 - m_SortingOrder: 1 - m_TargetDisplay: 0 + m_Pivot: {x: 0, y: 0.5} --- !u!114 &2054237629 MonoBehaviour: m_ObjectHideFlags: 0 @@ -40221,7 +39954,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0.7169812, g: 0.7169812, b: 0.7169812, a: 1} + m_Color: {r: 0.5943396, g: 0.5943396, b: 0.5943396, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -40246,23 +39979,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2054237626} m_CullTransparentMesh: 1 ---- !u!114 &2054237631 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2054237626} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 --- !u!114 &2054237632 MonoBehaviour: m_ObjectHideFlags: 0 @@ -40280,7 +39996,7 @@ MonoBehaviour: btnClose: {fileID: 1646704434} btnAddMonster: {fileID: 1737918060} btnAddGroup: {fileID: 1806599536} - btnDeleteGroup: {fileID: 1089439637} + btnDeleteGroup: {fileID: 0} txtMonsterID: {fileID: 515234013} txtName: {fileID: 1563312832} dropRefreshType: {fileID: 1225539914} diff --git a/Assets/Scripts/Map/MapManager.Camera.cs b/Assets/Scripts/Map/MapManager.Camera.cs index f2a1731..dce1e27 100644 --- a/Assets/Scripts/Map/MapManager.Camera.cs +++ b/Assets/Scripts/Map/MapManager.Camera.cs @@ -45,4 +45,12 @@ public partial class MapManager : MonoBehaviour mapRealWidth = x; mapRealHeight = y; } + + public void MoveToCamera(float x, float y) + { + Vector3 newPosition; + newPosition.x = Mathf.Clamp(x, 0, mapRealWidth); + newPosition.y = Mathf.Clamp(y, 0, mapRealHeight); + Camera.main.transform.position = new Vector3(x, y, -10); + } } diff --git a/Assets/Scripts/Map/SceneArea.cs b/Assets/Scripts/Map/SceneArea.cs index 860e8bc..ef7fa5a 100644 --- a/Assets/Scripts/Map/SceneArea.cs +++ b/Assets/Scripts/Map/SceneArea.cs @@ -97,7 +97,7 @@ public class SceneArea : MonoBehaviour case EditCellType.MonsterArea: if (baseItem is UIMonsterItem monsterItem) { - transform.Find("Name").GetComponent().text = $"怪物区{monsterItem.monster.id}"; + transform.Find("Name").GetComponent().text = $"怪物区{monsterItem.monster.itemIdx}"; transform.Find("ID").GetComponent().text = "ID:" + monsterItem.monster.id; transform.Find("Num").GetComponent().text = "Num:" + monsterItem.monster.num; SetAreaSize(monsterItem.monster.radius); diff --git a/Assets/Scripts/UI/UIBaseItem.cs b/Assets/Scripts/UI/UIBaseItem.cs index 6e3c3ad..3752b94 100644 --- a/Assets/Scripts/UI/UIBaseItem.cs +++ b/Assets/Scripts/UI/UIBaseItem.cs @@ -16,4 +16,10 @@ public class UIBaseItem : MonoBehaviour { } + + public virtual void OnClickItemSelf() + { + if (sceneArea == null) return; + MapManager.Instance.MoveToCamera(sceneArea.transform.position.x,sceneArea.transform.position.y); + } } diff --git a/Assets/Scripts/UI/UIMonsterItem.cs b/Assets/Scripts/UI/UIMonsterItem.cs index 401305a..4bac6ed 100644 --- a/Assets/Scripts/UI/UIMonsterItem.cs +++ b/Assets/Scripts/UI/UIMonsterItem.cs @@ -39,10 +39,7 @@ public class UIMonsterItem : UIBaseItem void Awake() { groupId = -1; - AddInputNameClickEvent(txtPos); - //AddInputNameClickEvent(txtPath, true); btnDel.onClick.AddListener(RemoveSelf); - //itemIdx = 0; paths = new List(); btnClickSelf.onClick.AddListener(OnClickSelf); btnCopy.onClick.AddListener(OnCopySelf); @@ -59,7 +56,8 @@ public class UIMonsterItem : UIBaseItem return; } monster.pos = UtilityClass.GetVector2Pos(arg0); - MapManager.Instance.CreateSpecialPoint(monster.pos, this); + sceneArea?.SetAreaPos(monster.pos); + UIWindow.Instance.uiMonstersPanel.UpdateGroupInfo(this); } //public void SetItem(int idx, MonstersConfig.MonsterConfig m) @@ -71,6 +69,7 @@ public class UIMonsterItem : UIBaseItem txtPos.text = m.pos.ToString(); paths = m.paths; monster = m; + txtPos.enabled = m.itemIdx != -1; txtID.gameObject.SetActive(m.itemIdx != -1); if (m.groupId > 0) return; @@ -82,6 +81,7 @@ public class UIMonsterItem : UIBaseItem base.SetSelectPosItem(); btnClickSelf.Select(); UIWindow.Instance.uiMonstersPanel.OnClickItem(this); + } public override void SetItemPos(Vector2Int pos) { @@ -89,6 +89,7 @@ public class UIMonsterItem : UIBaseItem monster.pos = pos; txtPos.text = pos.ToString(); btnClickSelf.Select(); + UIWindow.Instance.uiMonstersPanel.UpdateGroupInfo(this); } public void RefreshItem() { @@ -97,8 +98,7 @@ public class UIMonsterItem : UIBaseItem paths = monster.paths; txtPos.text = monster.pos.ToString(); //刷新场景中的东西 - MapManager.Instance.SetMonsterPoint(monster.itemIdx, monster.radius, monster.id, monster.num); - MapManager.Instance.CreateSpecialPoint(monster.pos, this); + sceneArea?.RefSAreaInfo(); } public void SetGroup(int group) @@ -112,49 +112,6 @@ public class UIMonsterItem : UIBaseItem btnHide.gameObject.SetActive(false); } - private void AddInputNameClickEvent(InputField input, bool isPath = false) //可以在Awake中调用 - { - var eventTrigger = input.gameObject.AddComponent(); - UnityAction selectEvent = null; - if (isPath) - selectEvent = OnPathInputFieldClicked; - else - selectEvent = OnInputFieldClicked; - - EventTrigger.Entry onClick = new EventTrigger.Entry() - { - eventID = EventTriggerType.PointerClick - }; - - onClick.callback.AddListener(selectEvent); - eventTrigger.triggers.Add(onClick); - } - - private void OnInputFieldClicked(BaseEventData data) - { - if (string.IsNullOrEmpty(txtMonsterID.text)) - return; - - if (OnClick == null) - return; - - OnClick(this); - - UIWindow.Instance.uiMonstersPanel.curActiveInput = data.selectedObject.GetComponent(); - int radius = Convert.ToInt32(UIWindow.Instance.uiMonstersPanel.txtRadius.text); - int count = Convert.ToInt32(UIWindow.Instance.uiMonstersPanel.txtCount.text); - MapManager.Instance.SetMonsterPoint(monster.itemIdx, radius, Convert.ToInt32(txtMonsterID.text), count); - MapManager.Instance.SetEditCellType(MapManager.EditCellType.MonsterArea); - } - - - private void OnPathInputFieldClicked(BaseEventData data) - { - UIWindow.Instance.uiMonstersPanel.curActiveInput = data.selectedObject.GetComponent(); - UIWindow.Instance.uiMonstersPanel.curActiveList = paths; - MapManager.Instance.SetEditCellType(MapManager.EditCellType.MonsterPath); - } - private void RemoveSelf() { DestroyImmediate(transform.parent.gameObject); @@ -188,66 +145,6 @@ public class UIMonsterItem : UIBaseItem UIWindow.Instance.ShowMessage("请填写刷怪坐标"); return false; } - //if (string.IsNullOrEmpty(txtRadius.text)) - //{ - // UIWindow.Instance.ShowMessage("请填写刷怪半径"); - // return false; - //} - //if (string.IsNullOrEmpty(txtNum.text)) - //{ - // UIWindow.Instance.ShowMessage("请填写刷怪数量"); - // return false; - //} - - //if (string.IsNullOrEmpty(txtTime.text)) - //{ - // UIWindow.Instance.ShowMessage("请填写刷怪时间"); - // return false; - //} - - //if (dropType.value == (int)CreateMonsterMode.Death) - //{ - // if(!APIs.IsUInt(txtTime.text)) - // { - // UIWindow.Instance.ShowMessage("刷怪时间请输入正整数"); - // return false; - // } - //} - //else if(dropType.value == (int)CreateMonsterMode.FixedTime) - //{ - // string[] tmp = txtTime.text.Split(','); - // if (tmp.Length != 2) - // { - // UIWindow.Instance.ShowMessage("刷怪时间用,隔开天数与时间"); - // return false; - // } - - // if(!APIs.IsUInt(tmp[0])) - // { - // UIWindow.Instance.ShowMessage("刷怪时间-天数请输入正整数"); - // return false; - // } - - // string[] strTime = tmp[1].Split(':'); - // if (strTime.Length != 2) - // { - // UIWindow.Instance.ShowMessage("刷怪时间-时间格式错误"); - // return false; - // } - - - // for (int i = 0; i < strTime.Length; i++) - // { - // if (!APIs.IsUInt(strTime[i])) - // { - // UIWindow.Instance.ShowMessage("刷怪时间-时间格式错误"); - // return false; - // } - // } - //} - - - return true; } @@ -255,8 +152,8 @@ public class UIMonsterItem : UIBaseItem { if (OnClick == null) return; - OnClick(this); + OnClickItemSelf(); } private void OnCopySelf() diff --git a/Assets/Scripts/UI/UIMonsterPanel.cs b/Assets/Scripts/UI/UIMonsterPanel.cs index 4ff8126..463b1d1 100644 --- a/Assets/Scripts/UI/UIMonsterPanel.cs +++ b/Assets/Scripts/UI/UIMonsterPanel.cs @@ -1,13 +1,10 @@ using HxGame.Data; using System; -using System.Collections; using System.Collections.Generic; using System.Linq; -using System.Threading; using UnityEngine; using UnityEngine.UI; using static HxGame.Data.MonstersConfig; -using static System.Net.Mime.MediaTypeNames; /* * 如果坐标点一样 @@ -41,21 +38,39 @@ public class UIMonsterPanel : MonoBehaviour public ScrollRect svMonsters; public Transform itemParent; - public int itemIdx; + public int itemIdx = 0; private UIMonsterItem _curMonsterItem; public MonstersConfig monstersConfig = new(); private void Awake() { - itemIdx = 0; btnClose.onClick.AddListener(OnClickClose); btnAddGroup.onClick.AddListener(OnAddGroup); txtMonsterID.onEndEdit.AddListener(OnEditorMonsterId); txtName.onEndEdit.AddListener(OnEditorMonsterName); txtRadius.onEndEdit.AddListener(OnEditorMonsterRadius); txtCount.onEndEdit.AddListener(OnEditorMonsterCount); - } - + txtRefreshTime.onEndEdit.AddListener(OnEditorRefTime); + dropRefreshType.onValueChanged.AddListener(OnEditorRefType); + } + + private void OnEditorRefType(int arg0) + { + if (_curMonsterItem == null) return; + _curMonsterItem.monster.createMode = (CreateMonsterMode)arg0; + } + + private void OnEditorRefTime(string arg0) + { + if (_curMonsterItem == null) return; + if (!int.TryParse(arg0, out var intValue)) + { + UIWindow.Instance.ShowMessage("格式不正确"); + return; + } + _curMonsterItem.monster.delayTime = intValue; + } + private void OnEditorMonsterCount(string arg0) { if (!int.TryParse(arg0, out var intValue)) @@ -63,12 +78,14 @@ public class UIMonsterPanel : MonoBehaviour UIWindow.Instance.ShowMessage("格式不正确"); return; } - _curMonsterItem.monster.id = intValue; + _curMonsterItem.monster.num = intValue; _curMonsterItem.RefreshItem(); } private void OnEditorMonsterRadius(string arg0) { + if (_curMonsterItem == null || _curMonsterItem.monster.itemIdx == -1) + return; if (!int.TryParse(arg0, out var intValue)) { UIWindow.Instance.ShowMessage("格式不正确"); @@ -141,8 +158,11 @@ public class UIMonsterPanel : MonoBehaviour MonstersConfig.MonsterConfig monster = new MonstersConfig.MonsterConfig(); monster.itemIdx = ++itemIdx; monster.groupId = -1; + monster.radius = 10; + monster.pos = new Vector2Int(MapManager.Instance.map.selector.horizontalNumber / 2, MapManager.Instance.map.selector.verticalNumber / 2); monstersConfig.monsterConfigs.Insert(0, monster); - AddItem(monster); + var createItem = AddItem(monster); + OnClickItem(createItem); } public void LoadMonsterConfig(int mapId) @@ -200,6 +220,7 @@ public class UIMonsterPanel : MonoBehaviour txtCount.text = monster.num.ToString(); txtRadius.text = monster.radius.ToString(); dropPatrol.value = (int)monster.patrolMode; + ScrollToTarget(item); } public void OnCopyItem(UIMonsterItem item) { @@ -219,9 +240,11 @@ public class UIMonsterPanel : MonoBehaviour AddItem(newmonster); } else { + var grops = monstersConfig.monsterConfigs.FindAll((tt) => tt.groupId == item.monster.itemIdx); + int inserIndex = index + grops.Count + 1; //先拷贝自己,再拷贝组内 MonstersConfig.MonsterConfig newmonster = new MonstersConfig.MonsterConfig(); - monstersConfig.monsterConfigs.Insert(index,newmonster); + monstersConfig.monsterConfigs.Insert(inserIndex, newmonster); foreach (var prop in typeof(MonsterConfig).GetFields()) { prop.SetValue(newmonster, prop.GetValue(item.monster)); @@ -229,16 +252,16 @@ public class UIMonsterPanel : MonoBehaviour newmonster.itemIdx = ++itemIdx; newmonster.groupId = -1; AddItem(newmonster); - var grops = monstersConfig.monsterConfigs.FindAll((tt) => tt.groupId == item.monster.itemIdx); + foreach (var gropItem in grops) { MonsterConfig config = new MonsterConfig(); - monstersConfig.monsterConfigs.Insert(++index, config); + monstersConfig.monsterConfigs.Insert(++inserIndex, config); foreach (var prop in typeof(MonsterConfig).GetFields()) { prop.SetValue(config, prop.GetValue(gropItem)); } - config.groupId = gropItem.itemIdx; + config.groupId = newmonster.itemIdx; config.itemIdx = -1; AddItem(config); } @@ -247,9 +270,8 @@ public class UIMonsterPanel : MonoBehaviour public void SaveMonsterConfig() { - MonstersConfig mc = new MonstersConfig(); int mapId = MapManager.Instance._curOpenMapId; - mc.SaveXML(mapId); + monstersConfig.SaveXML(mapId); } public void RemoveAllGrop(MonsterConfig config) @@ -264,8 +286,35 @@ public class UIMonsterPanel : MonoBehaviour item.DestoryGrop(); } } + } + public void ScrollToTarget(UIMonsterItem target) + { + var index = monstersConfig.monsterConfigs.IndexOf(target.monster); + if (index != -1) + { + svMonsters.verticalNormalizedPosition = 1 - (float)index / (monstersConfig.monsterConfigs.Count - 1); + } + } + public void UpdateGroupInfo(UIMonsterItem target) + { + if (target.monster.itemIdx != -1) + { + var allitems = monstersConfig.monsterConfigs.FindAll((item) => item.groupId == target.monster.itemIdx); + foreach (var item in allitems) + { + item.pos = target.monster.pos; + item.radius = target.monster.radius; + } + foreach (Transform child in svMonsters.content) + { + UIMonsterItem item = child.GetComponentInChildren(); + if (item != null && item.monster.groupId == target.monster.itemIdx) + { + item.RefreshItem(); + } + } + } } - public void RemoveAll() { int size = itemParent.childCount; @@ -273,6 +322,5 @@ public class UIMonsterPanel : MonoBehaviour { DestroyImmediate(itemParent.GetChild(0).gameObject); } - itemIdx = 0; } }