日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

unity内置浏览器插件UniWebView的使用(支持Android,ios,Mac)

發布時間:2023/12/9 Android 77 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unity内置浏览器插件UniWebView的使用(支持Android,ios,Mac) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下載

UniWebView這個插件支持Android、IOS和Mac,不支持Windows。
百度網盤下載鏈接:
https://pan.baidu.com/s/1wM7frlsW4qdiUA0WHu7exA
提取碼:sel8

Unity Asset Store下載鏈接:
https://assetstore.unity.com/packages/tools/network/uniwebview-3-92605
價格: $25


用法

添加UniWebView在一個GameObject上
對UniWebView.url賦值
可以設置一些在打開瀏覽器的時候的一些回調

webView.OnLoadComplete += OnLoadComplete; webView.OnReceivedMessage += OnReceivedMessage; webView.OnEvalJavaScriptFinished += OnEvalJavaScriptFinished;//...void OnLoadComplete(UniWebView webView, bool success, string errorMessage) {if (success) {webView.Show();} else {Debug.LogError("Something wrong in web view loading: " + errorMessage);}

設置webview的長寬高,這里都可以直接在ui上面顯示瀏覽器

webView.insets = new UniWebViewEdgeInsets(5,5,5,5);

然后調用webView.Load()方法即可


Web頁面和 Unity游戲邏輯的通信

1. UniWebView發送消息給 Unity
這個建議使用 url 方案。UniWebView 將監聽 以 uniwebview://開始 的 url
如果玩家在 Web 頁面點擊了 Url 鏈接, UniWebView 將會解析為一個 UniWebViewMessage 對象 ,然后引發 OnReceivedMessage 事件。 一個 UniWebViewMessage 對象包含 一個路徑字符串(其中有url 和args 參數字典)。
例如當點擊了鏈接 : uniwebview://move?direction=up&distance=1
將被解析為:

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

你在 監聽了 OnReceivedMessage 事件 的回調中, 會得到 UniWebViewMessage對象,然后實現自己的邏輯

void OnReceivedMessage(UniWebView webView, UniWebViewMessage message) {Debug.Log(message.rawMessage);if (string.Equals(message.path,"move")) {// It is time to move!// In this example:// message.args["direction"] = "up"// message.args["distance"] = "1"} }

2. Unity發送消息到 UniWebView
你可以運行任何的 javescript 頁面, 通過使用 EvaluatingJavaScript 你能調用并運行Javascript, 這個JavaScript代碼可以是你游戲腳本中的字符串形式。 你能監聽 OnEvalJavaScriptFinished 事件, 來處理這個結果。


Android設置AndroidManifest.xml

在導入這個插件之前, 如果在您的項目中已經有一個AndroidManifest.xml 文件,你不應該從 UniWebView 包導入 AndroidManifest.xml 文件了(如果沒有就直接全部導入就行了),而是您需要手動更新該文件。
1 在項目中的 Assets/Plugins/Android路徑下 ,使用文本編輯器打開 AndroidManifest.xml文件
2 文件中 搜索 android.intent.action.MAIN(肯定有且只有一個),然后按照下面的步驟操作:
上面步驟2的搜索結果位于<activity>與</activity>標記對之間,插入下面兩行數據

<meta-data android:name="android.app.lib_name" android:value="unity"/> <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />

3 在<activity...>標記中,將 android: name的值更改為"com.onevcat.uniwebview.AndroidPlugin"。這將使用 UniWebView 的activity 來啟動你的游戲。這樣做,這樣我們可以避免 web 視圖在 安卓系統的一些問題

在安卓平臺使用最大的問題是Unity失去焦點的問題。經過使用OnApplicationFocus方法測試,調用WebView打開界面時默認打開另一個Activity,Unity本身為一個Activity,當打開另外一個Activity時Unity會失去焦點,此時焦點不在Unity程序身上,如果鎖屏或者按Home鍵再打開后只會調出最后一個顯示的Activity,也就是UniWebView打開的網頁,而不是Unity程序。也就是在打開網頁的界面按下Home鍵或者鎖屏后程序將無法正常返回。主要的問題在于Unity程序和打開的網頁屬于不同的Activity,解決的方法為更改Unity工程中的安卓配置文件,使一個Activity繼承于另一個,顯示在同一個Activity上。
如果你的MainActivity 使用的不是 com.unity3d.player.UnityPlayerNativeActivity、 com.unity3d.player.UnityPlayerActivity或com.unity3d.player.UnityPlayerProxyActivity其中之一的話,您必須修改UniWebView源代碼 修改到你的activity名字上

4 同樣的在 <activity...>標記中,添加 android: hardwareAccelerated ="true"和android:windowSoftInputMode="adjustResize"。這將使安卓系統提供 html5功能
最終,會變成這樣

<activity android:name="com.onevcat.uniwebview.AndroidPlugin"android:label="@string/app_name"android:hardwareAccelerated="true"android:windowSoftInputMode="adjustResize"android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER"/></intent-filter><meta-data android:name="android.app.lib_name" android:value="unity" /><meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" /> </activity>

最后,添加訪問互聯網的權限, 如果有了就不用添加了。 在</manifest>標記 之前 添加

<uses-permission android:name="android.permission.INTERNET" />

其他

背景透明: 在 iOS 中,默認情況下web 視圖還有一個灰色的背景 。你可以使用 SetTransparentBackground來設置為 背景透明

加載進度框: 就是表示加載進度,以改善體驗。您可以禁用 和 顯示,接口SetShowSpinnerWhenLoading;也可以自定義標簽文本,接口SetSpinnerLabelText

Back 按鍵 和導航工具欄按鈕支持: 用戶可以使用后退按鈕在 web 頁面之間導航,Android 設備上像在本機瀏覽器中一樣。iOS 是一個帶有導航按鈕的默認工具欄

向前 和 向后: 瀏覽器的兩個行為,您可以在你的游戲中控制網頁導航,通過 GoBack和GoForward方法

清理緩存: web 視圖將保持 url 請求,默認情況下,這可能會使舊的頁面顯示,即使您更新您的 web 頁。使用 CleanCache來解決這一問題

視頻播放: 在web 視圖 播放視頻,只需加載url

加載本地文件 和 html 字符串: 給定設置 本地文件的 url,或 調用 LoadHTMLString具有 html字符串的值,您可以加載本地的內容

不止一個 web 視圖: 如果您希望在你的游戲中顯示 多個 web 視圖,那就是 有多個 掛有UniWebView組件的GameObject 而已

總結

以上是生活随笔為你收集整理的unity内置浏览器插件UniWebView的使用(支持Android,ios,Mac)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。