85 lines
2.5 KiB
C#
85 lines
2.5 KiB
C#
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
using UnityEngine.EventSystems;
|
||
|
||
public class UIMouseOver : MonoBehaviour, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler
|
||
{
|
||
Coroutine _trackCor;
|
||
private RectTransform _canvasRectTransform;//<2F><><EFBFBD><EFBFBD>
|
||
|
||
//地图的宽高
|
||
public int worldWidth;
|
||
public int worldHeight;
|
||
|
||
//
|
||
private float _initX;
|
||
private float _initY;
|
||
|
||
private Vector3 _overPos;
|
||
|
||
public void OnPointerClick(PointerEventData eventData)
|
||
{
|
||
throw new System.NotImplementedException();
|
||
}
|
||
|
||
public void OnPointerEnter(PointerEventData eventData)
|
||
{
|
||
if(UIWindow.Instance.uiMapPanel.CurOpenMapId < 0)
|
||
{
|
||
UIWindow.Instance.ShowMessage("先打开地图");
|
||
return;
|
||
}
|
||
|
||
worldWidth = MapManager.Instance.mapWidth;
|
||
worldHeight = MapManager.Instance.mapHeight;
|
||
|
||
_canvasRectTransform = UIWindow.Instance.newMapTrans.parent.GetComponent<RectTransform>();
|
||
|
||
_trackCor = StartCoroutine(TrackPointer());
|
||
}
|
||
|
||
public void OnPointerExit(PointerEventData eventData)
|
||
{
|
||
if (_trackCor == null)
|
||
return;
|
||
|
||
StopCoroutine(_trackCor);
|
||
|
||
_trackCor = null;
|
||
}
|
||
|
||
IEnumerator TrackPointer()
|
||
{
|
||
while (Application.isPlaying)
|
||
{
|
||
CurMousePosition();
|
||
yield return 0;
|
||
}
|
||
}
|
||
|
||
public void CurMousePosition()
|
||
{
|
||
Vector2 pos;
|
||
Vector2 screenPos = RectTransformUtility.WorldToScreenPoint(Camera.main, Input.mousePosition);
|
||
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(_canvasRectTransform, Input.mousePosition, Camera.main, out pos))
|
||
{
|
||
float offsetX = UIWindow.Instance.newMapTrans.GetComponent<RectTransform>().anchoredPosition.x - _initX;
|
||
float offsetY = UIWindow.Instance.newMapTrans.GetComponent<RectTransform>().anchoredPosition.y - _initY;
|
||
|
||
float x = pos.x - offsetX;
|
||
float y = pos.y - offsetY;
|
||
|
||
Debug.Log($"坐标:{x + worldWidth / 10 / 2}, {y + worldHeight / 10 / 2}");
|
||
_overPos = new Vector3(x + worldWidth / 10 / 2, 0, y + worldHeight / 10 / 2);
|
||
}
|
||
}
|
||
|
||
// Start is called before the first frame update
|
||
void Start()
|
||
{
|
||
_initX = UIWindow.Instance.newMapTrans.transform.GetComponent<RectTransform>().anchoredPosition.x;
|
||
_initY = UIWindow.Instance.newMapTrans.transform.GetComponent<RectTransform>().anchoredPosition.y;
|
||
}
|
||
}
|