using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Client : MonoBehaviour
{
public GameObject Cube;
string recvMsg = string.Empty;
string sendMsg = string.Empty;
private MyCallBack Callback = Empty;
//空方法
private static void Empty(string str) { }
private void Start()
{
Application.runInBackground = true;
try
{
SocketSingle.Instance.ClientConnect(ClientCallBack, "127.0.0.1",20336);
recvMsg = "Connect Success";
}
catch (Exception e)
{
recvMsg = "Connect failed";
Debug.LogWarning(e.ToString());return;
}
}
private void Update()
{
if (Callback != Empty)
{
lock (Callback)
{
Callback(recvMsg);
Callback = Empty;
}
}
}
private void OnGUI()
{
GUILayout.Label(recvMsg);
sendMsg = GUILayout.TextField(sendMsg);
if (GUILayout.Button("发送命令"))
{
SocketSingle.Instance.ClientSend(sendMsg);
}
GUILayout.Space(10);
}
private void OnApplicationQuit()
{
SocketSingle.Instance.ClientDisconnect();
}
//客户端接收函数
void ClientCallBack(string str)
{
recvMsg = str;
Debug.Log(str);
Attach(ColorChange);
}
//添加回调
public void Attach(MyCallBack cb)
{
if (cb != null)
{
lock (Callback)
{
Callback += cb;
}
}
}
void ColorChange(string str)
{
int MsgInt = 0;
if (int.TryParse(str, out MsgInt))
{
switch (MsgInt)
{
case 1:
Cube.GetComponent<MeshRenderer>().material.color = Color.red;
break;
case 2:
Cube.GetComponent<MeshRenderer>().material.color = Color.blue;
break;
}
}
}
}