Unity3D 客户端编程

匿名 (未验证) 提交于 2019-12-02 23:57:01

Photon Server 和 Unity3D 数据交互:

Photon Server 服务端编程

Unity3D 客户端编程

1:打开unity新建新项目,并引入Photon3Unity3D.dll到plugins文件中。

2、新建一个空物体,添加两个脚本文件。

  1 using System.Collections;   2 using System.Collections.Generic;   3 using UnityEngine;   4 using ExitGames.Client.Photon;   5 using System;   6    7 public class PhotonEngine : MonoBehaviour, IPhotonPeerListener   8 {   9     //单例模式  10     private static PhotonEngine instance;  11     private static PhotonPeer peer;  12   13     public static PhotonPeer Peer  14     {  15         get  16         {  17             return peer;  18         }  19     }  20   21     private void Awake()  22     {  23         if (instance == null)  24         {  25             instance = this;  26             //不需要销毁  27             DontDestroyOnLoad(this.gameObject);  28         }  29         else if (instance != this)  30         {  31             Destroy(this.gameObject);  32             return;  33         }  34     }  35     private void Start()  36     {  37         try  38         {  39             //PhotonPeer实例化时需要监听类和连接协议。所以该类继承IPhotonPeerListener接口实现监听  40             peer = new PhotonPeer(this, ConnectionProtocol.Udp);  41             peer.Connect("122.237.104.105:5055", "Mygame1");  42         }  43         catch (Exception e)  44         {  45             Debug.Log(e.ToString());  46         }  47     }  48   49     private void Update()  50     {  51         //时刻发送请求  52         peer.Service();  53     }  54   55     private void OnDestroy()  56     {  57         if (peer != null && peer.PeerState == PeerStateValue.Connected)  58         {  59             peer.Disconnect();  60         }  61     }  62   63     public void DebugReturn(DebugLevel level, string message)  64     {  65           66     }  67   68     public void OnEvent(EventData eventData)  69     {  70         switch (eventData.Code)  71         {  72             case 1:  73                 Dictionary<byte, object> di = eventData.Parameters;  74                 object i;  75                 di.TryGetValue(2, out i);  76                 Debug.Log("收到服务器消息" + i.ToString());  77                 break;  78             case 2:  79                 break;  80             default:  81                 break;  82         }  83   84     }  85   86     public void OnOperationResponse(OperationResponse operationResponse)  87     {  88         switch (operationResponse.OperationCode)  89         {  90             case 1:  91                 Debug.Log("收到服务器响应!。。。。。");  92                 Dictionary<byte, object> d = operationResponse.Parameters;  93                 object i, j;  94                 d.TryGetValue(1, out i);  95                 d.TryGetValue(2, out j);  96                 Debug.Log("收到服务器返回" + i.ToString() + j.ToString());  97                 break;  98             default:  99                 break; 100         } 101     } 102  103     public void OnStatusChanged(StatusCode statusCode) 104     { 105         Debug.Log(statusCode); 106     } 107 }

4、text类用来发送请求。

 1 using System;  2 using System.Collections;  3 using System.Collections.Generic;  4 using UnityEngine;  5   6 public class text : MonoBehaviour {  7   8   9     private void Update() 10     { 11         if (Input.GetMouseButtonDown(0)) 12         { 13             SendRequest(); 14         } 15     } 16  17     private void SendRequest() 18     { 19         Dictionary<byte, object> date = new Dictionary<byte, object>(); 20         date.Add(1, 1000); 21         date.Add(2,"sdgsdgdsfg"); 22         PhotonEngine.Peer.OpCustom(1, date, true); 23     } 24 }

5、运行结果。先启动服务器在启动客户端,鼠标左点击发送请求。

服务端:

客户端:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!