Unity结合C++开发服务器实现多人游戏(二)
2017-02-15 14:08
681 查看
客户端连接服务器
当客户端连接到服务器时,必须有ProudNet的NetClient对象.我们将该对象添加到客户端的NetManager.cs.
![](https://lh3.googleusercontent.com/0PlGkT4YfHUhSTwDAZepD4ELdzXoCgzDshUQ5MuNHp65z5GoSOJyV944jFj0m4Oru4axp1JK-J0MX-Dimy7YQWIbEN0ciHhXdjeHusIsC7_muuro2a6LW-QQZ8Z8jA1408XbhTDZ)
![](https://lh4.googleusercontent.com/qGFH9VOFQkQiA1UO-lMa-5FEMjnVFj5lzV4hGbDlaob8TqlQufDSqHoTW7b_-uXNizcjLZxIAVncnAsADZ6oP0mgnCHAZyb2fFqsVAf-rvYb-K13IVcsQmKGkeVqfErHVFku-WNt)
客户端使用ProudNet客户端库的情况,请参考Unity
plugin 说明
NetManager开始时创建NetClient实例.
NetClient进行事件或者信息的处理,此函数被称作NetClient.FrameMove.对此进行短时间的反复调用.
程序结束时,中断NetClient.
现在,点击Login键修改代码以连接到服务器.OnGUI修改如下.
调用NetClient.Connect尝试连接到服务器.
该函数需要服务器的endpoint (地址和端口)和协议版本.
协议版本用来防止连接,如果客户端和服务器是不同的版本。当客户端程序的网络协议发生改变时,建议更改该值.网络协议版本将取决于收发信息的各种格式.
客户端试图连接到服务器,并获取结果.为得到结果进行NetClient.JoinServerCompleteHandler事件处理,为此事件添加代码.
在这里,在代码服务器地址被指定为localhost,同时输入您的服务器地址.
在命令中输入ipconfig或者ifconfig来显示您的服务器地址.
进行防止与服务器断开连接的处理.假如可能出现小狗咬坏网线的情况.
如下所示,实现LeaveServerHandler.
现在,让我们运行客户端.按下Login按键显示"Connecting..."这样的状态.
因为,没有可连接的服务器,所以需要添加服务器,下一节再进行介绍.
第三篇:Unity结合C++开发服务器实现多人游戏(三)
当客户端连接到服务器时,必须有ProudNet的NetClient对象.我们将该对象添加到客户端的NetManager.cs.
客户端使用ProudNet客户端库的情况,请参考Unity
plugin 说明
public class NetManager : MonoBehaviour { NetClient m_netClient; ... |
void Start() { m_netClient = new NetClient(); ... |
void Update() { if (m_netClient 4000 != null) { m_netClient.FrameMove(); ... |
void OnApplicationQuit() { // #SHOW08 Stop m_netClient.Disconnect(); } |
调用NetClient.Connect尝试连接到服务器.
该函数需要服务器的endpoint (地址和端口)和协议版本.
void OnGUI() { if (m_state == MyState.Disconnected || m_state == MyState.Connecting) { if (m_state == MyState.Disconnected) { if (GUI.Button(new Rect(10, 130, 100, 20), "Login!")) { var connectParam = new NetConnectionParam(); connectParam.protocolVersion = new Guid(); connectParam.protocolVersion.Set(Version); connectParam.serverIP = "localhost"; connectParam.serverPort = ServerPort; m_netClient.Connect(connectParam); m_state = MyState.Connecting; ... |
协议版本用来防止连接,如果客户端和服务器是不同的版本。当客户端程序的网络协议发生改变时,建议更改该值.网络协议版本将取决于收发信息的各种格式.
public static System.Guid Version = new System.Guid("{0x107b3b66,0xb7de,0x4091,{0xa5,0xba,0x72,0xca,0x1a,0xf5,0x1a,0xbc}}"); public static ushort ServerPort = 35475; |
在这里,在代码服务器地址被指定为localhost,同时输入您的服务器地址.
在命令中输入ipconfig或者ifconfig来显示您的服务器地址.
m_netClient.JoinServerCompleteHandler = (ErrorInfo info, ByteArray replyFromServer) => { if (info.errorType == ErrorType.ErrorType_Ok) { m_state = MyState.Connected; } else { Debug.Log(info.ToString()); m_state = MyState.Disconnected; } }; |
如下所示,实现LeaveServerHandler.
m_netClient.LeaveServerHandler = (ErrorInfo info) => { Debug.Log(info.ToString()); m_state = MyState.Disconnected; }; |
现在,让我们运行客户端.按下Login按键显示"Connecting..."这样的状态.
因为,没有可连接的服务器,所以需要添加服务器,下一节再进行介绍.
第三篇:Unity结合C++开发服务器实现多人游戏(三)
相关文章推荐
- Unity结合C++开发服务器实现多人游戏(七)
- Unity结合C++开发服务器实现多人游戏(九)
- Unity结合C++开发服务器实现多人游戏(四)
- Unity结合C++开发服务器实现多人游戏(八)
- Unity结合C++开发服务器实现多人游戏(三)
- Unity结合C++开发服务器实现多人游戏(演示)
- Unity结合C++开发服务器实现多人游戏(一)
- Unity结合C++开发服务器实现多人游戏(五)
- Unity结合C++开发服务器实现多人游戏(六)
- html5游戏开发--"动静"结合(一)-动态画面的实现
- Unity游戏开发技巧集锦2.1.3实现效果
- unity游戏开发----unity中自定义比分倒计时实现
- Unity3D研究院之Android NDK编译C/C++结合Unity实现本地数据共享(二十八)
- Unity开发安卓游戏:1.实现移动设备屏幕自适应
- html5游戏开发--"动静"结合(一)-动态画面的实现
- 【南昌】泰豪游戏诚聘C/C++游戏开发、客户端、服务器人员
- html5游戏开发--"动静"结合(一)-动态画面的实现
- html5游戏开发--"动静"结合(一)-动态画面的实现
- unity游戏开发之服务器与客户端或页面流转之自定义交互事件
- 通过Unity引擎可实现小规模的人员开发游戏