101 lines
3.1 KiB
C#
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;
|
|
}
|
|
|