当前位置:   article > 正文

【Unity】UniWebView的使用

uniwebview

一、介绍
  1. 背景:
    需要直接在游戏内展示一个webview视窗
  2. UniWebView(版本3.0+)

    UniWebView 是一个 Unity 3D 插件,用于将 Web 视图组件添加到 iOS 和 Android 上的 Unity 3D 手机游戏。它在 C# 中提供了一组抽象、跨平台和高级 API。使用 UniWebView,您可以在不了解原生开发的情况下将一些行为(例如浏览器)放入您的游戏中。
    当您需要显示公告或通知、为玩家排名添加排行榜或向您的用户显示任何交互式网页时,它会极大地促进您的开发过程。
    官网地址
    UniWebView 4.7
    提取码:2jhf
    UniWebView 3.0+
    提取码:gd0w

二、使用

1.使用方法相对简单,直接上代码

 public class UniWebPresenter :UIPresenterBase
    {
        [SerializeField] private RectTransform m_UniWebRectTransform;			//UniWebViewNativeListener物体的父物体
        private UniWebView m_UniWebView;
		private string m_Url;
		private bool m_Log;
        public override void Init(params object[] parameters)
        {
			m_Url = parameters[0] as string;
			if(string.IsNullOrEmpty(m_Url))
            {
				Destroy(gameObject);
            }
			m_Log = GameSetting.Instance.Log; 
			CreateUniWebView();
			OnLoaded();
		}
		public void CreateUniWebView()
		{
			m_UniWebView = m_UniWebRectTransform.gameObject.AddComponent<UniWebView>();
			m_UniWebView.ReferenceRectTransform = m_UniWebRectTransform;
			m_UniWebView.OnMessageReceived += OnMessageReceived;
			m_UniWebView.OnPageStarted += OnPageStarted;
			m_UniWebView.OnPageFinished += OnPageFinished;
			m_UniWebView.OnKeyCodeReceived += OnKeyCodeReceived;
			m_UniWebView.OnPageErrorReceived += OnPageErrorReceived;

			m_UniWebView.OnShouldClose += OnShouldClose;

			m_UniWebView.SetBackButtonEnabled(true);// 回退钮  物理按键
			m_UniWebView.SetAllowFileAccessFromFileURLs(true);//访问本地的权限

			m_UniWebView.SetShowSpinnerWhileLoading(true);//过程中是否显示加载指示器。

			//uniWebView.SetSpinnerText("Loading");//设置显示在加载指示器中的文本

			m_UniWebView.SetHorizontalScrollBarEnabled(false);// 设置是否在Web内容超出Web视图范围时显示水平滚动条。
			m_UniWebView.SetVerticalScrollBarEnabled(false);// 设置当Web内容超出Web视图范围时,是否应显示垂直滚动条。

			m_UniWebView.BackgroundColor = Color.white;//背景
		}
		/// <summary>
		/// 加载页面
		/// </summary>
		/// <param name="url"></param>
		public void OnLoaded()
        {
			m_UniWebView.Load(m_Url);
			m_UniWebView.Show();
        }
        /// <summary>
        /// 重新加载页面
        /// </summary>
        private void OnReLoaded()
		{
			if (m_UniWebView.isActiveAndEnabled)
			{
				m_UniWebView.Reload();
			}
		}
		/// <summary>
		/// 关闭页面
		/// </summary>
		private void OnClose()
		{
			m_UniWebView.Hide();
            Destroy(gameObject);
        }

		/// <summary>
		/// 开始加载web视图触发
		/// </summary>
		/// <param name="webView"></param>
		/// <param name="url"></param>
		private void OnPageStarted(UniWebView webView, string url)
		{
			if(m_Log)
				Debug.Log("[UbiWebPresenter]  OnPageStarted " + url);
		}

		/// <summary>
		/// 加载web视图成功触发
		/// </summary>
		/// <param name="webView"></param>
		/// <param name="statusCode"></param>
		/// <param name="url"></param>
		private void OnPageFinished(UniWebView webView, int statusCode, string url)
		{
			if (m_Log)
				Debug.Log("[UbiWebPresenter]  OnPageFinished statusCode:" + string.Format("statusCode:{0},url{1}", statusCode, url));
		}

		/// <summary>
		/// 页面加载过程中引发错误
		/// </summary>
		/// <param name="webView"></param>
		/// <param name="errorCode"></param>
		/// <param name="errorMessage"></param>
		private void OnPageErrorReceived(UniWebView webView, int errorCode, string errorMessage)
		{
			if (errorCode == -2)
			{
				OnClose();
			}
			if (m_Log)
				Debug.Log("[UbiWebPresenter]  OnPageErrorReceived :" + string.Format("errorCode:{0},errorMessage{1}", errorCode, errorMessage));
		}
		/// <summary>
		/// 设备按键触发
		/// </summary>
		/// <param name="webView"></param>
		/// <param name="keyCode"></param>
		private void OnKeyCodeReceived(UniWebView webView, int keyCode)
		{
			if (keyCode == 4)
			{
				OnClose();
			}
			if (m_Log)
				Debug.Log("[UbiWebPresenter]  OnKeyCodeReceived keycode:" + keyCode);
		}
		

		/// <summary>
		/// JS调用Unity时触发
		/// </summary>
		/// <param name="webView"></param>
		/// <param name="message"></param>
		private void OnMessageReceived(UniWebView webView, UniWebViewMessage message)
		{
			if (m_Log)
				Debug.Log("[UbiWebPresenter]  OnMessageReceived :" + message.RawMessage);
		}
		/// <summary>
		/// 视图自动关闭时触发
		/// </summary>
		/// <param name="webView"></param>
		/// <returns></returns>
		private bool OnShouldClose(UniWebView webView)
		{
            webView.CleanCache();//清除缓存
			webView = null;
			return true;
		}

	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146

在这里插入图片描述

三、坑
  1. url必须加协议前缀 http://、https://之类,否则网页打开一片空白
  2. 注意:UniWebView只支持Android、iOS和Mac平台,Windows是打不开的
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/83346
推荐阅读
相关标签
  

闽ICP备14008679号