IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> PhotonUnityNetworking学习笔记(一) -> 正文阅读

[系统运维]PhotonUnityNetworking学习笔记(一)

前言

跟着官方教程学习了几天,想着巩固一下学习到的内容,就写几篇笔记记录一下,顺便列举一下存在的问题,准备着手解决

  • 截止目前实现的内容:
    1.可连接至pun服务器
    2.可多人具名加入同一房间游玩
    3.可进行移动、攻击、退出

  • 存在的问题:
    攻击激光显示不同步

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的重要组件

  1. PhotonView 用以显示和管理同步信息
  2. PhotonAnimatorView 用以同步动画
  3. PhotonTranformView 用以同步transform

注:需要将PhotonAnimatorView 、PhotonTranformView 或者实现了IPunObversable接口的组件添加至PhotonView的ObservedComponents中才能实现同步,否则相应回调函数不会被调用。

3.PUN的服务器逻辑

参考链接:https://gitchat.csdn.net/columnTopic/5a39d5a575e5a577886d6c20
Photon服务器的连接逻辑
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 能起到负载均衡的作用”

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 20:02:38  更:2021-11-09 20:05:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:37:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码