using UnityEngine;
using System.Collections;
using System;
[RequireComponent(typeof(UIButton))]
public class UIButtonLongTapComponent : MonoBehaviour
{
[SerializeField]
float intervalAction = 1.0f;
float firstTapTime = 0f;
bool isHoldAction;
// 押しっぱなし時に呼び出すAction
public Action OnLongTap = null;
public Action OnShortTap = null;
bool isPressing = false;
void Update()
{
if (isPressing && isHoldAction && (firstTapTime + intervalAction < Time.realtimeSinceStartup)) {
isPressing = false;
LongTap ();
}
}
void OnPress (bool pressed)
{
isPressing = pressed;
if (pressed) {
firstTapTime = Time.realtimeSinceStartup;
}
else
{
bool isLongTap = firstTapTime + intervalAction < Time.realtimeSinceStartup;
if (!isHoldAction && isLongTap)
LongTap();
else if(!isLongTap)
ShortTap();
}
}
public void SetButtonAction(Action shortTap, Action longTap, bool isHoldLongTap) {
isHoldAction = isHoldLongTap;
OnLongTap = longTap;
OnShortTap = shortTap;
}
public void CleanAction()
{
OnLongTap = null;
}
public void LongTap()
{
if (OnLongTap != null)
OnLongTap ();
}
public void ShortTap()
{
if (OnShortTap != null)
OnShortTap ();
}
}
More than 5 years have passed since last update.
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
List of users who liked
54