Unity中使用WebView
Unity中使用WebView
@(設(shè)計(jì))
需求,最近游戲中需要引入H5直播頁(yè)面和更新比較頻繁的賽事頁(yè)面,需求包括:加密傳參數(shù)、和Unity交互,在Unity框架下其實(shí)有幾種方案:
不過(guò)實(shí)際需求中不在使用瀏覽器自身的導(dǎo)航欄,而是全屏顯示并且使用自己的導(dǎo)航系統(tǒng),這個(gè)就有點(diǎn)糾結(jié),因?yàn)樯鲜鰞煞N打開(kāi)之后都會(huì)有默認(rèn)的導(dǎo)航條,這種情況下只能寄希望引入第三方組件來(lái)解決這個(gè)問(wèn)題,比如Uniwebview或者其他的。
實(shí)現(xiàn)原理
瀏覽了一遍第三方組件,比如Github上的
https://github.com/gree/unity-webview 、 https://github.com/Kogarasi/Unity-Webview 或者Unity Store上的UniWebView,其原理離不開(kāi)Android WebView , Android與我也是陌生人,具體大家可以查看github的代碼吧
UniWebview
處理Apollo之外,第三方網(wǎng)頁(yè)支持工作用的比較多可能的就是這個(gè)了.基于Android WebView開(kāi)發(fā),支持Android和IOS , 效率我沒(méi)具體測(cè)試過(guò),先給個(gè)下載地址吧:
Uniwebview-2.9.1 百度網(wǎng)盤(pán)下載
里面帶的例子看完基本上就可以使用,主要關(guān)注幾個(gè)回調(diào)接口的使用,包里面帶有Android實(shí)現(xiàn)源碼。
如果想?yún)⒖际謨?cè),這里:
http://uniwebview.onevcat.com/manual(這個(gè)可以認(rèn)真看下)
http://uniwebview.onevcat.com/reference/class_uni_web_view.html
如果想看中文具體的用法:
Unity中內(nèi)嵌網(wǎng)頁(yè)插件 UniWebView 2.8使用
Unity中內(nèi)嵌網(wǎng)頁(yè)插件UniWebView使用總結(jié)
附帶自己使用UniWebView實(shí)現(xiàn)的一個(gè)庫(kù):代碼鏈接 , 不過(guò)我的應(yīng)該場(chǎng)景只用打開(kāi)一個(gè)
遇到的問(wèn)題
# 1.焦點(diǎn)問(wèn)題
Unity工程是MainActivity ,網(wǎng)頁(yè)是另外一個(gè)Activity, 通過(guò)監(jiān)聽(tīng)Unity OnApplicationFocus 函數(shù)就會(huì)發(fā)現(xiàn)打開(kāi)網(wǎng)頁(yè)之后MainActivity會(huì)失去焦點(diǎn)。如果這個(gè)時(shí)候鎖屏或者點(diǎn)擊Home鍵,然后重新打開(kāi)游戲就會(huì)發(fā)現(xiàn)網(wǎng)頁(yè)是打開(kāi)了,但是游戲是黑屏的,網(wǎng)頁(yè)和Unity的通信也斷開(kāi)了(游戲處于Pause狀態(tài)),更悲劇的是頁(yè)面也關(guān)閉不了了。
優(yōu)雅的解決方案,可以參考官網(wǎng)的說(shuō)法:
In same the <activity...> tag, change the value of android:name to "com.onevcat.uniwebview.AndroidPlugin". This will use the UniWebView's activity to start your game. By doing so we, can avoid some issues for web view in Android. If you are using a main activity other than com.unity3d.player.UnityPlayerNativeActivity, com.unity3d.player.UnityPlayerActivity or com.unity3d.player.UnityPlayerProxyActivity, you have to modify the source code shipped with UniWebView to your own customization. Please refer to the next section Recompile Guide to know more about it.
具體做法可以參考:http://uniwebview.onevcat.com/manual
不過(guò)我使用的方式更粗暴一點(diǎn),在Unity進(jìn)入Pause的時(shí)候直接把網(wǎng)頁(yè)隱藏,再激活的時(shí)候再打開(kāi)網(wǎng)頁(yè),后面是否會(huì)有問(wèn)題還不得而知:
2. 網(wǎng)頁(yè)清除
經(jīng)過(guò)測(cè)試,在打開(kāi)一個(gè)網(wǎng)頁(yè)后,修改網(wǎng)頁(yè),再次打開(kāi),顯示的還是之前的網(wǎng)頁(yè),關(guān)閉Unity程序也無(wú)法清除緩存。解決的方法為關(guān)閉網(wǎng)頁(yè)時(shí)調(diào)用插件自身的CleanCache ()方法,清除緩存,這樣每次打開(kāi)的都是新的網(wǎng)頁(yè)。我做的可能稍稍麻煩點(diǎn)。在每次關(guān)閉的時(shí)候都會(huì)進(jìn)行這個(gè)處理:
while (mCurrentView.CanGoBack()){mCurrentView.GoBack();}SetVisible(false);mCurrentView.CleanCache();mCurrentView.CleanCookie();3. WebView 兼容性問(wèn)題
Android我確實(shí)是學(xué)半天就開(kāi)始用了,自覺(jué)是個(gè)易上手難精通的東西,對(duì)于WebView在不同系統(tǒng)不用機(jī)型下的情況不甚了解,不過(guò)H5開(kāi)發(fā)那邊強(qiáng)制接入騰訊瀏覽器X5內(nèi)核,過(guò)程不算很難,可以參考:http://x5.tencent.com/doc?id=1003, 不過(guò)有點(diǎn)問(wèn)題是不能直接使用MSDK的jar包直接進(jìn)行開(kāi)發(fā)(X5的版本太老,后續(xù)會(huì)更新),所以有導(dǎo)入了一份X5的jar包。
4. 視頻全屏播放問(wèn)題
http://blog.csdn.net/lx331675996/article/details/50634670
5. Manifest 配置
注意最后硬件加速和窗口的配置
<activity android:name="com.onevcat.uniwebview.AndroidPlugin"android:label="uniwebview"android:hardwareAccelerated="true"android:windowSoftInputMode = "stateHidden|adjustResize"android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"><intent-filter><category android:name="android.intent.category.LAUNCHER" /></intent-filter><meta-data android:name="unityplayer.UnityActivity" android:value="true" /><meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" /></activity>引申
Unity與Android交互:
https://docs.unity3d.com/Manual/PluginsForAndroid.html
Unity3D研究院之在Android中打開(kāi)WebView
Unity3D研究院之打開(kāi)Activity與調(diào)用JAVA代碼傳遞參數(shù)
uniwebview 數(shù)據(jù)通信方式
https://developer.android.com/reference/android/webkit/WebView.html
WebView詳解與簡(jiǎn)單實(shí)現(xiàn)Android與H5互調(diào)
Android中Java與JavaScript交互的幾種方式
uniwebview重編譯問(wèn)題
UniWebView問(wèn)題總結(jié)
附帶測(cè)測(cè)試工程:http://git.oschina.net/rubbyzhang/UniWebView
轉(zhuǎn)載于:https://www.cnblogs.com/zsb517/p/6188544.html
總結(jié)
以上是生活随笔為你收集整理的Unity中使用WebView的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 博客园积分规则
- 下一篇: 20155203 - 杜可欣 - 预备作