美文网首页
网络功能插件Mirror学习笔记

网络功能插件Mirror学习笔记

作者: sky嗨嗨 | 来源:发表于2020-03-02 05:32 被阅读0次

写在前面

!!本文章不具有参考意义!!
主要作者健忘所以学明白了就写下来给未来忘掉的自己看(x

关键词

  1. LLAPI:Low Level Application Program Interface
  2. HLAPI:High Level Application Program Interface

Message

  1. 通过继承MessageBase或者实现IMessageBase,自定义Message类内可以包含自己想传递的数据,比如玩家昵称玩家等级,etc

  2. 系统底层代码在Send的时候会自动把被传message内的Serialize方法内参数NetworkWriter和Deserialize方法内参数NetworkReader赋值

例子:每次在Client连接到Server的时候发一个消息,打印一句Hello world

using UnityEngine;
using Mirror;

public class TestMsg : MessageBase {
    public string msg;

    public override void Serialize(NetworkWriter writer) {
        writer.WriteString(msg);
    }

    public override void Deserialize(NetworkReader reader) {
        msg = reader.ReadString();
    }
}

public class Debugger : NetworkManager {
    public override void OnStartServer() {
        base.OnStartServer();

        NetworkServer.RegisterHandler<TestMsg>(OnTestMsg);
    }

    public override void OnClientConnect(NetworkConnection conn) {
        base.OnClientConnect(conn);

        var testMsg = new TestMsg() { msg = "hello world" };
        NetworkClient.Send<TestMsg>(testMsg);
    }

    private void OnTestMsg(NetworkConnection conn, TestMsg testMsg) {
        Debug.Log(testMsg.msg);
    }
}
Serialize & Deserialize方法

NetworkWriter会把数据连成一串,猜测内部是一个queue一样的数据结构。NetworkReader通过调取不同读取方法ReadString()、ReaderByte()、etc来读取这一串数据的末尾,遵循先进先出原则,所以write的顺序要和read的顺序一样。

至于为什么需要Serialize/Deserialize,可能因为LLAPI传输数据的方法都是传输一样的格式的数据吧(比如byte之类的

つづく

相关文章

  • 网络功能插件Mirror学习笔记

    写在前面 !!本文章不具有参考意义!!主要作者健忘所以学明白了就写下来给未来忘掉的自己看(x 关键词 LLAPI:...

  • 二十五、 clang插件

    Clang插件 LLVM下载 由于国内的网络限制,我们需要借助镜像下载LLVM的源码 https://mirror...

  • 手动安装Jenkins插件

    手动安装Jenkins插件 Jenkins 插件下载地址 http://mirror.xmission.com/j...

  • docker学习——libnetwork插件化网络功能

    1.容器网络模型(CNM) 目前CNM支持的驱动类型有四种: Null:不支持网络服务,容器启动后无网络连接 ...

  • Day81-Docker_网络类型,监控

    Docker网络类型(插件形式) None:不为容器配置任何网络功能,--net=noneContainer:与另...

  • Jenkins下载插件设置国内源

    在下载Jenkins插件时比较慢,可以更换国内源 Jenkins插件清华大学镜像地址:https://mirror...

  • 04-docker网络

    1.Docker网络类型(插件形式) none:不为容器配置任何网络功能docker run -it --netw...

  • libnetwork插件化网络功能

    Docker将网络和存储以插件化的形式剥离了出来,独立的容器网络项目即为libnetwork项目。 容器网络模型(...

  • 源码

    反射 Swift通过Mirror类型来提供简单的反射功能

  • Android常用插件

    常用的第三方插件 |功能|名称|说明||-:-|-:-|-:-||网络请求|Volley|适用于高频次的网络请求|...

网友评论

      本文标题:网络功能插件Mirror学习笔记

      本文链接:https://www.haomeiwen.com/subject/aghjkhtx.html