unity 使用lua处理byte数组

本文介绍了在Unity中,如何使用Lua处理网络协议时的字节流操作,避免频繁调用C#的ByteBuffer导致的性能问题。通过讲解Lua的`string.pack`和`string.unpack`语法,演示了如何在Lua端打包和解包byte[],以及展示了一个纯Lua实现的网络框架示例。

一.前言

一般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[]

语法介绍:

--返回一
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

TxNet.Ltd.

你的赞同是对我的鼓励

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

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

打赏作者

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

抵扣说明:

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

余额充值