* 作者:闪电Y黑客
* 日期: 2019.7.18
* 功能:触摸点击点集合
using UnityEngine;
using System.Collections.Generic;
using UnityEngine.EventSystems;
/*
* 作者:闪电Y黑客
*
* 日期: 2019.7.18
*
* 功能:触摸点击点集合
*
*/
namespace SDHK_Tool.Component
{
/// <summary>
/// 触摸池:【点击】
/// </summary>
public class SC_TouchPool_Down : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
/// <summary>
/// 触摸点刷新延迟时间:0.02是因为,实例化的物体是在下一帧才生成
/// </summary>
[Tooltip("触摸点刷新延迟时间")]
public float RefreshTime = 0.02f;
/// <summary>
/// 点击触摸id顺序链表[顺序列表],通过列表id顺序去字典提取触摸
/// </summary>
[Tooltip("触摸点Id顺序表")]
public List<int> TouchIds;
/// <summary>
/// 触摸字典[无序]
/// </summary>
public Dictionary<int, PointerEventData> TouchPool;
void Start()
{
TouchIds = new List<int>();
TouchPool = new Dictionary<int, PointerEventData>();
}
public void OnPointerDown(PointerEventData eventData)
{
TouchIds.Add(eventData.pointerId);
TouchPool.Add(eventData.pointerId, eventData);
}
public void OnPointerUp(PointerEventData eventData)
{
TouchIds.Remove(eventData.pointerId);
TouchPool.Remove(eventData.pointerId);
}
/// <summary>
/// 刷新触摸点:等于用户抬起后又按下去
/// </summary>
public void TouchRefresh()
{
if (SC_TouchEvent_RayCast._instance == null) return;
Invoke("Refresh", RefreshTime);
}
private void Refresh()
{
for (int i = TouchIds.Count - 1; i > -1; i--)
{
SC_TouchEvent_RayCast._instance.TouchRefresh(TouchPool[TouchIds[i]]);
}
}
void Update()
{
}
}
}