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,