JJBB/Assets/Project/Script/InputOutView.cs
2024-08-23 15:49:34 +08:00

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;
}
}