This document is about: PUN 1
SWITCH TO

PUN Classic (v1)、PUN 2 和 Bolt 處於維護模式。 PUN 2 將支援 Unity 2019 至 2022,但不會添加新功能。 當然,您所有的 PUN & Bolt 專案可以用已知性能繼續運行使用。 對於任何即將開始或新的專案:請切換到 Photon Fusion 或 Quantum。

Known Issues

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

在後台運行

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

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

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

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

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

PUN有一個後台回退線程,在可能的情況下保持客戶端與伺服器的連接。

為了保持連接活躍,後台線程只在有限的時間內向伺服器發送ACK。
預設後台線程超時為60秒。 您可以使用PhotonNetwork.KeepAliveInBackground更改它。
後台超時後,PUN將優雅地斷開客戶端連接。
如果客戶端在移動到後台之前加入了一個房間,PUN將嘗試(如果需要)在應用程式再次進入前台時重新連接並重新加入同一房間。

PhotonAnimatorView及觸發器

如果您使用動畫器控制器中的觸發器參數並且
想要使用「PhotonAnimatorView」同步它們,重要的是要考慮如何處理以避免問題。

  • 由於觸發器的性質,它僅在動畫事件開始時啟用,並在下一個Update()之前立即禁用
  • GameObject上的元件按照被宣告的順序執行
  • 編輯執行順序設定將影響GameObject的元件的執行順序

在引發觸發器的程式碼之後執行「PhotonAnimatorView」元件至關重要。
所以把它放在堆疊的底部更安全,
或至少低於將負責觸發的元件,其觸發使用
Animator.SetTrigger(...)

「PhotonAnimatorView」檢查器顯示各種參數的當前值。
在發佈之前檢查的一個好方法是在應該的時候將觸發器正確地提升為true
如果您沒有看到它發生,那麼這個特定的觸發器很可能不會在網路上同步。

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部落格文章)。

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成功匯出應用程式。但是,如果匯出時出現問題,請檢查並確保您為特定的指令碼後端使用了正確的程式庫:

如果您正在使用.NET作為指令碼後端,請確保從/Assets/Plugins/Metro/目錄使用Photon3Unity3D.dll

如果您正在使用IL2CPP作為指令碼後端,請確保從/Assets/Plugins/目錄使用Photon3Unity3D.dll

Back to top