Unity 多人联网客户端编写

本文介绍了在Unity中使用Socket进行多人联网客户端的编写,包括如何实现持续的消息传递和数据处理。通过创建一个全局单例类进行网络监听,利用.NET的Socket类进行消息接收和发送。数据传输遵循预设的协议格式,发送时将消息序列化,接收时反序列化处理。同时展示了发送和接收的代码示例,以及消息的分发管理。

Unity 多人联网客户端编写


网络编程的运用在unity现在的游戏里面是必须的。完整的游戏都需要提供网络功能。

Unity自带的Networkview效果不是很令人满意,局域网内的处理还是可以接受,但是广域网就很难适应。

为此给Unity加上我们常见的基本编程模型是很有必要的。在此,我们来采用流行Socket通信来进行。

多人网络编程里面有几个难点先解释一下:

1、网络里面如何进行持续的消息传递。

 

以下代码段正是解决这个问题。

Socket的有点变体现在此。

我们在游戏的脚本里面编写了一个全局的单例类。不继承MonoBehaviour的单例类。

这个类确保2件事情,

1、全局存在。

2、全局唯一。

在进行单例创建的时候进行初始化,也就是下面的init()

回答上面的问题,利用Socket进行网络消息的接收,发送。

.NET里面自带的Socket类很方便得为我们处理了很多底层得东西。

怎么进行一直得监听呀?是有通讯啊,但是只是执行了一次呀/

问题问得好,解决不断地监听秘诀在于:回调。

注意看ReceiveCallBack我们里面的最后一局。当接收消息成功之后,socket自动调用我们的回调。Buff作为参数继续参与下一轮的接收。(这是.NET Socket类里面为我们处理好的很方便的功能)。

 

    public  void init() 

    {

        try

        {

            _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            _socket.Connect(_ip, _port);

            Debug.Log("服务器连接成功");

            _socket.BeginReceive(buff,0,1024,SocketFlags.None,ReceiveCallBack,buff);

 

        }  

        catch 

        {

            

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值