经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » unity » 查看文章
Unity3D 客户端编程
来源:cnblogs  作者:无名之士  时间:2019/9/10 10:35:38  对本文有异议

Photon Server 和 Unity3D 数据交互:

Photon Server 服务端编程

Unity3D 客户端编程

VS2017 之 MYSQL实体数据模型

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

 

 

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

 

 

 3、编辑Photon Engine。

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

4、text类用来发送请求。

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

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

服务端:

 

 

客户端:

原文链接:http://www.cnblogs.com/unknown6248/p/11462721.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号