PUN代码框架跟着官方教程学习了几天,想着巩固一下学习到的内容,就写几篇笔记记录一下,顺便列举一下存在的问题,准备着手解决
1.重要的命名空间、类、接口、以及方法、字段
命名空间:
using Photon.Pun;//主类的namespace using Photon.Realtime;//实现了Player类,用以存储玩家信息
类:
class PhotonNetwork//PUN主类 //1.重要的字段 IsConnected//是否连接上服务器 GameVersion//游戏版本 IsMasterClient//是否是存在于Master服务器的客户(client) PhotonNetwork.PhotonServerSettings.AppSettings.FixedRegion = "cn";//设置固有区域 PhotonNetwork.PhotonServerSettings.AppSettings.AppIdRealtime = "";//设置APPID PhotonNetwork.PhotonServerSettings.AppSettings.Server = "";//设置服务器 //2.重要的方法 ConnectUsingSettings();//连接到Photon的Master服务器 LoadLevel(string sceneName);//以场景名称为变量加载场景 CreateRoom();//在Game服务器中创建房间 JoinOrCreateRoom();//创建或者加入一个房间
class MonoBehaviourPunCallbacks //实现了PUN重要的回调函数,并且继承自MonoBehaviourPun、MonoBehaviourPun类 //该类中重要的回调函数 OnConnectedToMaster();//连接到服务器时调用 OnDisconnected();//从服务器断开时调用 OnJoinedLobby();//在进入到大厅时调用 OnLeftLobby();//同上相反 OnJoinedRoom();//进入房间时调用 OnJoinRandomFailed();//进入房间失败时调用 OnPlayerEnteredRoom();//当远端玩家进入房间时调用 OnPlayerLeftRoom();//玩家离开房间时调用
class MonoBehaviourPun//组件又photonView字段,用于实现不同玩家间的信息同步 //1.重要的字段 photonView//当前gameObject上的PhotonView组件的引用(reference) photonView.IsMine//该photonView是否是自己
interface IPunObservable//可观察接口,用以实现玩家间数据同步 OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info);//接口内的方法,可在此方法内实现自定义数据的传送
2.PUN的重要组件
- PhotonView 用以显示和管理同步信息
- PhotonAnimatorView 用以同步动画
- PhotonTranformView 用以同步transform
注:需要将PhotonAnimatorView 、PhotonTranformView 或者实现了IPunObversable接口的组件添加至PhotonView的ObservedComponents中才能实现同步,否则相应回调函数不会被调用。
3.PUN的服务器逻辑
参考链接:https://gitchat.csdn.net/columnTopic/5a39d5a575e5a577886d6c20
1.玩家通过ConnectUsingSettings连接至MasterServer,加入房间时则转入不同的GameServer
2.创建并进入房间时则切换至GameServer中
2.IsConnected判断当前client是否连接至MasterServer/GameServer/在两者之间切换也会返回true
3.IsMasterClient判断当前client是否存在于MasterServer中
参考链接:https://gitchat.csdn.net/columnTopic/5a39d5a575e5a577886d6c20
关于服务器细节,引用一下大佬的讲解
“首先客户端连接到主服务器,他们可以加入游戏大厅,当客户端在主服务器上调用 JoinGame 或 JoinRandomGame *** 作时,主服务器查找运行着的游戏服务器,并返回 IP 地址给客户端。”
“这时他们在主服务器上调用了 CreateGame *** 作,这个游戏服务器不是主服务器实际创建的,而是主服务器仅仅选择了最少工作负荷游戏服务器并将 IP 地址给返回客户端。客户端接收到 IP 地址后会和主服务器断开,通过获得的 IP 地址重新链接对应的游戏服务器。”
“Master Server 跟 Game Server 是一对多的关系,Master Server 能起到负载均衡的作用”
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)