using UnityEngine; using System; using System.Runtime.InteropServices; using Newtonsoft.Json; using System.Collections.Generic; namespace EduCoderTool { /* * web端通讯中转器 * @author lz **/ public class WebConnecter : MonoBehaviour { private static WebConnecter instance = null; /// <summary> /// 单例 /// </summary> public static WebConnecter Singleton { get { if(instance == null) { instance = GameObject.FindObjectOfType<WebConnecter>(); if(instance == null) { GameObject go = new GameObject("WebConnecter"); instance = go.AddComponent<WebConnecter>(); } } return instance; } } //引用jslib的方法 [DllImport("__Internal")] private static extern void SendMsgToWeb(string str); //接收数据 public Action<string> dataHandle; void Awake() { if(instance == null) { instance = this; }else { Destroy(gameObject); } } /// <summary> /// 接收web端发送数据 /// </summary> /// <param name="jsonStr"></param> public void RecData(string jsonStr) { dataHandle?.Invoke(jsonStr); } /// <summary> /// 发送数据到web端 /// </summary> /// <param name="data"></param> public void SendDataToWeb(string data) { Debug.LogFormat(">>>>>> unity send web data{0}",data); if (Application.platform == RuntimePlatform.WebGLPlayer) { SendMsgToWeb(data); } } public void SendResultToWeb(bool success) { Dictionary<string, string> data = new Dictionary<string, string>(); data.Add("GameState", success ? "Success" : "Fail"); data.Add("Data", ""); string json = JsonConvert.SerializeObject(data); SendDataToWeb(json); } public void SendResultToWeb(bool success, double score) { Dictionary<string, object> data = new Dictionary<string, object>(); data.Add("GameState", success ? "Success" : "Fail"); data.Add("Data", score); string json = JsonConvert.SerializeObject(data); SendDataToWeb(json); } } }