using DG.Tweening; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI; using SimpleJSON; using static GameManager; using Newtonsoft.Json; public class WebInteraction : MonoBehaviour { public static WebInteraction Inst; public string current_videoNumber = null; /// /// 视频监控是否为打开状态 /// public bool isVideoPlay = false; /// /// 工作票是否为打开状态 /// public bool isWorkPlay = false; public GameManager gameManager; private void Awake() { Inst = this; //StartCoroutine(QiangZhi()); } private void Start() { //bt.onClick.AddListener(() => //{ // gameManager.token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2OTI2NDMyODksInVzZXJuYW1lIjoiMTgzMTIzNDU2NzgifQ.uMoC7I4SytLEgYTKHxyvOv7Lygeb9zDCmhLDYv1cJrA"; // gameManager.enabled = true; //}); } //前端调用Unity 方法逻辑 //参数1 脚本所挂载的物体名 GameManager //参数2 脚本内方法名 unity_token_value //参数3 传递的参数 token值 /// /// 前端调用此方法传递Token /// /// public IEnumerator unity_token_value(string jsonData) { try { JSONNode dataNode = JSON.Parse(jsonData); gameManager.arguments.token = dataNode["data"]["token"].Value; gameManager.arguments.heatThresholdValue = dataNode["data"]["heatThresholdValue"].Value; gameManager.arguments.humidityThresholdValue = dataNode["data"]["humidityThresholdValue"].Value; } catch (Exception) { Debug.Log("解析Token错误"); } yield return (StartCoroutine(GameManager.Inst.LoadAddress((ct) => { if (ct != null) { GameManager.Inst.Jk_URL = new webURL(ct); StartCoroutine(GameManager.Inst.Initialize()); } else { Debug.Log("获取穿透错误!"); } }))); if (!gameManager.isgonging) { StartCoroutine( CombineJSON.GetJson_POST(GameManager.Inst.Jk_URL.gj_cx, GameManager.Inst.arguments.token, 10, (jsonResult3) => { if (string.IsNullOrEmpty(jsonResult3)) { return; } try { gameManager.root_AllAlarm = JsonConvert.DeserializeObject(jsonResult3); Array.ForEach(GameObject.FindObjectsOfType(), itme => { itme.tmsAlarmLists.Clear(); }); gameManager.tmsAlarms.Clear(); gameManager.Load_TmsAlarm(); } catch (Exception e) { Debug.Log("序列化-告警查询错误:" + e.Message); } })); StartCoroutine( CombineJSON.GetJson_POST(GameManager.Inst.Jk_URL.hj_cx, GameManager.Inst.arguments.token, 10, (jsonResult2) => { if (string.IsNullOrEmpty(jsonResult2)) { return; } try { gameManager.root_AllENV = JsonConvert.DeserializeObject(jsonResult2); gameManager.ENVs.Clear(); gameManager.Load_ENV(); } catch (Exception e) { Debug.Log("序列化-环境查询错误:" + e.Message); } })); } gameManager.isgonging = true; } public Button bt; public IEnumerator QiangZhi() { string filePath = Application.streamingAssetsPath + "/tk.txt"; UnityWebRequest www = UnityWebRequest.Get(filePath); yield return www.SendWebRequest(); if (www.result == UnityWebRequest.Result.Success) { string fileContent = www.downloadHandler.text; if (string.IsNullOrEmpty(fileContent)) yield break; gameManager.arguments.token = fileContent; } } /// /// 发送视频监控坐标的函数 /// /// /// public void SendVideoPosition(float x, float y) { // 在此处将视频监控坐标发送给前端 Debug.Log("Sending video position: (" + x + ", " + y + ")"); Application.ExternalCall("web_video_position", x + "," + y); } /// /// 关闭视频监控的函数 /// /// public void CloseVideo(string videoNumber) { // 在此处处理关闭视频监控的逻辑 Debug.Log("Closing video number: " + videoNumber); isVideoPlay = false; Application.ExternalCall("web_video_close", videoNumber); } /// /// 打开视频监控的函数 /// /// public void OpenVideo(string videoNumber) { // 在此处处理打开视频监控的逻辑 Debug.Log("Opening video number: " + videoNumber); Application.ExternalCall("web_video_open", videoNumber); } /// /// 打开现场作业的函数 /// public void OpenTicket() { // 在此处处理打开现场作业的逻辑 Debug.Log("Opening ticket"); Application.ExternalCall("web_ticket_open", ""); } /// /// 关闭现场作业的函数 /// public void CloseTicket() { // 在此处处理关闭现场作业的逻辑 Debug.Log("Closing ticket"); Application.ExternalCall("web_ticket_close", ""); } /// /// 工作票设备关联的函数 /// /// public void unity_ticket_cabinet(string deviceNumbers) { //, Array.ForEach(deviceNumbers.Split(','), (device) => { GameObject go = null; List ls = new List(); ls.AddRange(GameManager.Inst.Cabinets_go); ls.AddRange(GameManager.Inst.Racks_go); ls.AddRange(GameManager.Inst.MachineSlots_go); ls.AddRange(GameManager.Inst.TmsCards_go); go = Array.Find(ls.ToArray(), item => { return (item.GetComponent().deviceList.id == device); }); if (go != null) { try { //var c = go.GetComponent().materials[0].color; //GameManager.Inst.ChangeMaterialColor(go, 0, new Color(1, 109f / 255, 0, 1)); //DOVirtual.Float(0, 10, 1f, null).OnComplete(() => GameManager.Inst.ChangeMaterialColor(go, 0, c)); var Cabinet = gameManager.FindParent(go, gameManager.IsDesiredParent); if (Cabinet) { var hight = Cabinet.transform.Find("高亮").gameObject; hight.SetActive(true); hight.GetComponent().material = Resources.Load("Materials/1Tou"); } } catch (Exception e) { Debug.Log(e.Message); } } }); } public static class BoolMonitor { private static bool _value = false; /// /// 镜头是否为不动状态 /// public static bool Value { get { return _value; } set { if (_value != value) { _value = value; OnValueChanged(); } } } public static event EventHandler ValueChanged; static void OnValueChanged() { ValueChanged?.Invoke(null, EventArgs.Empty); } } }