Быстрый ответ: вы не можете, потому что UI.Button
не имеет обратных вызовов для чего-то вроде button down
или button up
Вы можете написать свой собственный компонент, используя IPointerDownHandler и IPointerUpHandler , если вы действительно не хотите изменять текущую структуру кода, например, как
using UnityEngine;
using UnityEngine.EventSystems;
public class Example : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
public bool isDown;
public bool isUp;
//Detect current clicks on the GameObject (the one with the script attached)
public void OnPointerDown(PointerEventData pointerEventData)
{
isDown = true;
}
//Detect if clicks are no longer registering
public void OnPointerUp(PointerEventData pointerEventData)
{
isUp = true;
}
// reset both in LateUpdate
private void LateUpdate()
{
isDown = false;
isUp = false;
}
}
Прикрепите это к своим кнопкам.
Чем в вашейссылка на код в соответствии с компонентом
public Example PButton;
void SlashAttack ()
{
// ...
// Ataque a distancia
if (Input.GetKeyDown("p") || Input.GetKeyDown(KeyCode.Z) || PButton.isDown)
{
// ...
}
else if (Input.GetKeyUp("p") || Input.GetKeyUp(KeyCode.Z) || PButton.isUp)
{
// ...
}
// ...
}
Примечание
Убедитесь, что в сцене есть EventSystem
, чтобы разрешить обнаружение указателя.Для обнаружения указателя на не-UI GameObjects убедитесь, что PhysicsRaycaster
присоединено к камере.