Acción al mantener presionado un botón en Unity5 c#


La solución será utilizando el método OnPointerDown. Tendremos que añadir las librerías de EventSystem y Events , e incluyendo los métodos IPointerDownHandler, IPointerUpHandler.

Generaremos una condición dentro del método Update consultando si el botón esta siendo presionado y de esa manera invocaremos la acción deseada.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Events;

public class PressedButton : MonoBehaviour,  IPointerDownHandler, IPointerUpHandler
{

    public UnityEvent OnHold;
    bool OnPressed;

    public void OnPointerDown( PointerEventData eventData )
    {
        OnPressed = true;
    }

    public void OnPointerUp( PointerEventData eventData )
    {
        OnPressed = false;
    }
    

    void Update ()
    {
        if (OnPressed)
        {
            OnHold.Invoke();
        }
    }
}

Este script lo agregaremos al objeto deseado, incorporando acción deseada. Como en el siguiente ejemplo es un scrip llamando a un metodo.

introducir la descripción de la imagen aquí