diff --git a/Client/Assets/Scripts/Managers/Buffer.cs b/Client/Assets/Scripts/Managers/Buffer.cs
new file mode 100644
index 0000000..e6613e9
--- /dev/null
+++ b/Client/Assets/Scripts/Managers/Buffer.cs
@@ -0,0 +1,163 @@
+using System;
+using System.Collections.Concurrent;
+using System.Threading;
+
+namespace Managers
+{
+
+ ///
+ /// 双缓冲静态类,用于逻辑计算线程与主线程之间的数据同步。
+ ///
+ /// 要同步的数据类型。
+ public static class DoubleBuffer
+ {
+ ///
+ /// 当前用于写入的缓冲区。
+ ///
+ private static T _writeBuffer;
+
+ ///
+ /// 当前用于读取的缓冲区。
+ ///
+ private static T _readBuffer;
+
+ ///
+ /// 用于同步缓冲区交换的锁对象。
+ ///
+ private static readonly object _lock = new object();
+
+ ///
+ /// 初始化双缓冲类。
+ ///
+ /// 初始值,用于初始化两个缓冲区。
+ public static void Initialize(T initialValue)
+ {
+ _writeBuffer = initialValue;
+ _readBuffer = initialValue;
+ }
+
+ ///
+ /// 写入数据到当前写缓冲区。
+ ///
+ /// 要写入的数据。
+ public static void Write(T data)
+ {
+ lock (_lock)
+ {
+ _writeBuffer = data; // 将数据写入写缓冲区
+ }
+ }
+
+ ///
+ /// 交换读写缓冲区,使主线程可以读取最新的数据。
+ ///
+ public static void SwapBuffers()
+ {
+ lock (_lock)
+ {
+ // 交换读写缓冲区
+ T temp = _readBuffer;
+ _readBuffer = _writeBuffer;
+ _writeBuffer = temp;
+ }
+ }
+
+ ///
+ /// 从当前读缓冲区读取数据。
+ ///
+ /// 当前读缓冲区中的数据。
+ public static T Read()
+ {
+ lock (_lock)
+ {
+ return _readBuffer; // 返回读缓冲区中的数据
+ }
+ }
+ }
+
+ ///
+ /// 网络消息缓冲区类,用于在网络线程和主线程之间进行线程安全的消息传递。
+ ///
+ public static class NetworkMessageBuffer
+ {
+ ///
+ /// 缓冲区的最大消息数量。
+ ///
+ private static readonly int MaxMessageCount;
+
+ ///
+ /// 存储消息的线程安全队列。
+ ///
+ private static readonly ConcurrentQueue MessageQueue;
+
+ ///
+ /// 用于控制缓冲区是否已满的信号量。
+ ///
+ private static readonly SemaphoreSlim BufferSemaphore;
+
+ ///
+ /// 初始化网络消息缓冲区类。
+ ///
+ static NetworkMessageBuffer()
+ {
+ MaxMessageCount = 100;
+ MessageQueue = new ConcurrentQueue();
+ BufferSemaphore = new SemaphoreSlim(MaxMessageCount, MaxMessageCount);
+ }
+
+ ///
+ /// 向缓冲区添加一条消息。
+ /// 如果缓冲区已满,则等待直到有空间可用。
+ ///
+ /// 要添加的消息内容。
+ public static async void AddMessageAsync(string message)
+ {
+ // 等待缓冲区有可用空间
+ await BufferSemaphore.WaitAsync();
+
+ try
+ {
+ // 将消息添加到队列中
+ MessageQueue.Enqueue(message);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"AddMessageAsync Error: {ex.Message}");
+ }
+ }
+
+ ///
+ /// 从缓冲区中读取一条消息。
+ /// 如果缓冲区为空,则返回 null。
+ ///
+ /// 缓冲区中的第一条消息,如果缓冲区为空则返回 null。
+ public static string ReadMessage()
+ {
+ if (MessageQueue.TryDequeue(out string message))
+ {
+ // 释放一个缓冲区空间
+ BufferSemaphore.Release();
+ return message;
+ }
+
+ return null;
+ }
+
+ ///
+ /// 获取当前缓冲区中的消息数量。
+ ///
+ /// 当前缓冲区中的消息数量。
+ public static int GetMessageCount()
+ {
+ return MessageQueue.Count;
+ }
+
+ ///
+ /// 清空缓冲区中的所有消息。
+ ///
+ public static void ClearBuffer()
+ {
+ while (MessageQueue.TryDequeue(out _)) { }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Client/Assets/Scripts/Managers/Buffer.cs.meta b/Client/Assets/Scripts/Managers/Buffer.cs.meta
new file mode 100644
index 0000000..8852415
--- /dev/null
+++ b/Client/Assets/Scripts/Managers/Buffer.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 44d2ac59153c45a4bdab4c6eef6ddcec
+timeCreated: 1752585193
\ No newline at end of file