PUN 2 菜鸟养成记 1连接上主服务

PUN官网 https://www.photonengine.com/en/PUN

下载导入好插件之后会自动弹出这个界面

PUN 2 菜鸟养成记 1连接上主服务_第1张图片

thanks for importing photon unity networking.
this window should set you up
-to use an exiting photon cloud app,enter your appid,
-to register an account or access an existing one ,enter the account's mail address
-to use photon OnPremise ,skip this step.

这里我使用AppID登录 点击 Setup Project

PUN 2 菜鸟养成记 1连接上主服务_第2张图片

your appid is now aoolied to this project

Done!
All connection settings can be edited in the PhotonServersSettings now.
Have a look

我们关闭这个窗口 ,这个时候跳转到了服务器设置界面

PUN 2 菜鸟养成记 1连接上主服务_第3张图片

 

打开demo场景进入游戏

PUN 2 菜鸟养成记 1连接上主服务_第4张图片

这个时候我们来分析一下代码:

public class LobbyMainPanel : MonoBehaviourPunCallbacks

这个大厅是继承于MonobehaviourPunCallbacks

public void Awake()
{
    PhotonNetwork.AutomaticallySyncScene = true;
}

在Awake的时候把这个参数设为true,别看就这么一行代码 里面做了很多事情

如果你只看AutomaticallySyncScene 的get set方法的话 那你就Too young了

他偷偷写了static PhotonNetwork()的静态构造方法

static PhotonNetwork()里面设置了UDP连接,设置了负载均衡,其他玩家事件监听,服务器列表事件监听,当前玩家状态监听,注册Unity自定义类型的序列化方法

构造方法最后创建了PhotonHandler类 这个类是光子网络的消息循环命脉所在,现在不深究PhotonHandler.cs了

 


我们来看一下登录按钮做了哪些事情

PhotonNetwork.LocalPlayer.NickName = playerName;
PhotonNetwork.ConnectUsingSettings();

简简单单两行代码,进入ConnectUsingSettings();我们进里面看看 做了哪些操作

NetworkingClient.LoadBalancingPeer.TransportProtocol = PhotonServerSettings.AppSettings.Protocol;

1:设置了网络传输协议 这里使用的是 Udp

public ConnectionProtocol Protocol = ConnectionProtocol.Udp;

2:开启消息队列

IsMessageQueueRunning = true;

3:设置AppId和AppVersion

NetworkingClient.AppId = PhotonServerSettings.AppSettings.AppIdRealtime;
GameVersion = PhotonServerSettings.AppSettings.AppVersion;

4:设置xxx 等下再补充

NetworkingClient.EnableLobbyStatistics = PhotonNetwork.PhotonServerSettings.AppSettings.EnableLobbyStatistics;

5:连接最好的服务器上

if (PhotonServerSettings.AppSettings.IsBestRegion)
{
    return ConnectToBestCloudServer();
}

6:连接成功之后把当前的连接状态设置为 已经连接上名称服务器

this.State = ClientState.ConnectingToNameServer;

7: 在PhotonHandler.cs的FixedUpdate中 分派命令

PhotonNetwork.NetworkingClient.LoadBalancingPeer.DispatchIncomingCommands();

8.创建加密公钥,验证账号,进入主服务器,进入成功后回调LobbyMainPanel 的OnConnectedToMaster

public override void OnConnectedToMaster();

读到这里我们就成功进入了主服务啦

主服务也可以称为大厅服务,在这里我们可以创建房间,加入房间,请求所有的房间列表

关于主服务我们下篇在聊

PUN 2 菜鸟养成记 2主服务    https://blog.csdn.net/u010294054/article/details/88077896

你可能感兴趣的:(PUN,Unity,网络)