Unity UniWebView内置浏览器插件
這是一個(gè)可以在APP內(nèi)打開網(wǎng)頁的插件,功能比較完善,這里記錄一下使用
使用方法:
插件使用還是比較容易上手的,導(dǎo)入插件后,新建一個(gè)空物體,掛上UniWebView組件
組件簡單清晰,每個(gè)部分的功能和名字相同,這里就不贅述了
我自己在使用中發(fā)現(xiàn),當(dāng)你在打開了網(wǎng)頁之后,使用返回鍵關(guān)閉時(shí)腳本會(huì)自動(dòng)銷毀當(dāng)前掛載UniWebView的對象,所以沒辦法在一個(gè)對象上重復(fù)打開其它網(wǎng)頁,需要每次使用的時(shí)候生成一個(gè)掛載UniWebView組件的對象,然后調(diào)用對應(yīng)的方法來啟動(dòng)網(wǎng)頁
啟動(dòng)方法:
UniWebView webView;
webView.Load(URL)注意,這里的URL需要http:// 或者 https://開頭
webView.Show();
這里記得Load之后再調(diào)用一下show方法 否則不會(huì)顯示網(wǎng)頁
到這里你就可以簡單的使用這個(gè)插件在APP內(nèi)打開內(nèi)置瀏覽器了。
再說一下UniWebView 和unity的通信
webView.OnMessageReceived 這個(gè)就是監(jiān)聽方法,
UniWebView 會(huì)監(jiān)聽所有 uniwebview:// 開頭的 url,如果用戶點(diǎn)擊了一個(gè)這樣的鏈接,便會(huì)解析出一個(gè)UniWebViewMessage對象并且引發(fā)OnMessageReceived 事件
這里展示一個(gè)官方的例子,如點(diǎn)擊了這樣一個(gè)鏈接:uniwebview://move?direction=up&distance=1
那么將被解析為:
此時(shí),在你監(jiān)聽的事件回調(diào)中就可以得到UniWebViewMessage,并且實(shí)現(xiàn)自己的邏輯,注意這里args是個(gè)字典,如果你在鏈接里放入了json的話,你的json就是存在args里的那一部分
void OnReceivedMessage(UniWebView webView, UniWebViewMessage message) {Debug.Log(message.rawMessage);if (string.Equals(message.path,"move")) {... ...} }還有很多其它的方法在這里就不講了,作者在腳本里有很詳細(xì)的注釋!
這里隨便說一下我遇到的一個(gè)問題,我使用的版本的最新的UniWebView 4.0 Unity是2020.1.0正式版。在4.0版本中 我根據(jù)官方的做法 如圖添加監(jiān)聽委托后,并不能正確監(jiān)聽到事件
但是當(dāng)我把添加方式換成了匿名函數(shù)的形式時(shí),卻又可以正確監(jiān)聽到事件了
出現(xiàn)這個(gè)情況的只有OnReceivedMessage方法,其它的監(jiān)聽事件,如:OnPageStarted,OnPageFinished,OnShouldClose 都可以正常監(jiān)聽(不管哪種添加委托的方式)很奇怪,這里我也沒弄懂原因,如果有知道的小伙伴歡迎留言討論
總結(jié)
以上是生活随笔為你收集整理的Unity UniWebView内置浏览器插件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [html] 制作一个页面时,需要兼容P
- 下一篇: [html] svg如何转为字体图标?