/// // 主要处理一些在物体外面的点击 物体需要做一些处理的 /// using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class InputOutView : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler { public delegate void InputOutViewEvent(); public List InputOutViewEvents = new List(); private bool isInputOutView = true; // Update is called once per frame private void LateUpdate() { if (Input.anyKey) if (isInputOutView) { var removes = new List(); for (var i = 0; i < InputOutViewEvents.Count; i++) { var param = InputOutViewEvents[i]; if (param._fun == null) { removes.Add(param); continue; } param._fun(); if (param.isForver == false) { param.runtimes--; if (param.runtimes <= 0) removes.Add(param); } } for (var i = 0; i < removes.Count; i++) InputOutViewEvents.Remove(removes[i]); } } public void OnPointerClick(PointerEventData eventData) { isInputOutView = false; } public void OnPointerEnter(PointerEventData eventData) { isInputOutView = false; } public void OnPointerExit(PointerEventData eventData) { isInputOutView = true; } public void Add(int times, bool isFover, InputOutViewEvent _fun) { var param = new EventParams(); param.isForver = isFover; param.runtimes = times; param._fun = _fun; InputOutViewEvents.Add(param); } public class EventParams { public InputOutViewEvent _fun; public bool isForver; public int runtimes = 1; } }