Unity UniWebView内置浏览器插件

it2026-02-20  5

这是一个可以在APP内打开网页的插件,功能比较完善,这里记录一下使用

使用方法:

插件使用还是比较容易上手的,导入插件后,新建一个空物体,挂上UniWebView组件 组件简单清晰,每个部分的功能和名字相同,这里就不赘述了

我自己在使用中发现,当你在打开了网页之后,使用返回键关闭时脚本会自动销毁当前挂载UniWebView的对象,所以没办法在一个对象上重复打开其它网页,需要每次使用的时候生成一个挂载UniWebView组件的对象,然后调用对应的方法来启动网页

启动方法: UniWebView webView; webView.Load(URL)注意,这里的URL需要http:// 或者 https://开头

webView.Show(); 这里记得Load之后再调用一下show方法 否则不会显示网页 到这里你就可以简单的使用这个插件在APP内打开内置浏览器了。

再说一下UniWebView 和unity的通信 webView.OnMessageReceived 这个就是监听方法, UniWebView 会监听所有 uniwebview:// 开头的 url,如果用户点击了一个这样的链接,便会解析出一个UniWebViewMessage对象并且引发OnMessageReceived 事件

这里展示一个官方的例子,如点击了这样一个链接:uniwebview://move?direction=up&distance=1 那么将被解析为:

path = "move" args = { direction ="up", distance ="1" }

此时,在你监听的事件回调中就可以得到UniWebViewMessage,并且实现自己的逻辑,注意这里args是个字典,如果你在链接里放入了json的话,你的json就是存在args里的那一部分

void OnReceivedMessage(UniWebView webView, UniWebViewMessage message) { Debug.Log(message.rawMessage); if (string.Equals(message.path,"move")) { ... ... } }

还有很多其它的方法在这里就不讲了,作者在脚本里有很详细的注释!

这里随便说一下我遇到的一个问题,我使用的版本的最新的UniWebView 4.0 Unity是2020.1.0正式版。在4.0版本中 我根据官方的做法 如图添加监听委托后,并不能正确监听到事件 但是当我把添加方式换成了匿名函数的形式时,却又可以正确监听到事件了

出现这个情况的只有OnReceivedMessage方法,其它的监听事件,如:OnPageStarted,OnPageFinished,OnShouldClose 都可以正常监听(不管哪种添加委托的方式)很奇怪,这里我也没弄懂原因,如果有知道的小伙伴欢迎留言讨论

最新回复(0)