uwp的unity專案,在pc上執行時,如果鎖屏(手動或自動)再解鎖,遊戲畫面和進度正常,但是無法進行滑鼠、鍵盤或手柄的操作。這bug在很多線上的unity專案中存在。
經過測試,正常的切換和切回操作,該狀態會成對(啟用、非啟用)觸發,
同時成對觸發的,還有window.current.corewindow.visibilitychanged 事件
下圖為觸發時的log
,可以看出觸發的順序還有 2x2 =4個事件
但是在螢幕鎖屏再解鎖的操作過程中,只有visibilitychanged成對觸發,activated事件並沒能成對觸發
下圖為觸發時的log
,可以看出,缺失了一次activated啟用事件。
但並不意味著此時的主視窗是非啟用狀態的,因為當手動呼叫視窗的acitve()方法時,並沒有收到activated事件,且此時,視窗上的原生ui是可以接受滑鼠、鍵盤的輸入的。
所以,僅僅是因為作業系統少發了一次系統事件,而這個事件會被unity捕獲,來判斷視窗狀態
unity初始化的時候通過這句**來獲取所有的corewindow的事件並響應。
因為visibilitychanged事件可以被正常觸發,所以在該事件中,通知unity,我們的視窗已經是啟用的了。
獲取並處理visibilitychanged事件
同過在helloworld和crossy road專案中測試,已經解決了這個問題。
souther.
kali鎖屏後無法喚醒 自旋鎖與互斥鎖的微妙差別
互斥鎖是一種實現執行緒同步的機制 當乙個執行緒嘗試獲取互斥鎖,如果互斥鎖已經被占用則該執行緒會被掛起進入睡眠狀態,直到被喚醒。執行緒被掛起時,cpu會將該執行緒當前的處理狀態儲存到記憶體中,等到喚醒時從記憶體中讀取上次的處理狀態,這個cpu切換執行緒處理狀態的過程被稱為 上下文切換 上下文切換是乙個...
更新或刪除某條記錄的時候,無法操作,或被鎖解決
新或刪除某條記錄的時候,無法操作,或被鎖解決 有的時候,讓我們在oracle上做update 或者delete的時候,出現上時間無法獲得操作結果,一直處於正在處理之中,這時候要考慮是否oracle本身對該記錄進行鎖住了。1 檢視記錄是否被鎖 select a.object id,a.session ...
更新或刪除某條記錄的時候,無法操作,或被鎖解決
更新或刪除某條記錄的時候,無法操作,或被鎖解決 有的時候,讓我們在oracle上做update 或者delete的時候,出現上時間無法獲得操作結果,一直處於正在處理之中,這時候要考慮是否oracle本身對該記錄進行鎖住了。1 檢視記錄是否被鎖 select a.object id,a.session...