我無法弄清楚輸入系統的問題。
我有一個 VisualElement(使用 UI 工具包),我需要在點擊時獲取指標的“localPosition”。(這將是一個觸摸和滑鼠的游戲,所以我使用指標。)
我可以使用回呼獲取本地位置:
myVisualElement.RegisterCallback<PointerDownEvent>(OnPointerDown, TrickleDown.TrickleDown);
然后在函式中:
private void OnPointerDown(PointerDownEvent evt)
{
pointerLocalPos = evt.localPosition;
}
但我也在使用新的輸入系統來獲取按下狀態(開始、取消等):
InputManager.inputControls.Draw.Click.started = ctx => Click_started(ctx);
這就是問題所在。在呼叫“Click.started”之前或剛開始時,我需要在 VisualElement 中獲取 localPosition 。但是 Click_started() 函式將始終在“OnPointerDown”設定指標位置的值之前被呼叫。有沒有辦法在沒有回呼的情況下在“Click_started”函式中獲取 localPosition?還是有另一個這樣做的?
uj5u.com熱心網友回復:
如果延遲處理是一種選擇,您可以嘗試這樣的事情(未經測驗):
InputManager.inputControls.Draw.Click.started = Click_started;
using System.Threading.Tasks;
async void Click_started()
{
await Task.Yield();
// now OnPointerDown should have been called, if it was going to be..
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/518178.html
