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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

unity 插件uniwebview 内嵌H5游戏

發(fā)布時(shí)間:2023/12/9 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unity 插件uniwebview 内嵌H5游戏 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

首先需要用到插件 uniWebView3? ?

unity 商店網(wǎng)址

https://assetstore.unity.com/packages/tools/network/uniwebview-3-92605

導(dǎo)入插件之后在文件夾中找到預(yù)制體拖入場(chǎng)景中

基本配置

?

1、Url On Start

在UniWebView的Start() 方法里會(huì)加載url

2、Show On Start

勾選的話會(huì)在Start()方法里主動(dòng)顯示。

未勾選的話需要主動(dòng)調(diào)用Show()方法

3、Full Screan

全屏展示,勾選上的話會(huì)忽略Frame 和 Reference Rect Transform的設(shè)置

4、使用固定大小展示的話 設(shè)置 Frame的值,并且取消勾選Full Scream,以及

Reference Rect Transform 設(shè)置為None

5、Reference Rect Transform

引用一個(gè)Rect Transform并更改web view的大小以遵循該轉(zhuǎn)換。如果您正在使用具有多個(gè)分辨率支持的Unity UI,它是非常有用的。

6、Use Toolbar

勾選后只在ios已經(jīng)mac上有用。包括關(guān)閉,前進(jìn),返回等。可以設(shè)置Toolbar Position 為Top,則在頂端顯示,Bottom 則在底端顯示。android的導(dǎo)航欄就有這些功能,所以不需要這個(gè)。

7、一旦UniWebView被Done按鈕或Back按鈕關(guān)閉,它將在默認(rèn)情況下銷毀組件本身,以便盡快釋放資源。您將無(wú)法重用相同的UniWebView。如果想要顯示另一個(gè)頁(yè)面,則需要?jiǎng)?chuàng)建一個(gè)新的UniWebView。

?

監(jiān)聽(tīng)事件

1、OnPageFinished 當(dāng)url加載完畢后調(diào)用

也可以使用方法作為委托偵聽(tīng)器(delegate Listener)

2、OnShouldClose

OnShouldClose是在web視圖即將關(guān)閉時(shí)發(fā)送給您的事件。用戶可以使用iOS上的“完成”按鈕或Android上的“后退”按鈕。一旦web view關(guān)閉,UniWebView組件也將被銷毀,以保持干凈。如果您在引用中保存web視圖(例如,我們?cè)谶@里通過(guò)webView字段保存web視圖),那么很有可能將其設(shè)置為null。否則,如果你想要加入的話,你以后可能會(huì)遇到麻煩。

tips:

在Android上,“后退”按鈕將引導(dǎo)用戶返回到上一個(gè)頁(yè)面。如果沒(méi)有返回的頁(yè)面,它將發(fā)送OnShouldClose事件,如果返回true,則嘗試關(guān)閉web view。

3、EvaluateJavaScript? 調(diào)用 JavaScript 方法

第一個(gè)參數(shù):JavaScript 的方法

第二個(gè)參數(shù):第二個(gè)參數(shù)是帶有UniWebViewNativeResultPayload的操作。payLoad也用于其他web view的方法回調(diào),其中包含來(lái)自本機(jī)端的基本信息。這里我們只需要檢查下?tīng)顟B(tài)碼,“0”表示一切正常。

4、OnMessageReceived

html里需要有

?

UniWebView In Depth

1、窗口坐標(biāo)設(shè)置

示例:

2、OnOrientationChanged (Event)

當(dāng)屏幕轉(zhuǎn)向的時(shí)候,Frame會(huì)相應(yīng)變化。

3、OnRectTransformDimensionsChange?

使用ReferenceRectTransform 屬性時(shí),當(dāng)屏幕轉(zhuǎn)向時(shí)不需要再手動(dòng)添加OnOrientationChanged 事件。UniWebView已經(jīng)做好了這塊。

除了上述情況,當(dāng)你因?yàn)槠渌蛐枰@個(gè)功能的時(shí)候,可以調(diào)用這個(gè)方法。

?

Transition

1、顯示/隱藏過(guò)渡

通過(guò)修改Show 和 Hide的參數(shù)

fade 淡入淡出效果

edge 出現(xiàn)/消失的方向 eg:UniWebViewTransitionEdge.Bottom 從底部出現(xiàn)

duration 持續(xù)時(shí)間

completionHandler:完成后回調(diào)

tip:這兩個(gè)方法有個(gè)bool返回值,每次只允許進(jìn)行一個(gè)轉(zhuǎn)換,如果您試圖在上一個(gè)轉(zhuǎn)換打開(kāi)時(shí)初始化另一個(gè)轉(zhuǎn)換,那么新的轉(zhuǎn)換將不會(huì)啟動(dòng),返回值將為false。

2、Web View Animation

UniWebView還支持在顯示web視圖時(shí)對(duì)其進(jìn)行動(dòng)畫處理。使用AnimateTo方法,就可以指定一個(gè)幀作為目標(biāo)幀。通過(guò)使用此方法,您還可以設(shè)置動(dòng)畫的持續(xù)時(shí)間和延遲,以便進(jìn)行精細(xì)的控制。

?

Memory Management(內(nèi)存管理)

1、在不需要時(shí)銷毀web視圖

2、如果web視圖的holder組件(本例中為MyMonoBehaviour組件)有可能被破壞,您可能還需要在MyMonoBehaviour中添加OnDestroy,并關(guān)閉web視圖以防止泄漏:

