[英]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.