当前位置:   article > 正文

unity 使用lua处理byte数组_lua byte数组

lua byte数组

一.前言

一般Untiy中网络处理都是使用C#,但是如果使用Lua做热更新开发的话,很多逻辑需要在Lua端写,比如网络协议,会使用lua-protobuf,lua-pbc等。那么网络字节就需要在Lua端拼接好,再传给C#端。C#端只面向字节流,不处理字节流,字节流都在Lua端处理。

那么问题来了,我们拼接或解析字节数组,一般都是使用Tolua封装的ByteBuffer进行(本质上是MemoryBuffer+BinaryReaderBinaryWriter
所以我们就需要在Lua端调用C#的ByteBuffer类,我们的网络数据收发是很频繁的,如果频繁的实例化ByteBuffer,就会大量GC,造成性能问题。当然我们可以使用对象池,避免实例化造成的GC,但是还是无法去掉lua调用C#端ByteBuffer的GC。

所以我们今天的解决方案是使用lua的API进行字节的拼接和解析字节流,避免使用C#端的ByteBuffer。

二.语法

我们通过Lua的指导手册,可以查到Lua端解析byte[]方法是:string.packstring.unpack

下面就介绍下如何使用Lua自带的pack机制处理字节流byte[]

语法介绍:

--返回一个打包了(即以二进制形式序列化) v1, v2 等值
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/108357?site
    推荐阅读
    相关标签
      

    闽ICP备14008679号