【Unet】Unet Network Messages

17 篇文章 1 订阅
Messages 消息传递机制 
首先要注册 接收回调函数 
服务器端
 NetworkServer.RegisterHandler(chatMessage, ServerReceiveMessage);
客户端
 NetworkManager.singleton.client.RegisterHandler(chatMessage, ReceiveMessage);
定义相同的聊天通道 
  private const short chatMessage = 131;(随便定义数字 保证相互通信的chatMessage  一样)
发送消息 CS 公用一个 Send
 NetworkManager.singleton.client.Send(chatMessage, myMessage);
会直接先回调到 服务器的接收函数 然后通过服务器接收函数中的 
 NetworkServer.SendToAll(chatMessage, myMessage);
发送给所有客户端(当然也有指定发送某个客户端)
 NetworkServer.SendToClient(1, chatMessage, myMessage);
剩下具体方法可查API
还有就是传递的消息
系统内置的是有三种
EmptyMessage
StringMessage
IntegerMessage

当然官方也提供自己定义的类 只要继承与MessageBase即可

 当然通信的前提 你需要开启 服务器 连入客户端 可以使用代码也可以添加NetWorkManager组件 + HUD 配合 达到通信效果

using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.Networking.NetworkSystem;

public class UNETChat : Chat
{
    //just a random number
    private const short chatMessage = 131;

    private void Start()
    {
        //if the client is also the server
        if (NetworkServer.active)
        {
            //registering the server handler
            NetworkServer.RegisterHandler(chatMessage, ServerReceiveMessage);
        }

        //registering the client handler
        NetworkManager.singleton.client.RegisterHandler(chatMessage, ReceiveMessage);
    }

    private void ReceiveMessage(NetworkMessage message)
    {
        //reading message
        string text = message.ReadMessage<StringMessage>().value;

        AddMessage(text);
    }

    private void ServerReceiveMessage(NetworkMessage message)
    {
        StringMessage myMessage = new StringMessage();
        //we are using the connectionId as player name only to exemplify
        myMessage.value = message.conn.connectionId + ": " + message.ReadMessage<StringMessage>().value;

        //send to all connected clients
        NetworkServer.SendToAll(chatMessage, myMessage);
        NetworkServer.SendToClient(1, chatMessage, myMessage);
    }

    public void SendMessage()
    {
        StringMessage myMessage = new StringMessage();
       

      send
        NetworkManager.singleton.client.Send(chatMessage, myMessage);
    }
} 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unity_阿黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值