unity 插件uniwebview 内嵌H5游戏
首先需要用到插件 uniWebView3? ?
unity 商店網址
https://assetstore.unity.com/packages/tools/network/uniwebview-3-92605
導入插件之后在文件夾中找到預制體拖入場景中
基本配置
?
1、Url On Start
在UniWebView的Start() 方法里會加載url
2、Show On Start
勾選的話會在Start()方法里主動顯示。
未勾選的話需要主動調用Show()方法
3、Full Screan
全屏展示,勾選上的話會忽略Frame 和 Reference Rect Transform的設置
4、使用固定大小展示的話 設置 Frame的值,并且取消勾選Full Scream,以及
Reference Rect Transform 設置為None
5、Reference Rect Transform
引用一個Rect Transform并更改web view的大小以遵循該轉換。如果您正在使用具有多個分辨率支持的Unity UI,它是非常有用的。
6、Use Toolbar
勾選后只在ios已經mac上有用。包括關閉,前進,返回等??梢栽O置Toolbar Position 為Top,則在頂端顯示,Bottom 則在底端顯示。android的導航欄就有這些功能,所以不需要這個。
7、一旦UniWebView被Done按鈕或Back按鈕關閉,它將在默認情況下銷毀組件本身,以便盡快釋放資源。您將無法重用相同的UniWebView。如果想要顯示另一個頁面,則需要創建一個新的UniWebView。
?
監聽事件
1、OnPageFinished 當url加載完畢后調用
也可以使用方法作為委托偵聽器(delegate Listener)
2、OnShouldClose
OnShouldClose是在web視圖即將關閉時發送給您的事件。用戶可以使用iOS上的“完成”按鈕或Android上的“后退”按鈕。一旦web view關閉,UniWebView組件也將被銷毀,以保持干凈。如果您在引用中保存web視圖(例如,我們在這里通過webView字段保存web視圖),那么很有可能將其設置為null。否則,如果你想要加入的話,你以后可能會遇到麻煩。
tips:
在Android上,“后退”按鈕將引導用戶返回到上一個頁面。如果沒有返回的頁面,它將發送OnShouldClose事件,如果返回true,則嘗試關閉web view。
3、EvaluateJavaScript? 調用 JavaScript 方法
第一個參數:JavaScript 的方法
第二個參數:第二個參數是帶有UniWebViewNativeResultPayload的操作。payLoad也用于其他web view的方法回調,其中包含來自本機端的基本信息。這里我們只需要檢查下狀態碼,“0”表示一切正常。
4、OnMessageReceived
html里需要有
?
UniWebView In Depth
1、窗口坐標設置
示例:
2、OnOrientationChanged (Event)
當屏幕轉向的時候,Frame會相應變化。
3、OnRectTransformDimensionsChange?
使用ReferenceRectTransform 屬性時,當屏幕轉向時不需要再手動添加OnOrientationChanged 事件。UniWebView已經做好了這塊。
除了上述情況,當你因為其它原因需要這個功能的時候,可以調用這個方法。
?
Transition
1、顯示/隱藏過渡
通過修改Show 和 Hide的參數
fade 淡入淡出效果
edge 出現/消失的方向 eg:UniWebViewTransitionEdge.Bottom 從底部出現
duration 持續時間
completionHandler:完成后回調
tip:這兩個方法有個bool返回值,每次只允許進行一個轉換,如果您試圖在上一個轉換打開時初始化另一個轉換,那么新的轉換將不會啟動,返回值將為false。
2、Web View Animation
UniWebView還支持在顯示web視圖時對其進行動畫處理。使用AnimateTo方法,就可以指定一個幀作為目標幀。通過使用此方法,您還可以設置動畫的持續時間和延遲,以便進行精細的控制。
?
Memory Management(內存管理)
1、在不需要時銷毀web視圖
2、如果web視圖的holder組件(本例中為MyMonoBehaviour組件)有可能被破壞,您可能還需要在MyMonoBehaviour中添加OnDestroy,并關閉web視圖以防止泄漏:
3、將一個監聽器添加到OnShouldClose事件中,在關閉用戶操作的web view時,Android和iOS將調用該事件。
tip:如果return false , 視圖不會被關閉。OnShouldClose讓我們有機會重寫關閉方法。
4、在不使用時清理緩存
當用戶瀏覽Internet時,它將創建一些緩存,包括緩存的圖像和響應,或者web頁面將一些內容存儲在本地存儲中。雖然在大多數情況下它不會占用內存,但是如果您沒有在這種情況下使用緩存,您可以調用CleanCache清除它們。
?
Messaging System
1、UniWebView通常情況下檢查所有從"uniwebview://"啟動的鏈接。OnMessageReceived事件將會收到UniwebViewMessage object
UniWebView消息傳遞系統還可以幫助您解析輸入
2、添加你自己的scheme
3、也可以設置"http"和"https"作為一個scheme,它將阻止所有web資源的加載并將它們發送給您。這給了一個檢查所有交通的機會。
eg:它的一個用例是您不希望您的用戶離開當前頁面。因此,您可以首先加載您的頁面,然后在OnPageFinished事件中,通過向UniWebView消息系統添加“http(s)”方案來禁用所有導航:
4、消息系統構建在URL和Unity的消息發送器上。這意味著您不能同時發送無限大小的數據。URL的最大允許長度與設備和系統版本不同。但是一個URL的安全長度是~16KB。如果你有什么大的東西從網頁發送到Unity并且遇到一些問題,最好把它們分成小塊。
?
Using JavaScript
1、JavaScript是一個強大的工具,可以交互,甚至可以更改Unity游戲中的web內容。UniWebView完全支持在web頁面中運行JavaScript。您不僅可以在頁面上運行現有的JavaScript代碼,還可以使用JavaScript定義自己的函數并將其添加到web視圖中
2、Add
2、Evaluate
當我在h5中進行了uniwebview? ? (scheme訪問請求?)? ?插件會自動攔截下來然后獲取其中的參數? 例如下圖中的??scheme的值是uniwebview? ? ?Path的值為actionArgs參數? ? ?Args["Key"]的值為value? ??
?Args["anotherKey"]的值為我們可以根據獲取到的參數在unity端進行不同的操作??
現在我想要實現微信登錄內嵌H5游戲? 首先我需要將SDK接好 然后通過授權拿到相應openid和uid??
首先需要一個按鈕? 點擊按鈕會發送一個url請求(可以在index中寫一個url請求的方法? ?然后在ts腳本中調用方法)?
例如?uniwebview://game-over?score=11&life=222? 這個url請求? ? 當發送url請求時? unity端的uniwebview會進行默認監聽uniwebview為前綴的url請求??然后在OnMessageReceived事件中能夠獲取到url中攜帶的參數? ?根據參數我們就可以進行不同的操作,例如微信登錄。
還需要在egret中的index.html中寫一個方法例如receive(uid,openid) 當我部署到服務器上后? ?我在unity端就可以通過加載這個H5的網址? 然后在unity里面通過前面提到的EvaluateJavaScript方法? ? 將receive(uid,openid) ;以字符串的方式傳進去(如果是要進行微信登錄? 那就需要寫一個傳入 openid和uid的方法? ? 在方法中獲取到openid和uid后調用ts腳本中的向后端發送數據的方法向后端獲取賬號密碼? ?拿到賬號密碼后直接進行登錄)?
? ?
如果不想使用任何JavaScript,可以通過uniwebview . setjavastenabled (false)禁用它。在此設置之后創建的所有web視圖都不支持JavaScript,在瀏覽非JavaScript內容時,它將提供更快的速度。
?
注:如有錯誤和不明白之處請及時提出?
查看原文請點擊https://blog.csdn.net/qiaobinXU/article/details/81389468
總結
以上是生活随笔為你收集整理的unity 插件uniwebview 内嵌H5游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: real类型_如何使用REAL方法对您的
- 下一篇: 加快信息化建设对地方发展的_加快设计师职