PUN的设置与连接
Photon Unity Networking(PUN)的设置非常简单。把PUN导入到一个新的项目中,PUN向导(PUN Wizard)就会弹出来。也可以从菜单中访问,路径是Window-Photon Unity Networking。
![PUN Wizard界面](https://vibrantlink.com/wp-content/uploads/2021/07/image003.png)
通过免费注册一个新的Photon账户,或从您的仪表板上复制和粘贴现有的AppId,则可完成设置。
如果你想使用自托管的服务器(PhotonServer),请在这里点击 “跳过|Skip”并编辑PhotonServerSettings
,如下面所描述。
您只需要在代码中调用
PhotonNetwork.ConnectUsingSettings()
来进行连接。
PhotonServerSettings文件
设置向导在你的项目中添加了一个PhotonServerSettings
文件来存储配置,该文件主要由ConnectUsingSettings
使用。你可以设置其连接到光子云PhotonCloud或自我托管的服务器Photon Server,并改变其他常用的设置。
![在inspector中显示的PhotonServerSettings](https://vibrantlink.com/wp-content/uploads/2021/07/pun2-photonserversettings.png)
你可以设置AppId、光子云区域|Photon Cloud Region、游戏版本等。在大多数情况下,可以保留默认设置。
设定值说明
AppId Realtime, Chat and Voice
AppId被光子云|Photon Cloud用来识别每个项目。PUN使用一个光子Realtime的AppId进行连接。它还能与Photon Chat和Voice很好地配合,不过如果你使用相应功能,其需要各自的AppId。
App Version
在PUN中,App Version|应用程序版本是Game Version|游戏版本的一部分。具有不同游戏版本值的客户端,是相互分离的。PUN将其自己的PunVersion字符串添加到这个值中,以减少不同PUN版本之间潜在的不兼容情况。
Use Name Server
当连接到Photon Server v4服务器时,客户端会直接连接到主服务器,而不是Name Server|名称服务器。只有当你自己托管光子服务器PhotonServer时,才可以不勾选此项。更多细节请看下面Photon Server V4段落。
Dev Region
![](https://vibrantlink.com/wp-content/uploads/2021/07/DevRegionPhotonServerSettings.png)
从PUN v2.17开始,当使用PhotonNetwork.ConnectUsingSettings()
进行连接时,Dev Region
只在Unity Editor和Development Build中使用。你可以简单的通过删除该值,从而在Unity Editor和Development Build中禁用Dev Region。在这里阅读更多信息。
Fixed Region
当连接到光子云时,PUN将默认选择最佳区域。如果你想连接到一个特定的地区,在这里输入一个地区代码,此情况下最佳地区选择将被关闭。
Server
这个选项用于托管你自己的光子服务器PhotonServer时适用。请查看5分钟启动光子服务器或者下载Photon Server SDK。
确保这里填写客户端可以访问的地址。它可以是一个公共的、静态的IP、主机名或网络中的任何地址。
如果您为iOS开发游戏,可以考虑阅读PUN和IPv6以及如何为IPv6设置Photon服务器。
当所有设置正确后,你可以在你的代码中调用PhotonNetwork.ConnectUsingSettings()
。
Port and Protocol
Photon是为在一个Session|会话中使用多个服务器而设计的。这里输入的端口是第一个要连接的服务器的端口。这可能是一个主服务器或名称服务器。该端口也取决于所选择的协议。
如果你连接到光子云Photon Cloud,请将此值设为0。否则,请查询Photon使用的标准端口。
协议的默认值是(可靠的)UDP,但Photon同样也支持TCP和WebSockets。PUN客户端会在WebGL输出中自动使用安全WebSockets。
一般情况下建议使用UDP。
Enable Lobby Statistics
要从服务器上获得大厅统计信息,应该勾选这个选项。更多信息见应用程序和大厅统计页面。
Network Logging
这可以控制低级别的Photon代码的log记录。除非有必要,否则一般情况下应使用Error
设置。
Enable Support Logger
当你需要追踪在连接、匹配或房间中发生的事件时,这是一个有用的设置。勾选后,我们的脚本将注册回调并记录重要信息,以帮助调试你的游戏。
Run in Background
这设置了同名的Unity设置。更多信息在这里
RPC List
“Remote Procedure Calls
“使你能够在一个房间里的其他客户端上调用一个方法。PUN在PhotonServerSettings
中保留了这些方法的列表,在调用RPC时使用每个名称的缩写作为索引。
请查看远程调用PRC
自我托管的光子服务器配置
我们建议使用PhotonNetwork.ConnectUsingSettings
方法进行连接,并在连接前对PhotonServerSettings
进行相应的调整,可以在编译时在Unity编辑器中进行,也可以在运行时通过代码进行(改变PhotonNetwork.PhotonServerSettings.AppSettings
)。我们推荐使用Photon Server v5。
Photon Server V5
清除或设置NameServer.json
中配置的固定区域。将 “Server”设置为您的光子服务器的IP或主机名,其必须是在你的客户端可以访问的网络中。使用”localhost”或127.0.0.1来访问本机也是可以的。使用5058为默认的UDP端口(如果你在PhotonServer.config
中改变了NameServer应用程序的自定义端口,则此处也应改变为该端口)。请参阅这里的每个协议和服务器的默认端口列表。
![](https://vibrantlink.com/wp-content/uploads/2021/07/pun2-photonserversettings-server-v5.jpg)
在使用光子服务器(OnPremises)时,您需要知道其与光子云有一些细微的使用区别。这里列出了这些区别。
Photon Server V4
请取消对 “Use Name Server
“的勾选,因为Photon Server v4 SDKs不包括这项服务。清除固定区域。将 “Server “设置为您的光子服务器的IP或主机名。同样,其必须是在你的客户端可以访问的网络中。使用 “localhost “或127.0.0.1来访问本机是可以的,如果您使用在同一台机器上的独立构建。输入端口5055为默认的UDP协议(如果你在PhotonServer.config
中改变了MasterServer应用程序的自定义端口,则为该端口)。请参阅这里的每个协议和服务器的默认端口列表。
![](https://vibrantlink.com/wp-content/uploads/2021/07/pun2-photonserversettings-server.png)
当使用光子服务器(OnPremises)时,需要做一些调整:
- 如果你连接到Photon Server v4,请在在连接之前将序列化协议设置为1.6版本(因为1.8版本与该服务器版本不兼容)。
PhotonNetwork.NetworkingClient.SerializationProtocol = SerializationProtocol.GpBinaryV16;
- 客户端需要设置一个唯一的
UserId
,即使你不对用户进行认证。例如,为每个设备生成并保存一个GUID。 GameVersion
/AppVersion
不用于创建单独的虚拟AppId。
要获得Photon Server v4和Photon Cloud之间的完整差异列表以及Photon Server v4的已知问题,请访问此页面。