74 lines
2.0 KiB
C#
74 lines
2.0 KiB
C#
///
|
|
// 主要处理一些在物体外面的点击 物体需要做一些处理的
|
|
///
|
|
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
|
|
public class InputOutView : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler
|
|
{
|
|
public delegate void InputOutViewEvent();
|
|
|
|
public List<EventParams> InputOutViewEvents = new List<EventParams>();
|
|
private bool isInputOutView = true;
|
|
|
|
// Update is called once per frame
|
|
private void LateUpdate()
|
|
{
|
|
if (Input.anyKey)
|
|
if (isInputOutView)
|
|
{
|
|
var removes = new List<EventParams>();
|
|
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;
|
|
}
|
|
} |