using System; using System.IO; using UnityEngine; public class BinaryMessage : IDisposable { private readonly MemoryStream _stream; private readonly BinaryWriter _writer; public BinaryMessage(int sysId, int cmdId) { _stream = new MemoryStream(); _writer = new BinaryWriter(_stream); _writer.Write((byte)sysId); _writer.Write((byte)cmdId); } public void Dispose() { _writer.Close(); _stream.Dispose(); } public void Send() { BinaryMessageHandle.PacketSend(_stream, _writer); Dispose(); } // 注:Lua只有个number,没得Byte,Short之分,所以Number类只能用函数名区分 public void WriteByte(byte data) { _writer.Write(data); } public void WriteShort(short data) { _writer.Write(data); } public void WriteInt(int data) { _writer.Write(data); } public void WriteLong(long data) { _writer.Write(data); } public void WriteString(string data) { var bytes = System.Text.Encoding.UTF8.GetBytes(data); _writer.Write((short)bytes.Length); _writer.Write(bytes); _writer.Write((byte)0); } }