我使用 OnPointerDown、OnPointerUp、OnTriggerStay 和 OnTriggerExit 跟踪其他对象飞过的按钮点击。这个想法是在通过按钮时销毁对象。以下是我尝试使用的代码:
public void OnPointerDown(PointerEventData eventData)
{
_isMouseDown = true;
if (!_isTriggered)
{
Debug.Log("Fail!");
}
}
public void OnPointerUp(PointerEventData eventData)
{
_isMouseDown = false;
}
private void OnTriggerStay(Collider collision)
{
_isTriggered = true;
if (_isMouseDown)
{
Destroy(collision.transform.gameObject);
_isTriggered = false;
}
}
private void OnTriggerExit(Collider collision)
{
_isTriggered = false;
}
我有两个问题。第一个是,当我按住按钮时,对象会在触发时立即销毁。第二个问题是,如果我在对象飞到触发器之前按下按钮,会同时触发两个条件:Debug.Log 失败并销毁 OnTriggerStay 中的对象,目标是跟踪仅在触发器触发时点击和点击失败。
我假设我需要以某种方式跟踪按钮单击的持续时间,然后从鼠标向下更改为 false,以便触发器没有时间触发。这样做是否正确,例如,通过协程?