【发布时间】:2018-02-26 10:15:34
【问题描述】:
为什么我的按钮的 onClick 功能有一个小而明显的延迟?我正在从启动动画的 onClick 函数中内置的按钮调用一个函数。此动画开始,但有明显的延迟。
通过在更新函数中检查 Input.GetMouseButtonDown(0) 来调用该函数会消除此延迟,并且动画会立即开始。
所以我得出的结论是按钮 OnClick 功能是问题所在,但我似乎无法在网上找到有同样问题的人。如何解决此延迟?
无延迟:
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();
}
}
【问题讨论】:
-
您的场景中有很多 UI 元素吗?确保所有不需要点击的 UI 元素都将
raycastTarget标志设置为 false(文本、原始图像、图像)