게임 엔진/유니티

[유니티] 버튼 클릭에 누른 상태도 적용하기

코딩너구리 2025. 3. 6. 14:41

클릭 시 기능을 가능하게 하는 건 Button.OnClick() 내장 함수를 통해 바로 구현이 가능하다.

다만 클릭 뿐만 아니라 꾹 눌러도 버튼이 게속 눌리게 하고 싶다면, 추가적인 코드를 작성 해야한다.

using UnityEngine;
using UnityEngine.EventSystems;

public class UpgradeButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
    public WeaponUpgrade WeaponUpgrade;

    private bool isPressed = false;

    public void OnPointerDown(PointerEventData eventData)
    {
        isPressed = true;
        InvokeRepeating("Execute", 0f, 0.1f);
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        isPressed = false;
        CancelInvoke("Execute");
    }

    private void Execute()
    {
        if (isPressed)
        {
            WeaponUpgrade.Upgrade();
        }
    }
}

 

인터페이스 IPointerDownHandler, IPointerUpHandler 를 추가한다.

OnPointerDown()는 클릭을 하면 작동하고, OnPointerUp()은 클릭을 뗀다면 작동한다.

bool 을 통해 클릭 여부를 체크하고, 해당 시간동안 반복적으로 함수를 호출하도록 하면 된다.