, ,

【Unity】Timeout while trying to pause the Unity Engine 真的只是猜測


這個BUG其實也不知道從何說起,這篇是默認看的人已經知道android java 那些知識了,細節就不加以詳述了,因為大多都是以自己的理解去解釋,沒追證過,如果理解有誤還麻煩告知我XD

BUG點 : Timeout while trying to pause the Unity Engine


引發這個的可能性有很多,這裡只談到我遇到的這一種

當視窗沒有失焦,然後你可能使用了任何一個改變視窗的function((像是投影到電腦)),在這之後,如果單純觸發了activity的onPause方法沒有讓onWindowChangeFocus一起被觸發的話,在onResume的時候,unity就會當掉了,這時候如果又要onPause Unity的話就會出現

Timeout while trying to pause the Unity Engine. 




這裡是我解這bug幾天的心得,可能跟事實不一定完全相同,知識點可能也有誤,可以看看就好。

Unity內有許多系統的function ,其中有個 OnApplicationPause 跟 onApplicationfocus

官方連結:


OnApplicationFocus他是在UnityPlayerActivity內的 onWindowChangeFocus上觸發的,((如果我沒記錯的話)),然後OnApplicationPause也是UnityPlayerActivity內的 onPause 去觸發的

其中onWindowChangeFocus這個很重要,他是在渲染完成的時候調用的

當現在你的螢幕視窗被改變了,像是miracast到電腦,如果你沒觸發mUnityPlayer.windowChangeFocus讓unity去改變底層的東西,就直接pause他並resume的話就會出現問題,所以在pause之前(或之後?) 必須call [mUnityPlayer.windowChangeFocus ] ((這裡是嚴重的猜測,很不一定是真的))




Share:
Read More