버튼을 여러번 눌러야 되는 상황에서 사용자에게 편리함을 제공하기 위해,
버튼을 정해진 시간 이상 누르고 있으면 일정 시간마다 함수를 실행시킨다.
using UnityEngine;
using UnityEngine.EventSystems;
public class ButtonHoldHandler : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
private bool isButtonHold = false; // 버튼을 누르고 있는지 여부
private float holdDuration = 0.5f; // n초 동안 누르고 있으면 시작
private float repeatInterval = 0.2f; // n초 마다 실행
private float holdTimer = 0f;
private float repeatTimer = 0f;
public void OnPointerDown(PointerEventData eventData)
{
isButtonHold = true;
holdTimer = 0f;
}
public void OnPointerUp(PointerEventData eventData)
{
isButtonHold = false;
holdTimer = 0f;
}
private void Update()
{
if (isButtonHold)
{
holdTimer += Time.deltaTime;
repeatTimer += Time.deltaTime;
if (holdTimer >= holdDuration)
{
if (repeatTimer >= repeatInterval)
{
repeatTimer = 0f;
// 실행할 코드
}
}
}
}
}
'Unity > 구현' 카테고리의 다른 글
[Unity 유니티] 2D 피격 이펙트 구현하기 (2) | 2025.01.08 |
---|---|
[Unity 유니티] 3D 카메라 부드럽게 이동하기 - Vector3.SmoothDamp (1) | 2025.01.07 |