Unity3d遊戲客戶端與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日誌檔案也正常輸出
這裡我總結了下客戶端與伺服器端資料互動流程,如圖所示
相關推薦
Unity3d遊戲客戶端與Photon伺服器資料通訊
本文在上一篇博文的基礎上繼續介紹使用Unity3d遊戲客戶端與Photon Server資料通訊開啟Unity3d2017,新建專案,在Asset目錄下新建Plugins資料夾找到Photon SDK目錄下的lib檔案PhotonUnity3D.dll檔案,將其拖動到Unit
cocos2d-x客戶端與Java伺服器的通訊(一)
(⊙o⊙)…貌似自己已經有一段時間沒有寫部落格了,其實主要原因還是覺得自己水平有限,加上上班實在是太忙,實在抽不出時間來寫部落格。言歸正傳,大家都知道,在網路遊戲開發中, 網路通訊一直是個比較大的難題,一個伺服器可能要同時處理幾千上萬甚至上百萬的使用者資料,當然,僅僅是通訊
android客戶端與php伺服器的json資料簡單互動(二)
上一篇文章講的是最簡單的通過接送的格式完成android客戶端與php伺服器互動,也就是通過JSONObject物件來進行互動。 從上篇的文章程式碼就可以看出來,如果php陣列僅僅採用鍵值對的方式進行儲存,通過很簡單的方式轉換為json格式,之後在andr
XMPP學習——Android客戶端與openfire伺服器單雙向TLS通訊
本文從TLS安全傳輸層協議的簡單流程、如何生成自簽名CA證書、自頒發伺服器&客戶端證書、配置openfire伺服器安全連線去描述如何建立一個使用TLS加密的XMPP聊天通道。 這裡的smack版本是V4.2.3,openfire伺服器版本也是V4.2.3
關於客戶端與資料庫伺服器端的時間同步問題
這是一個做C/S的管理軟體開發時經常被忽略的問題,客戶端的時間與伺服器的時間如果有偏差,資料統計、報表等等肯定會有“意外”的情況發生。 意圖很簡單:從資料庫伺服器獲取到時間,根據這個時間修改當前客戶端電腦時間。 用Sql的函式getdate(),是比較容易的。 我們是基於do
Android客戶端與PC伺服器實現Socket通訊(wifi)
本文介紹Android終端持續掃描AP資訊併發送給伺服器端的實現。首先基於TCP協議在Android終端和PC兩端之間形成網路虛擬鏈路。使用ServerSocket建立TCP伺服器端,然後在Android客戶端使用Socket的構造器來連線伺服器。其中Android終端通過WIFI連線和PC處於同一區域網
實現Android客戶端與Eclipse伺服器端基於Okthhp簡單通訊
最近在重溫知識,所以藉此機會也想把自己寫的一些心得寫出來供大家分享,寫的有誤或者不好的地方望大家見諒,好了,廢話少說,直接進入正題,下面給大家介紹的就是基於目前主流網路通訊框架的okhttp實現的Android與Eclipse通訊。首先說明:我用的Android客戶端是And
Android客戶端與Tomcat伺服器通訊實現登入驗證
一.功能描述 在Android客戶端實現登入介面,當將使用者名稱和密碼填入文字框並點選登入按鈕時,將認證資訊傳送至Tomcat伺服器進行認證,若使用者名稱和密碼匹配,則Android客戶端提示登入成功,否則提示登陸失敗。 二.開發環境 Android客戶端:Andro
Android客戶端與雲伺服器進行網路通訊
多寫技術文件,多寫技術文件,多寫技術文件,重要的事情說三遍...... ---------------------------------------------------------------------------------------------------
android客戶端與servlet伺服器互動簡單示例
前段時間需要寫一個能雙向解析XML的程式,但是客戶端只能從伺服器裡讀,但是死活傳不上去,倒騰了兩天終於搞好了。 下面直接貼示例程式碼,不明白的話再問吧。 這是android客戶端,記得得在AndroidManifest.xml檔案裡新增INTENET許可權。 publ
PHP客戶端與C#伺服器端 Socket通訊
using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Sockets; using System.Net; namespace UpdServer
Android客戶端與java伺服器端的Socket連線
開發十年,就只剩下這套架構體系了! >>>
Android客戶端與PC進行Socket通訊
伺服器端程式碼: import java.io.IOException; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class Si
【隨堂筆記】unity中socket的用法(二、伺服器與客戶端之間簡單的資料傳遞)
主要實現伺服器與客戶端之間簡單的資料傳輸(單次) 伺服器程式碼 using System; using System.Net; using System.Net.Sockets; namespace SeverSocket { class Program {
java利用socket實現客戶端與伺服器的連線與資料傳遞
網路上的兩個程式通過一個雙向的通訊連線實現資料的交換,這個雙向鏈路的一端稱為一個 socket。socket 也就是套接字,可以用來實現不同虛擬機器或者不同計算機之間的通訊。在 Java 語言中,socket 可以分為兩種型別:面向連線的 socket 通訊協議(TCP)和麵向無連線的 socket
分散式資料庫資料從屬與客戶端與伺服器的資料同步
老實說,目前市面上許多產品,的確是不成熟的產品。 用過一些,給人蛋痛的感覺。 導言分佈還是集總今天我們來探討一個很重要的問題。每個程式設計師都有其思想,我的思想之一,就是分散式。 分散式,面對的一個問題,就資料的同步。 比如說,我們人類是分散式的,我們每個細胞都在無時無刻與其它細腦交換資料。 而現實
伺服器端與客戶端使用Json進行資料互動
伺服器端: 引入相應的包:json-lib-2.2-jdk15.jar Action: public String findAll() throws IOException{ List<News> news = newsService.findAll(); //
通俗易懂客戶端與伺服器端互動原理(HTTP資料請求與HTTP響應,包括Servlet部分)
經常看到HTTP客戶端與伺服器端互動原理的各種版本的文章,但是專業術語太多,且流程過於複雜,不容易消化。於是就按照在 Servlet 裡面的內容大致做了一些穿插。本來 連 Tomcat 容器 和 Servlet 的生命週期也準備在這裡一起寫的,但怕過去龐大,於是就簡單的 引用
Android 客戶端與伺服器端進行資料互動(一、登入伺服器端)
概要 安卓APP要實現很多功能(比如登入註冊、發表評論等)時都必須要使用到網路資料互動。所以在學習了這部分內容後,就將其以最常見的登入過程為例整理出來,也方便跟我一樣的新手能迅速學習上手。 預期效果圖如下,輸入手機號和密碼,點選Login按鈕,上傳資料到伺
Android客戶端與伺服器端的json資料互動(很詳細)
Android客戶端與伺服器端的json資料互動,主要是通過json形式的資料互動,就是json的寫入和解析。 先看效果圖,我最討厭講東西,一個圖沒有的。 算了,看來我不是寫部落格的材料,寫不下去了,要排版之類的麻煩,大家還是直接去下載原始碼,裡面有大量的注