Unity3d游戏客户端与Photon服务器数据通信
来源:互联网 发布:沅有芷兮澧有兰 知乎 编辑:程序博客网 时间:2024/05/22 17:34
原文地址:blog.liujunliang.com.cn
上篇文章介绍到Photon服务器部署
本文在上一篇博文的基础上继续介绍使用Unity3d游戏客户端与Photon Server数据通信
打开Unity3d2017,新建项目,在Asset目录下新建Plugins文件夹
找到Photon SDK目录下的lib文件PhotonUnity3D.dll文件,将其拖动到Unity Plugins目录下
新建一个脚本,这里我命名为GamContext,将其挂载到场景空对象中
using System.Linq;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using ExitGames.Client.Photon;public class GameContext : MonoBehaviour,IPhotonPeerListener{ private PhotonPeer peer; public void DebugReturn(DebugLevel level, string message) { } //接收服务器发来的事件 public void OnEvent(EventData eventData) { switch (eventData.Code) { case 0: //获取事件数据 object value = eventData.Parameters.FirstOrDefault(q => q.Key == 1).Value; Debug.Log(value.ToString()); break; default: break; } } //接收响应数据(客户端发送了请求) public void OnOperationResponse(OperationResponse operationResponse) { int operationCode = operationResponse.OperationCode; switch (operationCode) { case 0: //读取数据包 Dictionary<byte, object> responsedata = operationResponse.Parameters; object value = responsedata.FirstOrDefault(q => q.Key == 1).Value; Debug.Log(value.ToString()); break; default: break; } } //连接状态发送改变 public void OnStatusChanged(StatusCode statusCode) { Debug.Log("数据连接状态发生的改变:" + statusCode); } private void Start() { //传输协议UDP 、 通过Listener接收服务器端的响应 peer = new PhotonPeer(this, ConnectionProtocol.Udp); //连接本地服务器 peer.Connect("127.0.0.1:5055", "MYGameServer"); GameObject.Find("SendRequest").GetComponent<Button>().onClick.AddListener(()=> { //传输数据 Dictionary<byte, object> myData = new Dictionary<byte, object>(); myData.Add(1,"刘俊良"); myData.Add(2, 20); //向服务器发送数据请求 peer.OpCustom(0, myData, true); }); } private void Update() { //和服务器实时保持数据连接 peer.Service(); } private void OnDestroy() { if (peer != null && peer.PeerState == PeerStateValue.Connected) { //断开连接 peer.Disconnect(); } }}
同时在服务器端中的ClientPeer类中对数据请求函数进行修改
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Photon.SocketServer;using PhotonHostRuntimeInterfaces;namespace MyGameServer{ class ClientPeer : Photon.SocketServer.ClientPeer { public ClientPeer(InitRequest ir) : base(ir) { } //该客户端断开连接 protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail) { } //该客户端出操作请求 protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) { /*****解析客户端请求数据*****/ ReadRequestData(operationRequest); /****************************/ /*****向客户端发送响应*****/ OperationResponse operationResponse = new OperationResponse(); operationResponse.OperationCode = 0; //数据包 operationResponse.Parameters = new Dictionary<byte, object> { { 1, "数据提交成功" } }; //向客户端发送请求响应 SendOperationResponse(operationResponse, sendParameters); /**************************/ /*****向客户端发送事件*****/ EventData eventData = new EventData(0, new Dictionary<byte, object> { { 1, "服务器事件" } }); SendEvent(eventData, new SendParameters()); /**************************/ } private void ReadRequestData(OperationRequest operationRequest) { int operationCode = operationRequest.OperationCode; switch (operationCode) { case 0: Dictionary<byte, object> requestData = operationRequest.Parameters; object value1 = requestData.FirstOrDefault(q => q.Key == 1).Value; object value2 = requestData.FirstOrDefault(q => q.Key == 2).Value; MyGameServer.LOG.Info("数据一:" + value1 + "数据二:" + value2); break; default: break; } } }}
重新生成项目
打开PhotonServer,开启MyGameServer
运行Unity3d,点击按钮,向服务器发送请求
此时Debug正常打印,查看MyGameServer.log日志文件也正常输出
这里我总结了下客户端与服务器端数据交互流程,如图所示
原文地址:blog.liujunliang.com.cn
阅读全文
1 0
- Unity3d游戏客户端与Photon服务器数据通信
- Photon Server游戏服务器从零开始学习(三)在Unity3D中创建客户端与服务器连接及发送请求
- Photon + Unity3D 线上游戏开发(续貂) - 多客户端通信
- unity3d Photon客户端 工作流程
- Unity3D + Photon 开发者沙龙(游戏引擎)
- Photon Server游戏服务器从零开始学习(六)游戏登录与注册操作
- Photon Server游戏服务器从零开始学习(二) Log日志文件配置与输出
- Photon Server与unity客户端连接
- Photon + Unity3D 线上游戏开发 学习笔记(一)
- Photon + Unity3D 线上游戏开发 学习笔记(二)
- Photon + Unity3D 线上游戏开发 学习笔记(三)
- Photon + Unity3D 线上游戏开发 学习笔记(四)
- Unity+ Photon服务器实时对战游戏——Photon服务器介绍(一)
- Unity+ Photon服务器实时对战游戏——Photon服务器介绍(二)
- Unity+ Photon服务器实时对战游戏——Photon服务器介绍(三)
- Java客户端与C服务器端数据通信
- Unity游戏开发Photon Server之客户端架构
- 使用PhotonServer和Unity建立一个棋牌类游戏实例(二)构建photon服务器与数据库的交互
- spring注解和配置文件混合使用
- 渗透测试工具实战技巧备忘
- CentOS 7系统安装配置图解教程
- tabbar 在iOS 11中隐藏问题
- 笔记 -- 06 -- 获得Url、Uri字符串后面拼接的参数
- Unity3d游戏客户端与Photon服务器数据通信
- 扩展BaseAdapter实现储存列表项ListView
- python里使用正则表达式的groups()函数访问组匹配串
- session测试的测试点
- java.lang.OutOfMemoryError: Java heap space解决方法
- 【算法——Python实现】最大堆和最小堆
- 中国大陆省市区县三级、四级菜单数据整理
- 哪些网站使用了vue,及其seo
- 刘强东万字长文谈战略:京东要从“一体化”走向“一体化的开放”