UniWebView3.8
生活随笔
收集整理的這篇文章主要介紹了
UniWebView3.8
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
如果我們要打開一個(gè)uniweb,同時(shí)需要關(guān)閉上一個(gè)網(wǎng)頁,可以寫一個(gè)uniwebbase,其他需要打開網(wǎng)頁的類只需要繼承這個(gè)類就可以重寫一些監(jiān)聽事件。
using System; using System.Collections; using System.Collections.Generic; using UnityEngine;public class UniwebBase : MonoBehaviour {public static UniWebView _view;public void CreatWebView(string url, GameObject init, Rect _docst=default(Rect), RectTransform _init = null, bool fullScreen = false){Destroy();//Debug.Log(url);init.name =init+"?"+ Guid.NewGuid().ToString();_view = init.AddComponent<UniWebView>();_view .listener = init.AddComponent<UniWebViewNativeListener>();UniWebViewNativeListener.AddListener(_view.listener);if (fullScreen){_view.rect = new Rect(0, 0, Screen.width, Screen.height);}else{if (_init){_view.ReferenceRectTransform = _init;}else{_view.Frame = _docst;}}UniWebViewInterface.Init(_view.listener.Name, (int)_view.rect.x, (int)_view.rect.y, (int)_view.rect.width, (int)_view.rect.height);_view. isPortrait = Screen.height >= Screen.width;_view.OnPageStarted += _view_OnPageStarted;//網(wǎng)頁完成_view.OnPageFinished += _view_OnPageFinished;//網(wǎng)頁發(fā)送消息_view.OnMessageReceived += _view_OnMessageReceived;_view.OnPageErrorReceived += _view_OnPageErrorReceived;_view.OnShouldClose += _view_OnShouldClose;SetView();_view.Load(url);_view.UpdateFrame();_view.Show(true, (UniWebViewTransitionEdge)4, 0.8f, () => Debug.Log("完成"));}public virtual void SetView(){_view.BackgroundColor = new Color(0, 0, 0, 0);///設(shè)置單擊web視圖中的鏈接是否應(yīng)該在外部瀏覽器中打開頁面_view.SetOpenLinksInExternalBrowser(false);/// 設(shè)置在加載過程中是否顯示加載指示器。_view.SetShowSpinnerWhileLoading(true);_view.SetSpinnerText("加載中...");_view.SetHorizontalScrollBarEnabled(false);_view.SetVerticalScrollBarEnabled(false);/// 設(shè)置當(dāng)滾動(dòng)到頁面邊緣時(shí),web視圖是否應(yīng)該顯示彈跳效果。_view.SetBouncesEnabled(false);/// 設(shè)置web視圖是否支持縮放guesture來更改內(nèi)容大小。_view.SetZoomEnabled(true);// _view.useToolbar=true;}public virtual void _view_OnPageStarted(UniWebView webView, string url){Debug.Log(url);}public virtual void _view_OnPageFinished(UniWebView webView, int statusCode, string url){Debug.Log(statusCode+" "+url);}public virtual void _view_OnMessageReceived(UniWebView webView, UniWebViewMessage message){}public virtual void _view_OnPageErrorReceived(UniWebView webView, int errorCode, string errorMessage){}public virtual bool _view_OnShouldClose(UniWebView webView){return true;}public void Destroy() {if (_view != null){Debug.Log("刪除");_view.OnPageStarted -= _view_OnPageStarted;_view.OnPageFinished -= _view_OnPageFinished;_view.OnMessageReceived -= _view_OnMessageReceived;_view.OnPageErrorReceived -= _view_OnPageErrorReceived;_view.OnShouldClose -= _view_OnShouldClose;_view.CleanCache();UniWebViewNativeListener.RemoveListener(_view.listener.Name);UniWebViewInterface.Destroy(_view.listener.Name);_view.name = _view.name.Split('?')[0];Destroy(_view);_view = null;}} }這樣可以屏蔽uniwebview腳本里的Start,Awake,OnEnable?,OnDisable.并且在腳本增加public?Rect?rect這個(gè)屬性;
然后在屏蔽UniWebViewNativeListener這個(gè)腳本里的他自己定義的uniweb以及事件方法不然會出錯(cuò),
測試代碼
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class test3 : UniwebBase {public static test3 _instance;private static string url = "https://www.taobao.com/";public Rect _rect;void Awake(){_instance = this;}// Use this for initializationvoid Start(){GetComponent<Button>().onClick.AddListener(_test);}// Update is called once per framevoid Update(){}public void _test(){_instance.CreatWebView(url, this.gameObject, _rect);}override public void _view_OnMessageReceived(UniWebView webView, UniWebViewMessage message){base._view_OnMessageReceived(webView, message);} }?
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class test1 : UniwebBase {public static test1 _instance;private static string url = "https://www.baidu.com/";public RectTransform _rect;void Awake(){_instance = this;}// Use this for initializationvoid Start () {GetComponent<Button>().onClick.AddListener(_test);}// Update is called once per framevoid Update () {}public void _test(){_instance.CreatWebView(url,this.gameObject, _init:_rect);}override public void _view_OnMessageReceived(UniWebView webView, UniWebViewMessage message){base._view_OnMessageReceived(webView, message);} }設(shè)置兩個(gè)按鈕完美切換?
?
?
總結(jié)
以上是生活随笔為你收集整理的UniWebView3.8的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 若川的 2021 年度总结,弹指之间
- 下一篇: [html] 列举几种瀑布流布局的方法