This document is about: FUSION 1
SWITCH TO

Known Issues

在此頁面上,我們將列出各種平台上的Photon的已知問題。
這裡的重點是我們無法修復或進行變通的問題。
在某些情況下,這意味著我們將簡單地列出每個平台的損壞版本,並指導您使用其他版本。

在後台運行

在行動裝置平台上,如果應用程式移動到後台,它會暫停主訊息迴圈,該迴圈負責保持客戶端連接等。

造成這種情況的典型原因是:

  • 玩家按到「主頁按鈕」。
  • 接到電話。
  • 影片廣告。
  • 在應用程式中引入疊加視圖的第三方外掛程式(例如Facebook、Google等)。

在iOS上,應用程式在後台時無法保持連接(請參閱在Apple開發頁面上的後台執行)。當應用程式切換到後台時,斷開客戶端連接可能是有意義的。

在WebGL上,設定PlayerTTL並在重新聚焦分頁時重新連接到遊戲階段也可能是有意義的。
通常,瀏覽器不會在後台運行JS和WebAssembly。在某些情況下,這可以透過在後台播放音訊(甚至是聽不見的音訊)來實現。

如果應用程式暫停的時間超過客戶端斷開連接超時時間(預設為10秒),客戶端將斷開連接,您需要在應用程式「未暫停」後立即重新連接。
只有在應用程式從後台返回後,才會觸發「超時斷開連接」回調。

如果遊戲設計允許玩家在幾秒鐘或幾分鐘後返回,那麼您也可以重新連接並重新加入遊戲。
如果您想在應用程式未暫停時以相同的演員編號重新加入同一房間,您需要考慮以下幾點:

  • PlayerTTL:創建的房間需要具有足夠高的PlayerTTL值,以允許玩家在一段時間後返回。
  • EmptyRoomTTL:創建房間時,需要使用足夠高的EmptyRoomTL值,以便在最後一個加入的玩家的應用程式處於後台時使房間保持活動狀態一段時間。

Unity

匯入時無休止的編譯錯誤

某些Unity編輯器版本創建了不正確的.sln和.csproj檔案。這可能是暫時的。您可以透過「偏好」「外部工具」面板中的按鈕重新生成專案。

您可能希望從Unity套件管理器更新或重新安裝Visual Studio編輯器套件。這也可以解決專案創建問題。

有時,由於舊套件卡在本機離線快取中,資產無法從Assset Store正確更新。
要解決此問題,請先在本機移除Photon資產套件,然後嘗試再次下載和匯入。
此處列出了本機Unity資產存儲快取資料夾的路徑

Socket.SetSocketOption中的ArgumentException

存在已知的Unity問題 這導致IL2CPP組建無法連接到「ArgumentException:值不在預期範圍內。
在System.Net.Sockets.Socket.SetSocketOption」。這是在安裝Windows 10 SDK 10.0.19041.0時發生的。

受影響的Unity版本:2018.4.23f1、2019.4.0f1、2020.1.0b11、2020.2.0a13。更多的Unity小版本也受到了影響。
固定版本為:2020.1.1f1及2019.4.5f1及以上版本。推測是,2018.4.27也是固定的。2018.4.23的解決方法如這裡所述

Unity 2018.2插槽凍結,以.Net 4.x

Unity 2018.2使用了Mono版本,可以凍結通過插槽的通信。根據訊息大小和頻率,這遲早會發生。

最終,2019.2對此進行了修復,2018.3也應該在某個時候進行修復。

當使用Mono和.Net 4.x或.Net標準2.0,我們建議使用2018.4.x或2019.4.x版本。

RunInBackground

Unity的Application.runInBackground在行動裝置平台上不受支援。
相反,每當應用程式在後台來回移動時,都會調用OnApplicationPause方法:

C#

void OnApplicationPause( bool pauseStatus )
{
    if (pauseStatus)
    {
        // app moved to background
    } else
    {
        // app is foreground again
    }
}

IOS App Store提交被拒絕

有時,由於連接問題,Apple團隊會拒絕向App Store提交的內容。
我們試圖與Apple公司解決這個問題,現在這種情況很少見,但仍然可能發生。通常,在這些情況下,UDP會被封鎖。
如果UDP未連接,較新的Photon客戶端可以自動回退到使用TCP。
您必須對拒絕提出上訴,如有疑問,必須要求Apple的開發者支援部門接管。他們的設定通常支援UDP。
請參閱此論壇中的討論以獲取幫助

iOS IPv6

雖然Unity 5.x通常應該支援iOS上的IPv6,但某些版本(如5.4)破壞了這一功能。
一些支援的版本是:4.7.2、5.1.5、5.2.5、5.3.4p4、5.4.0p1和更新版本(請參閱Unity部落格文章)。

iOS本機網路隱私

iOS要求應用程式請求存取本機網路的許可權,以便在應用程式連接到個人家庭網路上的裝置時提供額外的透明度。這是為了確保用戶隱私和安全。當應用程式嘗試連接到同一本機網路上的裝置時,iOS會顯示一個快顯視窗,要求用戶授權。此行為受應用程式中info.plistNSLocalNetworkUsageDescription條目的約束,它提供了一條訊息,解釋為什麼應用程式需要此存取權限。任何直接或間接使用本機網路的應用程式都應包含此描述。這包括使用Bonjour的應用程式和以Bonjour實作的服務,以及與本機主機端的直接單點傳播或群播連接。
有關此內容的更多資訊,請參閱Apple開發者檔案:iOS本機網路隱私

Photon Fusion條件

  • 共享拓撲:快顯視窗永遠不會觸發。
  • 客戶端伺服器拓撲:只有當主機端和客戶端位於同一本機網路上時,才會觸發快顯視窗。請注意,在應用程式開發階段,它可能會頻繁出現,因為應用程式可能會被移除並重新安裝在裝置上。
  • 首次運行:快顯視窗僅在應用程式首次在裝置上運行時出現。

最佳實踐

  • 對於客戶端伺服器拓撲中包含玩家託管遊戲的遊戲,建議在iOS中新增解釋info.plist,在NSLocalNetworkUsageDescription條目下。這應該通知玩家,如果他們連接到相同網路上的某人,他們需要授權。快顯視窗將顯示此說明。

不幸的是,沒有辦法繞過這一點,因為這是作業系統所要求的。

UWP / Windows Store功能

如果您的目標是Windows Store (UWP),並且在嘗試連接時出現異常或出現此錯誤:

需要網路功能才能存取網路!

確保從Unity的「玩家設定」 -> 「發佈者設定」 -> 「功能 -> 「InternetClient」啟用所需的功能

Required Capability for Windows Store Apps
Windows Store應用程式所需的功能。如果您使用Photon Voice,您還需要「麥克風」功能。

UWP應用程式與其他應用程式隔離,且作為一項功能,無法連接到在同一Windows執行個體上運行的伺服器。
請參閱Microsoft檔案以了解「AppContainer隔離」。

UWP匯出

如果您想將Unity應用程式匯出到UWP,您可以使用.NET或IL2CPP作為指令碼後端。Photon PUN或Photon Realtime Unity SDK已經設置為選擇正確的程式庫,以便從Unity成功匯出應用程式。但是,如果匯出時出現問題,請檢查並確保您為特定的指令碼後端使用了正確的程式庫:

Back to top