using CG.Framework; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; /******************************************************************************* *Create By CG *Function 可移动UI *******************************************************************************/ namespace CG.UTility { public class SampleUICtrl : MonoBehaviour { private GameObject _canvas = null; //public GameObject _CheckGeo = null; //镜头拉近速度 private float _zoomSpeed = 30.0f; private Vector2 _curPos = Vector2.zero; private Vector3 _orgPos = Vector3.one; private void OnEnable() { //_CheckGeo = transform.name; _canvas = GameObject.FindGameObjectWithTag("MainCanvas"); transform.localScale = Vector3.one; _orgPos = transform.localPosition; } private void OnDisable() { transform.localScale = Vector3.one; transform.localPosition = _orgPos; } private void Update() { if (_canvas != null) { //GameObject selectGeo = GetOverUI(); if (GetOverUI(gameObject)) // selectGeo.name.Equals(_CheckGeoName)) { //缩放 transform.localScale += Vector3.one * Input.mouseScrollDelta.y * Time.deltaTime * _zoomSpeed; if (transform.localScale.x < 0.3f) { transform.localScale = Vector3.one * 0.3f; } //位移 if (Input.GetMouseButtonDown(0)) { _curPos = Input.mousePosition; //WDebug.Log("Down:" + _curPos); } else if (Input.GetMouseButton(0)) { Vector2 movePos = (Vector2)Input.mousePosition - _curPos; transform.GetComponent().anchoredPosition += movePos; _curPos = Input.mousePosition; //WDebug.Log("Ing:" + _curPos); } } } } public bool GetOverUI(GameObject hoverGeo) { PointerEventData pointerEventData = new PointerEventData(EventSystem.current); pointerEventData.position = Input.mousePosition; GraphicRaycaster gr = _canvas.GetComponent(); List results = new List(); gr.Raycast(pointerEventData, results); for (int i = 0; i < results.Count; i++) { if(results[i].gameObject==hoverGeo) { return true; } } return false; //if (results.Count != 0) //{ // return results[0].gameObject; //} //return null; } } }