diff --git a/Assets/Art/UIPrefab/UIImageSelectMap.prefab b/Assets/Art/UIPrefab/UIImageSelectMap.prefab index a5078f91..f21a5820 100644 --- a/Assets/Art/UIPrefab/UIImageSelectMap.prefab +++ b/Assets/Art/UIPrefab/UIImageSelectMap.prefab @@ -269,7 +269,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &8333043509333940129 RectTransform: m_ObjectHideFlags: 0 @@ -454,8 +454,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 336.29443, y: 0} - m_SizeDelta: {x: 672.5889, y: 0} + m_AnchoredPosition: {x: 336.29443, y: -54.999996} + m_SizeDelta: {x: 672.5889, y: -110} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &2989934290346154672 CanvasRenderer: @@ -726,7 +726,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0.00013167458} + m_AnchoredPosition: {x: 0, y: 0.0008044916} m_SizeDelta: {x: 0, y: 300} m_Pivot: {x: 0, y: 1} --- !u!114 &1181747651547168674 @@ -882,8 +882,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -364.56055, y: 0} - m_SizeDelta: {x: 730, y: 0} + m_AnchoredPosition: {x: -364.56055, y: -55} + m_SizeDelta: {x: 730, y: -110} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &8240270928057047746 CanvasRenderer: @@ -936,8 +936,8 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Content: {fileID: 6690386520824484871} - m_Horizontal: 1 - m_Vertical: 1 + m_Horizontal: 0 + m_Vertical: 0 m_MovementType: 1 m_Elasticity: 0.1 m_Inertia: 1 @@ -1240,7 +1240,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0.00013167458} + m_AnchoredPosition: {x: 0, y: 0.0008044916} m_SizeDelta: {x: 0, y: 300} m_Pivot: {x: 0, y: 1} --- !u!114 &3568317990091449983 diff --git a/Assets/Scripts/UI/UIImageSelectMap.cs b/Assets/Scripts/UI/UIImageSelectMap.cs index af1e8460..cb10266d 100644 --- a/Assets/Scripts/UI/UIImageSelectMap.cs +++ b/Assets/Scripts/UI/UIImageSelectMap.cs @@ -29,6 +29,10 @@ namespace QFramework.Example public partial class UIImageSelectMap : UIPanel { ResLoader loader; + GameObject moveObj; + GameObject enterRight; + GameObject leftDragObj; + Dictionary itemDatas = new Dictionary(); protected override void OnInit(IUIData uiData = null) { mData = uiData as UIImageSelectMapData ?? new UIImageSelectMapData(); @@ -42,6 +46,7 @@ namespace QFramework.Example LeftContent.RemoveAllChildren(); RightContent.RemoveAllChildren(); + itemDatas.Clear(); foreach (var item in mData.items) { var leftObj = GameObject.Instantiate(LeftItem, LeftContent); @@ -54,12 +59,18 @@ namespace QFramework.Example } }); - leftObj.OnDragEvent(leftOnDrag); - + leftObj.OnBeginDragEvent(LeftOnBeginDrag); + leftObj.OnDragEvent(LeftOnDrag); + leftObj.OnEndDragEvent(LeftOnEndDrag); var rightObj = GameObject.Instantiate(RightItem, RightContent); - rightObj.transform.localPosition = item.pos; + rightObj.name = item.pic; + rightObj.rectTransform.anchoredPosition = item.pos; rightObj.rectTransform.sizeDelta = item.size; + rightObj.OnPointerEnterEvent(RightOnEnter); + rightObj.OnPointerExitEvent(RightOnExit); + + itemDatas.Add(leftObj.gameObject, item); } @@ -80,11 +91,58 @@ namespace QFramework.Example } - private void leftOnDrag(PointerEventData data) + private void RightOnExit(PointerEventData data) { - data.selectedObject.transform.position = Input.mousePosition; + enterRight = null; } + private void RightOnEnter(PointerEventData data) + { + enterRight = data.pointerEnter.gameObject; + } + + private void LeftOnBeginDrag(PointerEventData data) + { + leftDragObj = data.pointerDrag; + moveObj = GameObject.Instantiate(LeftItem.gameObject, gameObject.transform); + moveObj.GetComponent().raycastTarget = false; + } + + private void LeftOnEndDrag(PointerEventData data) + { + if (enterRight) + { + if (enterRight.name == itemDatas[leftDragObj].pic) + { + Debug.LogError("ÕýÈ·"); + enterRight.GetComponent().color = Color.green; + } + else + { + Debug.LogError("´íÎó"); + enterRight.GetComponent().color = Color.red; + } + moveObj.transform.parent = enterRight.transform; + moveObj.transform.localPosition = Vector3.zero; + } + else + { + GameObject.Destroy(moveObj); + moveObj = null; + } + leftDragObj = null; + } + + private void LeftOnDrag(PointerEventData data) + { + //data.pointerDrag.transform.position = Input.mousePosition; + if (moveObj) + { + moveObj.transform.position = Input.mousePosition; + } + } + + protected override void OnShow() { }