«Это третий день моего участия в ноябрьском испытании обновлений. Подробную информацию об этом событии см.:Вызов последнего обновления 2021 г."
Во-первых, скачайте плагин UniWebview
Прикрепите ссылку для скачивания:disk.baidu.com/share/init?…Код извлечения 4g2i
Во-вторых, плагин импортируется в проект
В-третьих, создайте тестовую страницу
В-четвертых, добавьте два метода в UniWebViewHelper.
public static UniWebView CreateUniWebView(GameObject go, string url, float top, float left, float bottom, float right)
{
if (go == null || !go.activeSelf)
{
return null;
}
var view = go.GetComponent<UniWebView>();
if (view == null)
{
view = go.AddComponent<UniWebView>();
}
view.insets = new UniWebViewEdgeInsets(UniWebViewHelper.ConvertPixelToPoint(top, false), UniWebViewHelper.ConvertPixelToPoint(left, true), UniWebViewHelper.ConvertPixelToPoint(bottom, false), UniWebViewHelper.ConvertPixelToPoint(right, true));
view.SetShowSpinnerWhenLoading(true);
view.immersiveMode = false;
view.url = url;
return view;
}
private static int ConvertPixelToPoint(float num, bool v)
{
#if UNITY_IOS && !UNITY_EDITOR
float scale = 0;
if(v)
{
scale = 1f * screenWidth / Screen.width;
}
else
{
scale = 1f * screenHeight / Screen.height;
}
return (int)(num*scale);
#endif
return (int)num;
}
В-пятых, создайте новый скрипт OpenURL и повесьте его на Canvas.
#region 模块信息
// **********************************************************************
// Copyright (C) 2018 Blazors
// Please contact me if you have any questions
// File Name: OpenURL
// Author:
// WeChat||QQ:
// **********************************************************************
#endregion
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class OpenURL : MonoBehaviour {
public InputField _url;
public Button _enterBtn;
public Button _backBtn;
public Text _text;
UniWebView _view;
private void Awake()
{
_url.text = "https://www.baidu.com";
_enterBtn.onClick.AddListener(OpenUrl);
_backBtn.onClick.AddListener(CloseUrl);
}
public void OpenUrl()
{
if (_view!=null)
{
_view.CleanCache();
}
if (_url.text == null)
{
return;
}
_view = UniWebViewHelper.CreateUniWebView(gameObject, _url.text, 100,0,0,0);
_view.Load();
_view.OnLoadComplete += View_OnLoadComplete;
_view.OnReceivedMessage += _webView_OnMessageReceived;
_view.OnEvalJavaScriptFinished += _webview_OnEvalJavaScriptFinished;
/*
private void RemoveAllListeners() {
this.OnLoadBegin = null;
this.OnLoadComplete = null;
this.OnReceivedMessage = null;
this.OnReceivedKeyCode = null;
this.OnEvalJavaScriptFinished = null;
this.OnWebViewShouldClose = null;
this.InsetsForScreenOreitation = null;
}
*/
}
private void View_OnLoadComplete(UniWebView webView, bool success, string errorMessage)
{
if (success)
{
// 显示 加载完成的界面
webView.Show();
_backBtn.gameObject.SetActive(true);
//unity调用网页的showAlert方法,并传入参数2222
webView.EvaluatingJavaScript("showAlert('2222')");
}
else
{
Debug.LogError("Something wrong in webview loading: " + errorMessage);
}
}
public void CloseUrl()
{
_view.Hide();
_view.OnLoadComplete -= View_OnLoadComplete;
_view.OnReceivedMessage -= _webView_OnMessageReceived;
_view.OnEvalJavaScriptFinished -= _webview_OnEvalJavaScriptFinished;
Destroy(_view);
}
//接收到网页事件消息
private void _webView_OnMessageReceived(UniWebView webView, UniWebViewMessage message)
{
switch (message.path)
{
case "close":
/*var name = message.args["name"];//网页传递过来的参数args[] json
Debug.Log(name);*/
Destroy(webView.gameObject);
webView.CleanCache();
break;
default:
break;
}
}
private void _webview_OnEvalJavaScriptFinished(UniWebView webView, string result)
{
if (result.Equals("0"))
{
Debug.Log("调用网页的showAlert成功");
}
else
{
Debug.Log("调用网页的showAlert失败");
}
}
}