using System; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using TMPro; using UnityEngine; using UnityEngine.UI; public class TouchClient : MonoBehaviour { private TcpClient client; private NetworkStream stream; private volatile bool isConnected = false; private UdpClient udpListener; private Thread udpThread; private CancellationTokenSource udpCts = new CancellationTokenSource(); private Thread receiveThread; private CancellationTokenSource receiveCts = new CancellationTokenSource(); public Transform background; private string currentPage = "首页"; private string currentSingleItemModel = ""; private readonly Queue progressQueue = new Queue(); private readonly Queue hasAnimationQueue = new Queue(); private readonly object queueLock = new object(); private bool isDraggingSlider = false; private float lastSentProgress = 0f; private Dictionary sliderCache; private Dictionary toggleCache; private Dictionary playButtonCache; private Dictionary> singleItemButtonCache; [System.Serializable] public class PageButtonConfig { public string pageName; public List