PUN官网 https://www.photonengine.com/en/PUN
下载导入好插件之后会自动弹出这个界面
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
your appid is now aoolied to this project
Done!
All connection settings can be edited in the PhotonServersSettings now.
Have a look
我们关闭这个窗口 ,这个时候跳转到了服务器设置界面
打开demo场景进入游戏
这个时候我们来分析一下代码:
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();
读到这里我们就成功进入了主服务啦
主服务也可以称为大厅服务,在这里我们可以创建房间,加入房间,请求所有的房间列表
关于主服务我们下篇在聊