3、將一個(gè)監(jiān)聽(tīng)器添加到OnShouldClose事件中,在關(guān)閉用戶操作的web view時(shí),Android和iOS將調(diào)用該事件。

tip:如果return false , 視圖不會(huì)被關(guān)閉。OnShouldClose讓我們有機(jī)會(huì)重寫關(guān)閉方法。

4、在不使用時(shí)清理緩存

當(dāng)用戶瀏覽Internet時(shí),它將創(chuàng)建一些緩存,包括緩存的圖像和響應(yīng),或者web頁(yè)面將一些內(nèi)容存儲(chǔ)在本地存儲(chǔ)中。雖然在大多數(shù)情況下它不會(huì)占用內(nèi)存,但是如果您沒(méi)有在這種情況下使用緩存,您可以調(diào)用CleanCache清除它們。

?

Messaging System

1、UniWebView通常情況下檢查所有從"uniwebview://"啟動(dòng)的鏈接。OnMessageReceived事件將會(huì)收到UniwebViewMessage object

UniWebView消息傳遞系統(tǒng)還可以幫助您解析輸入

2、添加你自己的scheme

3、也可以設(shè)置"http"和"https"作為一個(gè)scheme,它將阻止所有web資源的加載并將它們發(fā)送給您。這給了一個(gè)檢查所有交通的機(jī)會(huì)。

eg:它的一個(gè)用例是您不希望您的用戶離開(kāi)當(dāng)前頁(yè)面。因此,您可以首先加載您的頁(yè)面,然后在OnPageFinished事件中,通過(guò)向UniWebView消息系統(tǒng)添加“http(s)”方案來(lái)禁用所有導(dǎo)航:

4、消息系統(tǒng)構(gòu)建在URL和Unity的消息發(fā)送器上。這意味著您不能同時(shí)發(fā)送無(wú)限大小的數(shù)據(jù)。URL的最大允許長(zhǎng)度與設(shè)備和系統(tǒng)版本不同。但是一個(gè)URL的安全長(zhǎng)度是~16KB。如果你有什么大的東西從網(wǎng)頁(yè)發(fā)送到Unity并且遇到一些問(wèn)題,最好把它們分成小塊。

?

Using JavaScript

1、JavaScript是一個(gè)強(qiáng)大的工具,可以交互,甚至可以更改Unity游戲中的web內(nèi)容。UniWebView完全支持在web頁(yè)面中運(yùn)行JavaScript。您不僅可以在頁(yè)面上運(yùn)行現(xiàn)有的JavaScript代碼,還可以使用JavaScript定義自己的函數(shù)并將其添加到web視圖中

2、Add

2、Evaluate

當(dāng)我在h5中進(jìn)行了uniwebview? ? (scheme訪問(wèn)請(qǐng)求?)? ?插件會(huì)自動(dòng)攔截下來(lái)然后獲取其中的參數(shù)? 例如下圖中的??scheme的值是uniwebview? ? ?Path的值為actionArgs參數(shù)? ? ?Args["Key"]的值為value? ??

?Args["anotherKey"]的值為我們可以根據(jù)獲取到的參數(shù)在unity端進(jìn)行不同的操作??

現(xiàn)在我想要實(shí)現(xiàn)微信登錄內(nèi)嵌H5游戲? 首先我需要將SDK接好 然后通過(guò)授權(quán)拿到相應(yīng)openid和uid??

首先需要一個(gè)按鈕? 點(diǎn)擊按鈕會(huì)發(fā)送一個(gè)url請(qǐng)求(可以在index中寫一個(gè)url請(qǐng)求的方法? ?然后在ts腳本中調(diào)用方法)?

例如?uniwebview://game-over?score=11&life=222? 這個(gè)url請(qǐng)求? ? 當(dāng)發(fā)送url請(qǐng)求時(shí)? unity端的uniwebview會(huì)進(jìn)行默認(rèn)監(jiān)聽(tīng)uniwebview為前綴的url請(qǐng)求??然后在OnMessageReceived事件中能夠獲取到url中攜帶的參數(shù)? ?根據(jù)參數(shù)我們就可以進(jìn)行不同的操作,例如微信登錄。

還需要在egret中的index.html中寫一個(gè)方法例如receive(uid,openid) 當(dāng)我部署到服務(wù)器上后? ?我在unity端就可以通過(guò)加載這個(gè)H5的網(wǎng)址? 然后在unity里面通過(guò)前面提到的EvaluateJavaScript方法? ? 將receive(uid,openid) ;以字符串的方式傳進(jìn)去(如果是要進(jìn)行微信登錄? 那就需要寫一個(gè)傳入 openid和uid的方法? ? 在方法中獲取到openid和uid后調(diào)用ts腳本中的向后端發(fā)送數(shù)據(jù)的方法向后端獲取賬號(hào)密碼? ?拿到賬號(hào)密碼后直接進(jìn)行登錄)?

? ?

如果不想使用任何JavaScript,可以通過(guò)uniwebview . setjavastenabled (false)禁用它。在此設(shè)置之后創(chuàng)建的所有web視圖都不支持JavaScript,在瀏覽非JavaScript內(nèi)容時(shí),它將提供更快的速度。

?

注:如有錯(cuò)誤和不明白之處請(qǐng)及時(shí)提出?

查看原文請(qǐng)點(diǎn)擊https://blog.csdn.net/qiaobinXU/article/details/81389468

總結(jié)

以上是生活随笔為你收集整理的unity 插件uniwebview 内嵌H5游戏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。