我正在處理項目上的用戶界面問題。它涉及「節點」並將它們連接在一起。我將兩個節點連接在一起,連接到按下初始節點上的按鈕,然後單擊其他節點以連接到它。後半部分是通過檢查何時Event.current.type == EventType.MouseDown
然後將最初節點加入您最後一次懸停的節點來實現的。在Unity 3D中「使用」的調試事件
也能正常工作的大部分時間,但是我注意到,有時當你點擊另一個節點上它不會加入他們在一起的瞬間,但直到點擊關閉的節點。在做了Debug.Log(Event.current.type)
之後,它表明有時事件在我點擊時會變成「used」,而不是「mouseDown」,因此在我點擊其他地方之前不會執行連接代碼。它似乎只發生在一些節點上。
下面是與控制檯輸出的兩種行爲的GIF:
問題代碼:
private bool detectEscape()
{
Debug.Log(Event.current.type);
return (Event.current.type == EventType.MouseDown);
}
此函數返回假有時由於鼠標點擊到有時被「使用」的事件。它在GUI中被調用。
任何理由是什麼原因導致當前事件知道要使用嗎?我在我的代碼中的許多地方做了上面的比較。那可能是導致當前事件被使用的原因嗎?我如何避免它?
我是正確使用事件系統?
知道有一種更好的方式來捕捉鼠標點擊?使用Input.GetMouseButtonDown(0)
不幸的是它不是一個選項,因爲它只在遊戲運行時才起作用,並且這個程序是爲了編輯器的擴展。
否則,知道在Unity 3D的源代碼中放置一個斷點的方法,這樣我可以將其中一個放入函數Event.Use()
中,並確定消耗鼠標事件的是什麼?
添加源代碼是很好的東西。但是,在這裏添加相關的代碼作爲簡短的代碼也非常感謝。不是每個人都想要/有時間挖掘你的所有源代碼。 –
加上外部鏈接可以中斷,並且在github未來的變化情況下可能會導致它在這個特定問題的上下文中無法使用,因此將相關代碼放入問題本身的規則 – LearnCocos2D
謝謝。好點。編輯更好? – mcdonalda1993