unity OnMouseDown 太慢
Posted
技术标签:
【中文标题】unity OnMouseDown 太慢【英文标题】:Unity OnMouseDown too slow 【发布时间】:2021-04-07 09:06:34 【问题描述】:我正在编写一个答题器游戏,我不希望我的程序在我按下 UI 时进行计算。我尝试过使用 OnMouseDown、OnPointerDown 和 !EventSystem.current.IsPointerOverGameObject(),但它们都破坏了点击器的感觉,因为你不能点击垃圾邮件。有没有更短的替代品?提前谢谢!
编辑:我已经完成了您评论的所有事情,并且发现了问题。每当我单击鼠标按钮时,文本都会显示我每次点击获得的硬币数量。因此,它被视为一个 UI 元素,因此无法进行垃圾点击。我现在已经关闭了文本的“Raycast Target”,现在它可以正常工作了。感谢您的帮助!
【问题讨论】:
Input.GetButtonDown() in fixedupdate @John 的答案可能是最好的。其他想法:也许你应该跟踪每个对象的“最后点击时间”,并为这种情况定义一个替代的、更轻的行为?还要考虑在每次点击时打开协程。 【参考方案1】:您可以将 Input 类与检查一起使用:
void Update()
// Check if the left mouse button was clicked
if (Input.GetMouseButtonDown(0))
// Check if the mouse was clicked over a UI element
if (EventSystem.current.IsPointerOverGameObject())
Debug.Log("Clicked on the UI");
或者您可以在要检测点击但通过 UI 检查的特定对象上使用 OnMouseDown: 无效 OnMouseDown()
// Check if the mouse was clicked over a UI element
if (EventSystem.current.IsPointerOverGameObject())
Debug.Log("Clicked on the UI");
【讨论】:
以上是关于unity OnMouseDown 太慢的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的unity3d关联的vs2017里没有onmousedown函数?
unity3d在android安卓中用啥代替pc上的OnMouseDown函数
unity3d里面的onMouseDown()函数,代表的是鼠标按键触发,但是在unity3d android中应该怎么写呢?