Files
aibis-dream/Assets/Scripts/MiniGame/Engine/SpriteButton.cs
T
2024-11-01 20:57:36 +08:00

61 lines
1.5 KiB
C#

using System;
using UnityEngine;
namespace AibisDream
{
public class SpriteButton
{
private GameObject _self;
private bool _isHold;
private bool _isButtonActive;
public event Action OnButtonDown;
public event Action OnButtonUp;
public event Action OnButtonHold;
public SpriteButton(GameObject gameObject)
{
_self = gameObject;
_isButtonActive = true;
}
/// <summary>
/// 检查按钮
/// </summary>
/// <param name="self"></param>
public void CheckButtonClick()
{
if (!_isButtonActive)
{
_isHold = false;
return;
}
// 发射射线
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction);
// 检查射线是否与当前按钮接触
if (Input.GetMouseButton(0) && hit.collider && hit.collider.gameObject == _self)
{
// 按下
if (!_isHold)
{
OnButtonDown?.Invoke();
}
OnButtonHold?.Invoke();
_isHold = true;
}
else
{
if (_isHold)
{
OnButtonUp?.Invoke();
}
_isHold = false;
}
}
}
}