[英]How to cache this in C#?
我是 C# 的新手。 我真的很想缓存它,因为我需要在 Update 方法上调用它。 它创建了大量的垃圾收集。
private bool IsPointerOverUIObject() {
PointerEventData eventDataCurrentPosition = new PointerEventData(EventSystem.current);
eventDataCurrentPosition.position = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
List<RaycastResult> results = new List<RaycastResult>();
EventSystem.current.RaycastAll(eventDataCurrentPosition, results);
return results.Count > 0;
}
在这里缓存结果可能不是正确的解决方案 - 缓存依赖于鼠标/触摸指针位置的信息意味着您的游戏可能会在用户移动手指时产生意外/延迟的结果。
从您的评论中:
[我]想做手游,让UI忽略点击
在这种情况下,您可以通过将IsPointerOverUIObject()
调用移动到相关单击/触摸事件的事件触发器中来最有效地减少计算开销 - 除非有人实际触摸屏幕,否则无需检查单击或触摸释放发生的位置.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.