113 lines
2.6 KiB
C#
113 lines
2.6 KiB
C#
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_PlayModel(string modelName)
|
|
{
|
|
SendMessageToServer("Model:" + modelName);
|
|
}
|
|
|
|
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();
|
|
}
|
|
}
|