JiNanCementPlantForUnity/Assets/Scripts/BrideWebView.cs

101 lines
3.1 KiB
C#

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<CanvasGroup>();
}
async void Start()
{
webViewPrefab = GetComponent<CanvasWebViewPrefab>();
//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<CanvasViewportMaterialView>().GetComponent<WebPoint>().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<WebMessage>(eventArgs.Value);
WebAddListener(webMessage);
};
await webViewPrefab.WebView.WaitForNextPageLoadToFinish();
}
/// <summary>
/// 处理Web事件
/// </summary>
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
{
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;
}