using UnityEngine; using UnityEngine.UI; using System.Net.Sockets; using System.Net; using System.Text; using System.Threading; public class TouchClient : MonoBehaviour { private TcpClient client; private NetworkStream stream; private bool isConnected = false; private UdpClient udpListener; private Thread udpThread; public Transform background; private string currentPage = "首页"; void Start() { Screen.SetResolution(1920, 1080, false); udpListener = new UdpClient(9999); udpThread = new Thread(ListenForBroadcast); udpThread.Start(); Debug.Log("触摸端等待显示端广播..."); ShowPage("首页"); } private void ListenForBroadcast() { IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 9999); while (!isConnected) { byte[] data = udpListener.Receive(ref endPoint); string serverIp = Encoding.UTF8.GetString(data); Debug.Log("发现显示端IP: " + serverIp); ConnectToServer(serverIp, 8888); } } private void ConnectToServer(string ip, int port) { try { client = new TcpClient(); client.Connect(ip, port); stream = client.GetStream(); isConnected = true; Debug.Log("触摸端已连接到显示端: " + ip); } catch { Debug.Log("连接显示端失败"); } } private void SendMessageToServer(string msg) { if (isConnected && stream != null) { byte[] data = Encoding.UTF8.GetBytes(msg); stream.Write(data, 0, data.Length); Debug.Log("发送指令: " + msg); } } public void OnButtonClick_Page(string pageName) { ShowPage(pageName); SendMessageToServer("Page:" + pageName); } public void OnButtonClick_Anim(string animName) { SendMessageToServer("Anim:" + animName); } // Slider 绑定的方法 public void OnSliderChanged(Slider slider) { float progress = slider.value; // 0-100 SendMessageToServer("Progress:" + progress.ToString("F2")); } private void ShowPage(string pageName) { foreach (Transform child in background) { child.gameObject.SetActive(child.name == pageName); } currentPage = pageName; Debug.Log($"切换到页面:{pageName}"); } private void OnApplicationQuit() { udpListener?.Close(); stream?.Close(); client?.Close(); } }