using Newtonsoft.Json; using System.Collections; using System.Collections.Generic; using System.IO; using System.Runtime.InteropServices.ComTypes; using UnityEngine; using Vuplex.WebView; using Vuplex.WebView.Internal; public class BrideWebView : MonoBehaviour { public static BrideWebView Instance; public CanvasWebViewPrefab webViewPrefab; private CanvasGroup canvasGroup; private string urlPath; public void Awake() { Instance = this; urlPath = Application.streamingAssetsPath + "/LoadUrl.json"; canvasGroup = GetComponentInParent(); } async void Start() { webViewPrefab = GetComponent(); //IWebView.LoadUrl() if (File.Exists(urlPath)) { string jsonData = File.ReadAllText(urlPath); webViewPrefab.InitialUrl = jsonData; } await webViewPrefab.WaitUntilInitialized(); webViewPrefab.WebView.SetDefaultBackgroundEnabled(false); webViewPrefab.WebView.LoadProgressChanged += (sender, eventArgs) => { Debug.Log($"Load progress changed: {eventArgs.Type}, {eventArgs.Progress}"); if (eventArgs.Type == ProgressChangeType.Finished) { GetComponentInChildren().GetComponent().enabled = true; canvasGroup.alpha = 1; Debug.Log("The page finished loading"); } if (eventArgs.Type == ProgressChangeType.Failed) { Debug.LogError("未加载:" + eventArgs); } }; webViewPrefab.WebView.MessageEmitted += (sender, eventArgs) => { #if UNITY_EDITOR Debug.Log("JSON received: " + eventArgs.Value); #endif WebMessage webMessage = JsonConvert.DeserializeObject(eventArgs.Value); WebAddListener(webMessage); }; await webViewPrefab.WebView.WaitForNextPageLoadToFinish(); } /// /// 处理Web事件 /// public void WebAddListener(WebMessage webMessage) { //if (webMessage.Type == "Tog") //{ // if (webMessage.Message.Contains("碳资产管理")) // { // Debug.Log("碳资产管理"); // } //} //if (webMessage.Type == "Btn") //{ //} if (webMessage.Type == "Btn" || webMessage.Type == "Tog") ShowGroup._instance.Show(webMessage.Message); else if (webMessage.Type == "video") { VideoManager.instance.ShowVideo(webMessage.Message); } else if (webMessage.Type == "Tip") { if (webMessage.Message.Equals("true")) { WebPoint.instance.enabled = false; } else if (webMessage.Message.Equals("false")) { WebPoint.instance.enabled = true; } } else { PeiDianShiDianGuiParent.Instance.CameraShow(webMessage.Type, webMessage.Message); } } private void Update() { //if (Input.GetKeyDown(KeyCode.Space)) //{ // webViewPrefab.WebView.PostMessage("{\"type\": \"greeting\", \"message\": \"Hello from C#!\"}"); //} } } [System.Serializable] public class WebMessage { public string Type; public string Message; }