Unity按钮onClick事件触发器有明显的延迟

时间:2018-02-26 10:15:34

标签: c# unity3d

为什么我的按钮的onClick功能有一个小而明显的延迟?我正在通过onClick函数内置的按钮调用函数来启动动画。这个动画开始但有明显的延迟。

通过检查更新功能中的Input.GetMouseButtonDown(0)来调用该函数可以消除此延迟并立即启动动画。

所以我得出的结论是按钮OnClick功能是问题,但我似乎无法在网上找到有同样问题的人。我如何解决这个延迟?

延迟: enter image description here

没有延迟:

private void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        explosionWave.Detonate();
    }
}

我使用的是Unity 2017.1.1

解决方案:

感谢@Lelefant,没有意识到在mouseUp上调用了OnClick。但是,仍然发现mouseUp也有同样的延迟。无论哪种方式,这都解决了这个问题:

using UnityEngine;
using UnityEngine.EventSystems;
public class OnPointerDownExplode : MonoBehaviour, IPointerDownHandler// required interface when using the OnPointerDown method.
{
    public ExplosionWave explosionWave;

    //Do this when the mouse is clicked over the selectable object this script is attached to.
    public void OnPointerDown(PointerEventData eventData)
    {
        explosionWave.Detonate();
    }
}

1 个答案:

答案 0 :(得分:0)

db.coll.update( {username:"akgupta@xpirit.com"}, { $push: { WishList: "NewWishListId" } }) 事件已触发called at mouseUp。 如果您不想在Button.OnClick期间查看,可以将脚本附加到实现IPointerDownHandler的按钮。

请注意, onClick 允许用户将指针拖出按钮以取消操作,而 onPointerDown 会立即启动操作。