亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Unity與Ionic混合集成指南:消息鏈路與Vuforia AR實踐

Unity與Ionic混合集成指南:消息鏈路與Vuforia AR實踐 簡介面向Unity與Ionic混合開發(fā)者的集成指南聚焦如何將Unity 3D內容嵌入Ionic應用并實現(xiàn)雙向消息通信覆蓋Android與iOS平臺且已通過Vuforia插件實測驗證。資源適用于需要AR能力、Cordova插件擴展或原生橋接的中級開發(fā)者包含Objective-C、Java、C#等平臺橋接代碼。壓縮包共21個文件容量僅424KB主要包含png截圖、mm/java/h原生橋接源碼、plugin.xml配置、xcconfig構建設置、JSON與JS腳本以及IonicComms.cs等通信封裝結構清晰便于對照集成。已有228人學習瀏覽適合正在處理Unity與Ionic跨平臺通信、Vuforia集成或Cordova插件接入問題的開發(fā)者參考。除可直接復用的橋接代碼外資源還提供了AppDelegate及IonicComms的完整實現(xiàn)思路幫助讀者理解Android/iOS雙向消息流與配置要點。1. 從 Unity 到 Ionic為什么這套集成指南把消息鏈路放在第一位把 Unity 3D 畫面嵌進 Ionic 殼這件事最反直覺的結論是難點不在「把 Unity 畫面顯示出來」而在「顯示出來之后兩個運行時之間怎么傳消息」。你拿到這套指南跟著把 Android 側的 UnityPlayer 和 iOS 側的 UnityFramework 掛上畫面很快能出但一到 Vuforia 識別結果要回傳 Ionic 頁面、Ionic 頁面要控制 Unity 切換場景的時候生命周期、線程、轉義這些問題就會挨個暴露。這套資料的價值在于它把「Unity → 原生 → WebView → JS」這條消息鏈路的每一段都驗證過并且跑過 Vuforia 插件真機測試。適合做 Unity AR / 3D 展示但殼必須用 Ionic 的團隊也適合想知道混合應用里原生渲染層到底怎么協(xié)作的開發(fā)者。2. Cordova 插件層選型三種集成方式與 Unity 導出產物選擇先講為什么非要用插件層。做 Unity 和 Ionic 集成網(wǎng)上能搜到的方案有三大類把 Unity 導出成 WebGL 塞進 iframe 或 WebView 里Unity 作為獨立原生 ActivityIonic 跳轉過去再跳回來用 Cordova 插件把 Unity 原生視圖嵌進當前頁面。第一個方案性能差強人意但 AR 幾乎不可用Vuforia 需要直接操作相機和傳感器瀏覽器環(huán)境拿不到穩(wěn)定的相機權限流第二個方案能跑 AR但頁面切換黑屏、狀態(tài)丟失而且 Ionic 側拿不到 Unity 內部狀態(tài)消息只能靠 URL Scheme 硬傳。第三個方案把 Unity 當作原生層的一個模塊由 Cordova 插件統(tǒng)一管理生命周期和消息路由是最穩(wěn)妥的折中。2.1 三種集成思路從 iframe 跳到原生視圖的演進先看結論如果只是展示一段 3D 商品模型、不涉及 AR、不要求消息實時性WebGL 導出加 iframe 真的夠用。一旦涉及 Vuforia 這類依賴原生相機、傳感器時序的 SDKWebGL 這條路基本是死的Unity 對 WebGL 平臺本身就不開放原生權限管線。獨立 Activity 方案的問題在 Android 側尤其明顯UnityPlayerActivity 一啟動Ionic 頁面進入 Paused 狀態(tài)WebView 里的 JS 定時器全部掛起等 Unity 場景結束返回Ionic 側要重新初始化而 Unity 的渲染上下文也被銷毀第二次進入等于冷啟動。這個方案的啟動耗時和內存峰值都不可控。插件方案的關鍵差異在于Unity 視圖不擁有 Activity而是像一個子視圖一樣掛到當前 Activity 的 ViewGroup 上。這樣 Ionic 和 WebView 全程存活Unity 只是「渲染層」消息能走內存通道而不是 URL。代價是生命周期必須自己接管返回鍵、onPause、onResume、onDestroy 全要重新分發(fā)到 UnityPlayer漏掉任何一個環(huán)節(jié)最常見的翻車就是 App 退到后臺再回來Unity 畫面整個黑掉。三種方案對比如下集成方式畫面掛載方式AR 支持消息通道主要限制WebGL iframeWebView 內渲染弱JS 直通性能差Vuforia 相機權限難拿原生 Activity 跳轉整頁覆蓋強URL / Intent頁面重建、狀態(tài)丟失Cordova 插件掛載子視圖嵌入強內存直調生命周期和分發(fā)要自己接管2.2 Unity 導出產物Android 的 unityLibrary 與 iOS 的 UnityFramework我一般會把 Unity 工程分別導出兩份產物不直接出安裝包。Android 在 Build Settings 里勾選 Export Project導出的是一個完整的 Gradle 工程我們只取其中的 unityLibrary 模塊。iOS 則需要先以 Framework 方式構建生成 UnityFramework.framework 和初始化所需的頭文件。導出前的 Player Settings 是很多人忽略的一步打包方式、架構、包名全在這里定死后面再改要重新導出。Build Settings Player Settings - Package Name: 填與 Cordova 插件 applicationId 一致的包名 - Scripting Backend: IL2CPP - Target Architectures: ARM64 - Strip Engine Code: 保持默認 - Export Project: 勾選導出后你會看到 unityLibrary 和 launcher 兩個模塊launcher 是 Unity 自帶的啟動殼直接忽略。unityLibrary 里已經帶了 AndroidManifest.xml、libs 下的 classes.jar、src/main 下的 UnityPlayerActivity 繼承鏈以及 jniLibs 里的各架構 .so。這些東西會整體挪進 Cordova 插件的 android 目錄由插件自己的 build.gradle 接管。iOS 端稍麻煩一點。Unity 導出 Xcode 工程后產物不是單個 framework 文件而是一堆源碼和依賴。常見做法是把整個 Unity 導出工程作為子工程拖進插件 ios 目錄然后在 Cordova iOS 工程的 Build Settings 里配置 UnityFramework 的頭文件搜索路徑和 Link 依賴。如果 Unity 版本較新可以直接用 UnityFramework.framework 的二進制產物配合 Unity 官方提供的集成頭文件使用。這一層選型直接影響后續(xù)編譯時長和 Xcode 兼容性我通常優(yōu)先選 framework 方式因為把源碼工程拖進 Cordova 插件Xcode 版本一換就是一場災難。2.3 Cordova 插件的分層從 JS 橋到原生實現(xiàn)再到 Unity 回調Cordova 插件的目錄結構建議直接按四層拆消息鏈路會被這個分層固定下來后面調試定位問題會高效很多UnityBridge/ ├── plugin.xml ├── www/ │ └── UnityBridge.js ├── src/ │ ├── android/ │ │ ├── UnityBridge.java │ │ └── unityLibrary/ # Unity 導出產物 │ └── ios/ │ ├── UnityBridge.mm │ └── UnityFramework/ # Unity 導出產物或 frameworkplugin.xml 負責把 JS 橋暴露給 Cordova 運行時、聲明相機權限、指定原生實現(xiàn)類以及把 unityLibrary 加進編譯。Android 側要寫這段配置platform nameandroid config-file targetAndroidManifest.xml parent/manifest uses-permission android:nameandroid.permission.CAMERA / uses-permission android:nameandroid.permission.INTERNET / /config-file source-file srcsrc/android/UnityBridge.java target-dirsrc/com/ionicbridge/unity / /platformCordova 7 之后插件源碼默認編譯進 app 模塊unityLibrary 的 Gradle 模塊能不能被 Cordova 自動識別是第一個坑。解決方式一般是在插件 build.gradle 里顯式聲明 flatDir 倉庫把 unityLibrary/libs 下的 classes.jar 包進來再把 .so 文件在 jniLibs 里重新指向。如果這一步不做編譯能過但運行時會給你一個 NoClassDefFoundError而且這個錯只在真機上出現(xiàn)Android Studio 預覽不會暴露。JS 橋只做兩件事暴露給 Ionic 頁面一個 sendMessage 方法以及注冊一個從原生層推送消息進來的回調。所有 Android/iOS 差異被封裝在原生層Ionic 側看不到平臺分支var exec require(cordova/exec); exports.showUnity function (success, error) { exec(success, error, UnityBridge, showUnity, []); }; exports.sendToUnity function (message, success, error) { exec(success, error, UnityBridge, sendMessage, [message]); }; exports.onUnityMessage function (callback) { window.unityMessageCallback callback; };onUnityMessage 里把回調掛到 window 上是為了讓原生層在任意線程拿到 webView 實例時可以直接執(zhí)行一段 javascript 來觸發(fā)回調繞開 Cordova exec 的回傳鏈路。這套設計的實際收益是Unity 側發(fā)消息的頻率通常很高如果每幀都走 Cordova 的 callbackContext 排隊延遲和丟消息會一起出現(xiàn)。提示插件文件別一次全堆進一個目錄。按 www、src/android、src/ios 分開放后面出問題用 Xcode 或 Android Studio 單獨打開插件源碼調試會快很多。Vuforia 初始化時如果相機權限沒給Unity 側會直接卡在黑色相機預覽而且不拋任何異常這是我拆這份指南前印象最深的坑。3. Android 端集成UnityPlayer 掛載、Gradle 依賴與生命周期接管Android 端比 iOS 良心的地方在于Unity 官方給了 UnityPlayer 這個公開類可以直接 new 出來掛到任意 ViewGroup 上。但「可以直接 new」背后的坑是UnityPlayer 的構造函數(shù)會讀 Activity 的 intent、初始化顯示和音頻必須在 Activity resumed 之后創(chuàng)建。Cordova 的插件初始化時機比 Activity onCreate 晚不了多少但你很難保證 Unity 底層的 Surface 已經就緒。翻車案例我見過不少直接在 pluginInitialize 里 new UnityPlayer結果一半機器黑屏、一半機器直接 crash堆棧指向 libunity.so 里的 EGL 初始化。3.1 plugin.xml 與 build.gradle 的雙重配置先把配置層寫清楚。插件里除了 plugin.xml還必須給 Android 模塊單獨準備 build.gradle否則 unityLibrary 引不進來。重點有三個flatDir 倉庫、abiFilters、編譯參數(shù)。abiFilters 尤其關鍵Unity 導出的 .so 會帶一波一二十兆的庫如果 Cordova 工程本身默認打所有 ABI你的 APK 體積會直接爆炸還會在低端機上報 so 加載沖突。repositories { flatDir { dirs unityLibrary/libs } } android { defaultConfig { ndk { abiFilters arm64-v8a } } } dependencies { implementation project(:unityLibrary) }abiFilters 只保留 arm64-v8a 的前提是團隊確認目標機型都是 64 位系統(tǒng)。2023 年后應用市場已經強制要求 64 位支持但國內分發(fā)渠道還有不少 32 位存量設備如果 OEM 定制 ROM 的 WebView 是 32 位進程你只留 arm64 會導致 Cordova 的 WebView 都能跑、Unity 卻加載不了 so。這個取舍要根據(jù)渠道來先確認再動手不要照抄一套配置跑所有包。plugin.xml 里的 source-file 只解決 Java 文件拷入不解決 Gradle 模塊依賴。unityLibrary 整個目錄要手動復制進插件工程然后在 settings.gradle 的 include 順序里把它排在 Cordova 自帶 app 模塊之前否則 Gradle 找不到模塊報錯信息是「Project with path :unityLibrary could not be found」跟依賴本身沒關系純粹是 include 漏了。3.2 UnityPlayer 的創(chuàng)建時機與視圖掛載具體到代碼我推薦的做法是不在 pluginInitialize 里創(chuàng)建而是在 Ionic 頁面準備好、JS 顯式調用 showUnity 時再懶創(chuàng)建。這樣做有兩個直接好處一是避免 App 啟動即拉起 Unity 導致冷啟動時間被拖長二是保證 Activity 已經處于 resumed 狀態(tài)EGL 初始化成功率會高很多。對需要預加載的場景第 6 章會單獨給方案這里先把懶加載跑通。public class UnityBridge extends CordovaPlugin { private UnityPlayer unityPlayer; private FrameLayout unityContainer; Override public boolean execute(String action, JSONArray args, CallbackContext cb) { if (showUnity.equalsIgnoreCase(action)) { cordova.getActivity().runOnUiThread(() - showUnity()); return true; } if (sendMessage.equalsIgnoreCase(action)) { String msg args.optString(0); if (unityPlayer ! null) { unityPlayer.UnitySendMessage(NativeBridge, OnMessageFromJS, msg); cb.success(); } else { cb.error(unity not ready); } return true; } return false; } private void showUnity() { if (unityPlayer ! null) return; Activity activity cordova.getActivity(); unityPlayer new UnityPlayer(activity); unityContainer new FrameLayout(activity); FrameLayout.LayoutParams params new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT); unityContainer.addView(unityPlayer, params); ((ViewGroup) webView.getParent()).addView(unityContainer, 0); } }這段 Java 有幾個點值得說明。showUnity 里先判斷 unityPlayer 是否為空避免重復創(chuàng)建UnityPlayer 是重量級對象重復 new 兩次會導致原生崩潰因為底層 GL 上下文和渲染線程沒有清理干凈。addView 到 webView.getParent() 時插到第 0 位是為了把 Unity 視圖放在 WebView 底下這樣如果需要顯示 HTML 覆蓋層WebView 仍然在頂部反過來如果 Unity 要蓋住全部頁面就把 unityContainer 的 index 改成最后一位。JS 的 showUnity 調用要帶上 Cordova 的 ready 回調不要在 deviceready 事件之前調。常見做法是在 Ionic 的某個頁面生命周期里先 await deviceReady再 exec 原生方法這樣時間線上不會撞上 WebView 還在加載的窗口期。如果 App 啟動后秒進 Unity 頁面這條時序尤其敏感Ionic 的 ionViewDidEnter 才是安全點ionViewDidLoad 都偏早。3.3 生命周期分發(fā)返回鍵、onPause、onResume 與 onDestroy生命周期這塊是 Android 端最容易漏的部分。UnityPlayer 不是普通 View它內部持有獨立的渲染線程和 GL 上下文。Activity 的 onPause 沒有轉發(fā)給 UnityPlayer 時Unity 的時序直接和系統(tǒng)消息隊列錯位Unity 認為還在前臺繼續(xù)渲染但 Surface 已經被系統(tǒng)回收畫面停留在最后一幀觸摸還能收到但點擊失效反過來 onResume 漏了Unity 不會重新請求渲染畫面永久黑屏。所以插件要覆寫 CordovaPlugin 對應的生命周期回調。Override public void onPause(boolean multitasking) { if (unityPlayer ! null) unityPlayer.pause(); super.onPause(multitasking); } Override public void onResume(boolean multitasking) { super.onResume(multitasking); if (unityPlayer ! null) unityPlayer.resume(); } Override public void onDestroy() { if (unityPlayer ! null) { unityPlayer.quit(); unityPlayer null; } super.onDestroy(); }onDestroy 里的 unityPlayer.quit() 必須做。不做的話 Unity 的 native 線程會懸掛在后臺線程里Activity 銷毀后 JVM 里殘留一堆 RenderThread下次創(chuàng)建 UnityPlayer 時這些線程會和新實例搶 GL 上下文輕則卡頓重則閃退。我一般還會在 quit 后把 ViewGroup 里的 Unity 視圖 removeAllViews確保 WebView 回到頂層時不會出現(xiàn)透明黑塊殘影。返回鍵也是重災區(qū)。默認情況下返回鍵直接讓 Activity finishUnityPlayer 跟著銷毀Ionic 頁面也回不去了。實際項目中常見做法是在 Unity 顯示期間攔截返回鍵先通知 Unity 清理場景并隱藏視圖不直接 finish Activity在 WebView 顯示期間才讓返回鍵執(zhí)行頁面返回。插件里通過 overrideUrlLoading 或 WebView 的硬件返回鍵監(jiān)聽都能做到但這個容易被測試漏掉等上線后用戶按了返回鍵整個 App 沒了才意識到分發(fā)沒做。4. iOS 端集成UnityFramework 橋接、Objective-C 轉發(fā)與雙向消息閉環(huán)iOS 端和 Android 最大的區(qū)別是沒有像 UnityPlayer 這樣可以直接 new 的公開類。Unity 在 iOS 上是一個完整的 app 生命周期UnityAppController 負責接管 UIApplicationDelegate。要把 Unity 嵌進 Ionic本質上是在 Cordova 的 WKWebView 之外再掛一個 UnityAppController 的 rootViewController.view。整個過程依賴一個關鍵文件UnityAppController.h它在 Unity 導出工程里里面定義了你需要 hook 的方法。4.1 UnityFramework 初始化與視圖掛載順序如果你采用新版 UnityFramework.framework 方式初始化流程大致是獲取單例、設置 dataBundleId、調用 runUIApplicationMain 完成啟動、再把 appController 的 rootView 掛到當前 window。這里有一個玄學點必須在 UIApplication 事件循環(huán)已經穩(wěn)定之后再跑 runUIApplicationMain否則 Unity 的 main run loop 和 WKWebView 的 run loop 會互相干擾表現(xiàn)為首次旋轉屏幕就崩潰而且只在真機上復現(xiàn)模擬器很難觸發(fā)。#import UnityFramework/UnityFramework.h #import UnityAppController.h implementation UnityBridge (void)launchUnityOnView:(UIView *)superview { static UnityFramework *unityFramework nil; static dispatch_once_t onceToken; dispatch_once(onceToken, ^{ unityFramework [UnityFramework getInstance]; [unityFramework setDataBundleId:com.example.unitybridge]; [unityFramework runUIApplicationMainWithArgc:0 argv:NULL]; UIView *unityView [unityFramework appController].rootView; unityView.frame superview.bounds; unityView.autoresizingMask UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [superview insertSubview:unityView atIndex:0]; }); } end注意 runUIApplicationMainWithArgc 傳 0 和 NULL是因為 Unity 不在這條路徑上接收 app 級參數(shù)如果你傳了 UIApplicationMain 需要的 argc/argv會和 Cordova 自己的生命周期入口沖突輕則啟動卡死重則編譯期符號沖突。dataBundleId 要和 Unity 導出工程里的 Bundle Identifier 保持一致不一致時 Unity 的初始化回調不會觸發(fā)視圖掛上去是一個白板。掛載時用 insertSubview:atIndex:0 而不是 addSubview這樣 WKWebView 保持在最上層JS 層可以覆蓋 UIUnity 相機畫面不會擋住 Ionic 的加載動畫。4.2 Objective-C 橋C 函數(shù)導出與消息轉發(fā)到 WKWebViewiOS 上 Unity 發(fā)消息給外部不能直接到 JS必須經過一個 C 函數(shù)中轉。Unity 官方對外的 C 接口是 UnitySendMessage從原生到 Unity反過來 Unity 調原生需要你注冊 C 函數(shù)并在 Unity 側用 DllImport 聲明。Cordova 插件是 Objective-C 文件寫 extern C 是標準做法不用擔心 C 名字修飾吃掉函數(shù)符號。Unity 側發(fā)給 iOS# if UNITY_IOS [DllImport(__Internal)] private static extern void UnityToIonicMessage(string message); #endif public static void SendToIonic(string message) { #if UNITY_IOS UnityToIonicMessage(message); #endif }C# 側通過 DllImport 拿到這個 C 入口傳參時 Unity 會自動把字符串轉成 char*。Objective-C 側接收后必須在主線程轉發(fā)因為 Unity 的 C# 調用可能來自渲染線程直接操作 WKWebView 會 crash。這個 crash 的堆棧永遠指向 WebKit 內部的 evaluateJavaScript很容易讓人誤以為是 WebView 的問題實際是線程錯了。extern C void UnityToIonicMessage(const char *message) { NSString *msg [NSString stringWithUTF8String:message]; dispatch_async(dispatch_get_main_queue(), ^{ [[UnityBridge shared] forwardToWebView:msg]; }); } - (void)forwardToWebView:(NSString *)msg { NSString *escaped [self escapeJavaScriptString:msg]; NSString *js [NSString stringWithFormat: window.unityMessageCallback window.unityMessageCallback(%);, escaped]; [self.webView evaluateJavaScript:js completionHandler:nil]; }forwardToWebView 里的 escapeJavaScriptString 必須處理單引號、雙引號和反斜杠否則 Unity 的 JSON 字符串一到 JS 側就被截斷。這個坑在 Android 端也有但 Android 用 loadUrl(javascript:...) 時轉義錯誤只會靜默失效iOS 的 evaluateJavaScript 會直接報 JS 語法錯誤定位反而容易一些。如果你傳的是帶換行的日志文本不轉義的話 JS 引擎直接拋錯回調永遠不觸發(fā)。從 JS 到 Unity 的通道在 iOS 上沒有 UnityPlayer.UnitySendMessage 可用需要走 UnityFramework 的 sendMessageToGOWithName- (void)sendToUnity:(NSString *)message { UnityFramework *uf [UnityFramework getInstance]; [uf sendMessageToGOWithName:NativeBridge functionName:OnMessageFromJS message:message]; }C# 側對應 GameObject 上掛的腳本要有一個公開方法接收字符串。UnityFramework getInstance 拿到的是同一個單例所以 sendMessageToGOWithName 必須等 Unity 啟動完成后再調這個時序問題和 Android 側 UnityPlayer 未創(chuàng)建就發(fā)消息是同一個坑只是表現(xiàn)更隱蔽不發(fā)任何錯誤日志消息直接丟進黑洞。4.3 雙端消息鏈路的差異為什么 iOS 的消息時序比 Android 更難觀測Android 端 UnitySendMessage 是即時調用Unity 的 C# 側在同一執(zhí)行棧同步收到iOS 端 sendMessageToGOWithName 最終會 post 到 Unity 主線程調用是異步的。所以 iOS 上 JS 連續(xù)發(fā)兩條消息時Unity 收到的順序可能與發(fā)送順序不完全一致尤其在消息量大、跨線程調度忙的時候。我的用法是Unity 側不做順序假設統(tǒng)一用一個隊列消費消息參考第 6 章的做法不要指望兩條消息之間有任何 happens-before 關系。Android 端 Unity 調原生 Java 的路徑也有差異Unity 調 AndroidJavaObject 時是在 Unity 渲染線程執(zhí)行Java 方法里如果直接操作 View 必須 runOnUiThread否則系統(tǒng)不會崩但視圖不會刷新——典型的「日志全對、UI 不動」。iOS 端因為 dispatch_async(dispatch_get_main_queue()) 強制回主線程反而少踩這個坑。雙端對比下來Android 的黑匣子在 EGL 初始化iOS 的黑匣子在 run loop 時序。5. 避坑清單Vuforia 相機、黑屏、消息丟包與手勢沖突這章直接列五條我在拆這套集成方案時踩過的坑全部按「現(xiàn)象 → 原因 → 解決」的順序寫。前兩條是關于畫面能不能出來后三條是關于畫面出來之后消息和交互能不能正常工作。5.1 Unity 黑屏但不崩潰EGL 初始化時序與 Surface 未就緒現(xiàn)象Unity 視圖掛在頁面上Activity 不崩潰Logcat 里沒有任何異常但畫面是黑的。用 adb shell dumpsys SurfaceFlinger 能看到 Surface 存在但內容一直是全黑。原因UnityPlayer 的構造函數(shù)在 Activity 還沒完全 resumed 時就執(zhí)行了。Unity 底層嘗試創(chuàng)建 EGLSurface 時拿到的 Display 和 Window 都處于不可用狀態(tài)Unity 選擇靜默等待而不是拋異常于是渲染線程空轉畫面出不來。這個問題在 Android 10 以上的設備尤其明顯因為系統(tǒng)對 Surface 的有效期校驗更嚴格。解決把 UnityPlayer 的創(chuàng)建時機從 pluginInitialize 移到首次調用 showUnity 時并且在 cordova.getActivity() 的 onResume 完成之后再執(zhí)行。我一般在 showUnity 里加一個 handler.postDelayed 延遲 100 到 200 毫秒給 Activity 的 decorView 一輪布局時間黑屏概率能降到接近零。5.2 觸摸全部被 WebView 吃掉Unity 區(qū)域的點擊無效現(xiàn)象Unity 畫面顯示正常但點擊 Unity 里的按鈕沒有任何反應觸摸事件全部落在頁面底層的 WebView 上Unity 場景收不到任何輸入。原因Cordova 的 WebView 默認攔截所有觸摸事件UnityPlayer 作為一個后加入的兄弟視圖在 touch 事件分發(fā)鏈上排在 WebView 后面根本拿不到事件。很多人以為加一個 onTouchListener 就能解決實際上 WebView 的 touch 事件在父容器層面就被消費了。解決在 Unity 視圖顯示期間臨時讓 WebView 不再接收觸摸事件。常見做法是給 WebView 加一個透明的 preventTouch 覆蓋層或者在原生層重寫 dispatchTouchEvent當 Unity 視圖可見且手指落在 Unity 區(qū)域時事件直接分發(fā)給 UnityPlayer不經過 WebView。手勢沖突的邊界條件是Unity 視圖是矩形但 Vuforia 識別區(qū)域經常是半透明的HTML 覆蓋層如果也要響應點擊就得在 JS 側做命中測試原生層只把事件分發(fā)給最上層的視圖。5.3 消息發(fā)了但 Unity 沒反應GameObject 和腳本方法名不匹配現(xiàn)象JS 調用 sendToUnity 返回 successC# 側沒有任何日志輸出Unity 場景沒有任何變化。原因UnitySendMessage 的底層實現(xiàn)是反射查找。如果 GameObject 名稱不存在或者腳本掛載的 GameObject 上找不到對應的公開方法Unity 會靜默失敗只在 Editor 日志里打一條 warning真機 Release 包連 warning 都沒有。最常見的是把方法名大小寫寫錯或者把腳本掛在了子 GameObject 上但消息發(fā)給了父節(jié)點。解決在 Unity 側建一個名為 NativeBridge 的空 GameObject把所有外部消息入口集中在一個腳本里腳本方法名寫死并保持 public。我還會在 Start() 里 Debug.Log 一條「Bridge Ready」真機連上 adb logcat 掃這條日志就能確認 Unity 側監(jiān)聽已就位。排查順序是先確認 GameObject 名稱再確認方法名最后確認腳本是 active 狀態(tài)。5.4 Vuforia 相機畫面黑底或權限彈窗延遲現(xiàn)象Vuforia 初始化的 AR 場景里目標物識別正常但背景畫面是黑的或者相機權限彈窗在 Unity 啟動后五秒才出現(xiàn)。原因Vuforia 需要在引擎啟動時拿到相機權限但 Android 運行時權限回調沒有同步給 UnityVuforia 等待授權超時后退出相機初始化只剩識別邏輯在跑。權限彈窗延遲的原因更直接插件在 plugin.xml 里聲明了權限但 Ionic 頁面調用 showUnity 時沒有先申請運行時權限系統(tǒng)彈窗被 WebView 的焦點搶走延遲到用戶觸摸屏幕才觸發(fā)。解決在 showUnity 之前用 Ionic Native 的 CameraPreview 或 capacitor/dialogs 先申請 CAMERA 權限拿到授予結果后再 exec 原生 showUnity。iOS 側對應的是 NSCameraUsageDescriptionInfo.plist 里必須有這個鍵否則應用直接閃退。還有一個細節(jié)Vuforia 識別畫面如果帶透明通道Unity 相機的 Clear Flags 要設成 Solid Color 且 Alpha 為 0否則 WebView 背景會從黑塊變成灰塊。5.5 消息頻率一高就丟回調阻塞在 WebView 的 JS 執(zhí)行隊列現(xiàn)象低頻消息一切正常Unity 每秒鐘發(fā)超過 20 條消息時JS 側接收到的數(shù)量明顯少于發(fā)送數(shù)量控制臺沒有報錯。原因原生層通過 loadUrl 或 evaluateJavaScript 執(zhí)行 JS 回調時WKWebView 不是多線程安全的頻繁調用會讓 WebView 的 JS 執(zhí)行隊列持續(xù)堆積。當執(zhí)行隊列滿的時候新的 evaluateJavaScript 會被系統(tǒng)丟棄而且沒有任何回調通知你丟了。Cordova 的 exec 通道也有類似問題高頻率回調必須走自定義事件機制而不是 exec。解決Unity 側不要每幀都發(fā)消息把需要上報的數(shù)據(jù)收集到一個隊列按 100 或 200 毫秒的間隔批量發(fā)。JS 側用 Array 臨時緩存 incoming 消息統(tǒng)一在一個 setInterval 里消費避免每一條消息都觸發(fā) Angular 的變更檢測。實際測試下來把頻率降到每秒 10 次以內丟包率從 15% 降到 0。6. 進階以幀對齊的消息協(xié)議與 Unity 預加載策略把雙端鏈路跑通之后下一步要解決的是「消息亂序」和「首屏速度」兩個體驗問題。先說消息協(xié)議我在 Unity 側不會直接在收到消息的方法里處理業(yè)務邏輯而是維護一個線程安全的隊列統(tǒng)一在 Update 里消費。原因前面提過iOS 端 sendMessageToGOWithName 是異步投遞多條消息的分派順序不保證Android 端雖然是同步調用但調用方可能來自不同線程。所有入口消息先進隊列在 Unity 主線程的 Update 里按幀處理可以保證同一幀內狀態(tài)一致不會出現(xiàn)「上一條還在執(zhí)行、下一條已經把場景切換了」的競爭。public class NativeBridge : MonoBehaviour { private readonly Queuestring pending new Queuestring(); private readonly object gate new object(); public void OnMessageFromJS(string message) { lock (gate) { pending.Enqueue(message); } } void Update() { lock (gate) { while (pending.Count 0) { ProcessMessage(pending.Dequeue()); } } } private void ProcessMessage(string msg) { // 在這里做 JSON 解析和業(yè)務分發(fā) } }這個隊列的另一個好處是Unity 側向原生層上報數(shù)據(jù)時也可以用同樣的思路在 Update 里把狀態(tài)寫入一個 StringBuilder定時 flush 給 iOS / Android 橋避免高頻回調撐爆 WebView 執(zhí)行隊列。消息協(xié)議層我一般再加一個兩字節(jié)的序號前綴JS 側收到后能補上亂序造成的時序缺口。再說預加載策略App 啟動后如果用戶大概率會進 Unity 頁面可以在 Ionic 的 app 初始化階段后臺創(chuàng)建一個 UnityPlayer但不掛載到 ViewGroup。這樣等用戶真實進入 AR 頁面時Unity 已經完成 EGL 初始化和場景加載showUnity 只是做一個 addView首屏時間可以縮短 60% 以上。代價是 Unity 的渲染線程會在后臺常駐內存占用至少增加 150 到 250 兆具體取決于場景資源大小。低端機建議做「預加載待命」到「真正掛載」之間加一個二段式超時超過五秒仍未進入 Unity 頁面就銷毀避免用戶全程沒碰 AR 卻白白占用內存。最后補一個驗證技巧在 Unity 側放一個每秒上報一次當前幀率的心跳消息JS 側用這個心跳來持續(xù)確認整條鏈路是活的。一旦心跳斷了重點關注三個方向原生層線程是否切錯、WebView 是否處于前臺、Unity 進程是否被系統(tǒng)回收。這套心跳邏輯不復雜但排查消息問題時能省掉一半猜謎時間。從那以后我每次做混合渲染的項目都會強制先跑通心跳驗證再往上疊業(yè)務功能雙端導出的產物也會第一時間核對包名和 Bundle Identifier 是否一致省得后面整體推倒重來。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产成人无码高清| 国产精品一二三区福利| 国语精品对白| 天天天堂影视日韩亚洲91| 五月色网| 黄页视频网站野外| 久久性生大片免费观看性| 日本大香蕉| 嗯嗯嗯啊啊啊在线免费观看| 再深点灬舒服灬太大了好硬好爽| PMv在线观看| 葡萄牙性视频一二区 | 少妇淫妇久久久久久久| 91路www| 人妻精品4K4K4K4K4| 五月丁香婷婷啪啪| 欧美少妇第一页| 婷婷激情五月| 亚洲女毛多水多21P| 欧美黄色手机在线观看| 夜夜躁狠狠躁日日躁av| 蜜臀99久久国产| 97综合久第一页| 日韩少妇无吗| 另类 综合 日韩 欧美 亚洲| 欧美成不卡网| 美女黄页| 91新在线欧美| 干B| 99xav| 久久色激情一区二区三区| 日日夜夜狠狠| 婷婷丁香久久| 人人爽天天爽| 色色色色色色色色综合| 涩涩久久精品| 精品人妻一区二区三区蜜桃视频| 91成人亚洲色图| 日本国产二线女色| 熟女少妇一区二区三区| 亚洲欧美综合| 综合激情二| 91精品微拍福利| 国产精品久久久久久高清无码免费看| 亚洲天堂五月天国产| 欧美精品成人一区二区在线观看 | 狠狠操狠狠爱| 中文字幕乱碼在线| 色欲色香天天天综合网www-亚洲综合国| 97超碰在线资源网站| 激情视频一二三| 91nbbbbbb| 大逼色网站| 天天噜| 人人看黄色视频| 天天做天天爱夜夜爽毛片试看| 日本国产亚洲一区在线观看| 国产精品嫩草久久久久| 五月丁香| 成人日韩中文字幕| 欧美中字不卡| 国产精品久久天天干| 一区二区三区成人高清视频| 骚逼高潮久久精品| 欧美色图私拍91| 91在线/欧洲| 久草色在线观看| 性色AV网站| 国内亚洲精彩视频在线| 国模精品一区二区三区苹果色戒| 五月天久久婷婷亚洲| 超碰97人妻自拍| 高清孕妇孕交 交| 国产91 丝袜在线播放| 欧美成va视频网站| 青草青青久久久久久国产| 亚洲精品成人| 性做久久久久久免费观看软件| 91亚洲精品青草| 91 亚洲 欧洲| 天天操天天舔| 天天色悠悠激情| 美女毛片999| 久操视频在线| 日本性交操一区二区不卡系列| 久久精视频美日韩在线视频| 色91综合网| 日韩射图| 蜜桃视频成a人v在线| 色99在线| 中文字幕午夜精品久久久| 人妻色偷色噜| 日韩情色视频| 亚洲性天堂| 国语精品内射在线观看| 99热97| 91精品国| 色色色999| 中文字幕久久精品一区| 精品人妻一二三| 97国产成人精品免费视频| 成人综合网 欧美| 激情欧美97| 成视频在线观看免费看| 97久久国产亚洲精品超碰热| 人妻人人做人人澡人人爽欧美一区| 嗯啊不要啊在线| 97色涩| 熟女探花啪啪| 亚洲成人免费在线| 九九九九一区| 九九在线精品| 97超碰美女| 人妻少妇av在线观看| 欧美色图 人妻| 女同女同恋久久级三级| 五十路熟女工口| 亚洲一区二区在线观看91| 91久久久久久| 国产丝袜啪啪| 天天操av懂色| 国产又黄又爽| 九久9热| 午夜毛片亚洲精品片国产久久久| 国产精品一区二区在钱播放| 色操逼网| 超碰午夜| 亚洲中文字幕网| 中日韩久久久免费看| 粉嫩av在线一区二区| 97精品网站| 婷婷五月激情综合| 在线日韩精品一区二区三区| 99热8| 国产欧美日韩精品中文| 97在线免费看视频| 免费网色网站| 久久99午夜精品一区人妻| 九一国产精品| 91狠| 成人免费看吃奶视频网站| 久久久久9| 色色五月丁香| 日本人妻中文字幕精品| 狠久久| 曰韩精品九九无码| 亚洲免费成人在线高清无码视频| 精品免费成人久久| 天天弄欧美| 天天视频综合在线观看视频| juliaann丝袜| 久久久精品九| 中文字幕人妻色偷偷久久皮| 影音先锋中文字幕日本好一区二区| 欧亚韩国999| 久久精彩视频9| 人人操人人操人人人操| 懂色影视久久| 亚洲日韩青青草色月| 国产操伦| 人人操人人插 - 百度 - 百度| 十八禁电影伊人网| 久久精品亚洲东京热色播| 午夜电影在线观看无码专区| 秋霞色色影院| 中文字幕av片| 金典av| 99热最新网址| 国产绿奴视频在线观看| 综合色好色| 欧美日韩美女精品久草一区二区三区| 欧美老妇女内射网址| 国产精品视频精品一二| 性爱免费视频成人| 九九碰九九爱97超| 校园春色 亚洲| 欧美三级免费伊人| 亚洲精品蜜桃久久久一区二区三区| 亚洲一区二区中文字幕| 亚洲春色欧美激情自拍| 日日骚中文字幕| 国产精品午夜福利视频| 国产日韩精品一区二区三区| 国产精品国产自产拍高清AV| 色综合久| www.色婷婷色综合| 国产精品免费美女视频| 国产无马视频| 免费亚洲黄色视频在线观看| 大屁股人妻女教师撅着屁股| 午夜啪| 91深夜夜| 在线亚洲丝袜视频网站| 99爱爱| 亚洲一二三四区机械| 大香蕉九九| 国产一区二区精品久久99| 欧美日韩国产成人高清| 草草草草视频| 天天干人人乐| 97中文综合| 67914在线兔费成人视频| 91嫩草在线| 金典av| 97久久久精品| 神马久久啊啊| 九一性生活免费视频| 亚洲自拍另类丝袜综合| 久久亚洲天天做| 中文字幕天天天天天| 天美国产精品| 久久本道| 成人日本精品九区| 九九热午夜欧亚国产视频| 久久精品高清无码一区| 尤物视频偷拍免费| 欧美色图20p| 久久久久亚洲| 国产亚洲欧美每日在线| 日本不卡高清视频| 九九色影院| 99久久婷婷国产综合精品草原| www超碰| 丁香五月色情| 啊啊啊啊啊啊啊啊啊在线观看| 操逼999| 久久精品一区二区三区蜜桃臀| 国产九九九九九九| 人人妻人人澡人人爽人人精品浪潮| 超碰九7| 天天懆天天日| 在线视频日韩欧美国产| 亚洲有码 视频一区| 亚洲综合影视| 狠久久| 亚洲天天综合| 天天天天天干夜夜夜夜夜操| 久插综合| 男人天堂无码| 91免费看一区二区三区| 欧美日本中字另类在线| 男人的天堂激情| 天堂涩涩| 在线日韩精品一区二区三区| 激情综合网五月婷婷五月天| 久久综合女优| 黄色成年| 国产av波波国产精品| 国产成人自拍视频在线| 天色综合网| 久久久91福利姬| 亚洲毛片基地专区| 国产综合网站在线播放 | 久久少妇| 久久肏大逼| 亚州操操穴网| 少妇色欲综合网2| 无码137片内射在线影院| 久久久久国产一区二| 欧美激情亚洲色图| 99999久久精| 色在线亚洲视频www| 婷婷精品视频| 208天天久久九九九| 精品无码一区二区三区| 久久久艹艹艹| 97视频在线观看网站| 日韩成人电影AV| 中文高清一区二区的| 精品999日本| 久久的免费性爱视频| 18禁超污无遮挡无码免费网| 久久久久久中文版| 日韩啊V| 日韩性爱电影一区| 国产久久一区二区| 国内精品久久人妻性色av| 天天插天天操| 久久系列| 亚洲五月丁香花狠狠干一区二区三区 | 国产AV无码AV| 97色涩| 国产高清午夜成人在线观看| 青青草中文-久久青草精品一区二区三 | 久久人爽| 大香蕉黄色一区| 韩国国产欧美情侣视频在线| 被男人添B超爽视频| 日本久久久久久久久| 天天夜夜rb| 亚洲激情网| 毛片99-全集电影手机免费观看完整-B029AV| 亚洲男人综合| 有码免费观看| 美中日韩无码| 后入人妻无码| 欧美啪啪女女| 啊啊啊轻点在线观看| av绯色| 四虎视频在线观看| 亚洲第一狼人丝袜美女另类| 香蕉免费一区二区三区不读| 五月天丁香婷婷综合网站| 蜜乳av一区二区三区四区不卡| 一区操逼| 97se综合| 久操热| 成人怡红院| 麻豆天美国美国产| 成人AV超碰免费在线| 1204av韩国| 一级久久性爱视频| 一级一性爱免费视频| 91久久午夜无码鲁丝片久久人妻| 在线观看高清AV| 自拍二页| a级理论午夜日本| 亚洲精品熟妇1区2区3区。| 色狠狠色| 国产精品网址| 天天干人人乐| 亚欧中文字幕在线视频| 精品国模无码| 福利社区午夜一区二区| 国产成人拍国产亚洲精品| 亚洲精品视频在线播放| 日韩99神马视频播放| 操狠狠| 中文字幕乱妇免费视频| 韩国一级做A片免费的| 天堂69亚洲精品中文字| 日本布卡一区二三区| 国产刺激视频| 欧美黄色片在线播放| 亚洲精品黑丝| 国产人伦精品一区二区三区| 国产九九九九九九九九| 国产在线视频午夜精华在| 人人弄人人摸| 日韩精品人妻中文字有码在线| 国产呦精品系列在线观看| 亚洲国产97| 天美传媒AV在线| 丰满人妻一区二区三区四| 亚洲天堂久| 操穴国产| 91干熟女| 久操网址| 日韩综合成人免费视频| 天天做天天爱| 日本幼女18+| 九九九久久久久| 色婷婷激情| 精品亚洲国产成人精品| 一区AV| 国产日韩美女小穴视频网站不卡| 精品久久大胆人体| 国产传媒日本欧美专区| 97在线免费看| 婷婷五月天社区| 99性爱在线观看| 综合久久久久久久久91| 色欧洲| 熟人人妻少妇精品久久| 在线观看 99热| 色第一页| 日本青青草在线| 又黑又大又粗| 久久久久国色αv免费观看| 综合网亚| 快点操死我| 欧美一区二区情色| av毛片aaaaa免费看| 国产伊人精品在线| 九久久九九久视频| 性一级黄色录像片网站导航| 日韩精品 欧美激情| 在线电影亚洲色图| 日韩AV噜噜噜一区二区三区四区 | 天美av在线观看| 色婷婷电影网| 婷婷成人五月天| 大香蕉啪啪网| 懂色AV一区二区三区| 狠狠色丁香| 99精品视频在线观看| 一起草AV| 精品四五区| 人妻天天爽夜夜爽爽| 欧美性爱97超碰| 中文字幕二区日韩天堂| 91原创在线观看| 丰满人妻一区二区三区四| 嗯嗯啊操我| 99久久com免费视频′| 欧美成人9797| 神马久久网| 色香在线| 日本免费二区三区| 精品高潮| 久久久久久亚洲Av无码| 色官网在线| 91美女中出| 男人天堂.AB| 99九九久久| 330dv亚洲成年视频网| 日韩八十路老熟女| 欧美色图 色综合图| 韩国三级一线观看久| 色色网91| 在线精品福利免费播放| 九九无码久久精品视频| 久湿久久 | 九九综合久久中文字幕| 色官网在线| 天综合网| 久久久九九| 亚洲国产97| 久久受www免费人成| 日本三级一区二区 在线| 三级激情网站| 91久久婷婷| 亚洲色图欧美色图制服丝袜| 91中出在线| 久久AV无码AV| 插穴性爱视频在线观看| 久操99| 亚洲综合69| 日本不卡一二区| 被窝影院午夜看片无码| 亚洲欧美国产日本一区二区三区| 综合激情97 | 夜夜爽爽夜夜精品视频| 人妻丝袜日本| 日韩av一级黄片| 九九久久久久久爱| 日韩成人小视频| 亚洲男人综合| 先锋精品av色鲁| 狠狠做深爱婷婷久久二区| 夜夜躁狠狠躁日日躁av| 欧美日韩国内不卡| av麻豆啪啪| 91欧美亚洲| 天天干夜夜操网| 天天摸夜夜摸| 97视频免费播放| 国产69精品久久久久99尤物| 久草男人天堂| 天天激情综合站| 国产剧情一区在线观看| 97精品一区| 国产精品久久99日日| 一区二区三区 丝袜 高跟 美腿| 加勒比久久av| 一区二区视频在线播放| 日本最新免费韩国1区2区视频播放| 色色97爱| 再深点灬舒服灬太大了好硬好爽| 欧美一区二区三区成人性生活| 欧洲在线性爱视频| 射丝袜高跟鞋99| 天天肏天天干| 欧美综合骚| 中韩中文字幕在线观看| a在线视频免费观看| 国产精品3| 大香蕉专区| 天天综合网1| 三级激情网站| 爱妻综合网| 色久桃花影院在线观看| 极品后入免费视频| 国模不卡| 99在线啪| 日韩无码专区| 玖玖久久久| 亚洲性综合9| 无码精品久久久久久亚洲| 草b在线| 亚洲AV无码乱码| 大吊色| 啪啪视频亚洲第一| 日本三级韩国三级美三级91| 国内精品久久久久影院亚洲| 超碰在线91| 欧美九九爱| 国产熟女精品一区二区| 97色97好| 日本熟妇人妻中出视频| 91精品国产一区三一| 韩日精品四区| 妇女性内射冈站HDWWWCOM| av天天在线| 亚洲欧洲国产综合av| 午夜操一视频一区| 久久精彩视频9| 久久精品国产亚洲妲己影视| 国模久久在线| 欧美亚洲综合色| 日韩福利综合一区| 99精品综合久久久久五月天| 久操九九九九| 中国乱伦一区二区| 蜜臀久久99精品久久久久| 欧亚日韩三区| 国产免费久久久久| 思思视频免费看网站| 五毛骚逼极品美女怕怕| 九九在线精品| av无码av无码专区| 欧美天天射| 亚洲视频二区 | 亚洲色性| 亚洲三级网址久久最新| av资源在线播放天堂| 亚洲巨爆乳一区二区三区四季网| 高清孕妇孕交 交孕妇| 国产原创精品| 五月丁香激情啪啪| 欧美精品xxxwww| 2017天天拍大香蕉| 久久精品国产97欧美精品亚洲 | 亚洲资源网| 日韩国语字幕| 久久99视频| se01国产在线视频| 欧美日本国产日韩激情视频| 色在线综合| 欧美久久久| 成人精品电影| 一块操欧美| jk白丝没脱就开始啪啪| 人人操,人人液| 国语精品av| 情色五月天网| 操逼精品视频| 精品久一区免费| 99色色| 久久美女福利是上海美女| 国内偷自视频区视频综合| 日本不卡二区| 91熟女视频| 草草草视频| 日韩天天综合| 久久精品导航| 可乐操亚洲蜜911| 国内外毛片在线观看| 夜草欧美| 99re99视频在线免费观看| 九九热超碰97亚洲最新香蕉| 精品久久久久9999| 国产白嫩精品久久| 爱干爱射网啊啊啊| 99re9这里只有精品| 九九玖玖精品| 麻豆天美制片厂网站视频| 嗯嗯嗯啊啊啊在线免费观看| 大香蕉在线视频15| 91在线视频免费中出| 肉丝网站91| 大香蕉综合| 欧美无圣光在线| 天天日日日射| 97超碰久久色| 大香蕉92| 亚洲欧美碰碰| 免费精品国偷自产在线在线| Av手机版天堂网| 亚洲精品国产专区在线观看| 国产精品久久久久中文字幕| 欧美网站免费| 午夜天堂精品久久久久91| 熟女精品一区二区三区| 国产成人自拍视频在线| 日韩精品人妻中文字有码在线| 欧洲亚洲人妻无码中字久久三区四区| 久久一区二区三区入口| 操操逼视频| 国产人伦a片信息免费片| 国产九九九九九九九九| 日本福利社| 免费农村成人少妇人妻Aa一区二区视频| 蜜奶av| 金典av| 伊人宅男大香蕉| 欧美亚洲天堂| 熟女人妇一区二区三区| 狠狠欧美| 欧美一区二区三区成人性生活| 久久亚洲一区二区色婷婷| 最近二区三区视频大全| 中文字幕,人妻,日韩| 久久久久久AⅤ无码免费肉站| 亚洲综合小说另类图欧美视频激情小说色五月天 | 久9re热视频这里只有精品| 男人天堂新| 九九热精品在线| 日日日大屁股骚女人精品| 中日亚韩免费视频| 亚洲综合草草| 亚洲视频二区 | 一级久久性爱视频| 天天综合网~91| 91N欧美| 国产成人精品无码久久| 欧美97免费| 国产精品青青草| 亚洲伊人久久精品影院| 久久东京热久久| 中文精品一区二去| av中文字幕在线熟女| 少妇第一页| 在线αⅴ| 色婷婷丁香五月| 美女干逼2| 91亚洲网| 国产一区二区啪啪视频| 久日91在线| 亚洲一区日韩精品中文字幕| 中文字幕在线日亚州9| 久草精品一区| 五十路六十路素人熟女| 亚洲精品丝袜-不卡成人免费……| 91精品婷婷国产综合久久竹菊| 欧美少妇熟女| 99热大香蕉伊在线| 国产精品99精品视频网站| 亚洲色图8| 色五月AV在线| 骚日日av| 舔足天天操天天射| 国产传媒午夜理伦精品| 日韩欧亚太美不卡| 久操电影网| 国产亲戚伦亲在线| 91欧美综合在线| 国内精品a| 亚洲国产一区二区三区在线 | 人妻第一页| 国产无码一二三区| 日韩精彩视频| 免费av大片| 激情久久日韩精品中文字幕麻豆| 黄色片,com| se,,,亚洲欧美| 国产乱伦性爱区| 国产亚卅97| 92性色国产午夜福利在线661| 奸色色 男人天堂 天天射| 啊啊啊爽爽| 亚洲色图91欧美日韩| www国产精品| 激情综合五月| 亚洲欧美97| 久久精品国产精品亚洲艾通辽熟妇| 蜜臀va69| 午夜人妻精品综合在线| 精品国产Av无码久久久伦古装| 99色色网| 秋霞Av理论一级在线| 日韩天堂av电影在线观看| 国产午夜福利电影免费在线观看| 老熟女熟妇| 日韩成人精品| 狠操91,com| 爱av免费| 91色花堂| 亚洲码和欧洲精品激情系列| 涩涩涩综合| 国产后入清纯| 992这里有精品| 黄片免费日韩| 自拍亚洲综合| 天天爱天天操| 妇女性内射冈站HDWWWCOM| 91丝袜在线视频| 国产热RE99久久6国产精品首 | 日韩美女啪啪一区| 国产AV线| 精品久久久亚洲AV成人网站| 丝袜制服字幕在线| 五月天婷婷小说| 麻豆国产精品午夜视频| 91n免费处女| 色爱综合网| 免费啪啪av| 国产91美女视频| 另类亚洲图色| 日本123区操B视频| 亚洲黄片免费在线播放| 天操天操夜操夜月操月年年操操| 大香蕉碰碰| 老熟妇一区二区三区…| 天美传媒婬乱在| 日本最新免费韩国1区2区视频播放| av婷婷色婷婷色六月| 东北少妇高潮zzzz| 91操熟女视频| 日韩久久艹| 日韩有码免费视频| 美中日韩无码| www.99色| 啊啊啊好大好深| 操逼999| 爱爱动态120秒| 日韩黄色一区二区三区| 久久性爱视频免费看| 男人天堂最新手机版在线青青草| 欧美天天谢综合网| 熟女精品一区二区三区| 丰满人妻一区二区三区大胸懂色| 亚洲无码精品AV久久久| 午夜一区| 亚洲做性| 伊人亚洲综合| 青青草五月天| 欧美色九九九| 97爱免费插| 丁香五月天啪啪| 欧美日韩香蕉| 国内毛片无遮挡国产| 亚洲男人天堂av| 懂色影视久久| h色99999| 亚洲色91C| 操操操操网黑人| 亚洲日韩AV视色| 亚洲精品视频在线| 看一级黄色视频| 国产在线视视频有精品| 大香蕉久| 多毛小伙内射老太婆| 少妇厨房愉情理伦片bd在线观看 | 99精品热| 日韩精品一区二区三区色欲 | 91AV天堂| 日韩精品人妻中文字有码在线| 亚洲综合另类欧美久久久| 久久精品欧美一区蜜桃| 激激五月| 久久久久久久久久久久久久久性生活视频 | 国产高清视频无码在线| 狠狠久久手机视频精品| 日韩欧美亚洲自拍偷拍| 久96热在线观看视频| 亚洲国产丝袜熟女av| 97欧美视频| 日本成a人v网站在线观看| 国产色图乱伦| 2023天天操夜夜操| 不卡中文字幕aⅴ在线| 在线观看高清AV| 日本操大逼| 国产亚洲精品第一最新| 午夜精品视频777| 激情第四色| 欧美夜夜狠| 少妇毛片久久| 99热 按摩 日韩| 亚洲综合射| 日韩天天综合| 农村女一级毛卡片| 国产乱色国产精品免费视| 五月丁香拍拍激情综合三级| 8050午夜少妇无码| 69精品少妇一区二区三区蜜桃| 久操高青| 久久久九九九九| 老鸭窝在线视频播放| 热热色中文无码| 网站A V在线| 超碰成人最新最好看| 九热视频| 黑丝日韩av丝袜av| 劲爆欧美人妖三区91| 啪啪啪综合| 国产美女在线精品免费看| 在线观看成人性爱免费小视频| 精品国产久热在线观看| 旡码电影特区| 欧美爱国产综合、| 国内毛片欧美香蕉精品| 亚洲色图日韩精品| 久久国产精品一级二级三级| 亚洲综合九| 久久久久久久| 国产高清26uuu| 黑操B| 亚州欧美一区| 超碰97色| 国产成人自拍视频在线| 熟女色图在线| 精品无码少妇| 岛国AB视频| 亚洲免费精品一区| 天天影视综合色| 情趣丝袜无码操逼视频| 99热自拍| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 懂色影视久久| 亚洲无码超碰免费| 开心五月婷婷激情| 午夜后入| 日本视频在线中文字幕| 国产福利小视频高清在线观看| 加勒比大香蕉视频在线| 中文一区二区| 琪琪精品免费一区二区三区 | 成人精品久久| 亚洲天天自拍| 91熟女丨91老女人| 九九热国产| 翔田千里A片一区二区| 中字幕人妻一区二区三区| 99自拍视频在线| 中文字幕第23区| 日韩免费中文字幕视频| 色色色热| 亚洲精品97久久中文字幕| 国产成人午夜视频网址| 嗯……啊…嗯嗯…啊…好舒服| 精品国产乱码久久久久久久久久毛片 | 激情欧美97| 岛国精品视频在线观看| 做爱福利视频一区二区| 岛国黄片网站| 亚洲射综合网| 内射老妇BBWX0C0CK| 德国一二三不卡| 欧美黄页| 精精夜夜| 中英熟女操女| 丝袜性亚洲| 69视频入口| 麻豆AV一区二区| 精品无码久久久久久久杏吧| 伊人综合色网| 精品一区二区三区国产| 亚洲精品久| 84YTCOM性无码| 国产白领连续中出在线观看| 日韩无码人妻| 婷婷五月天久久精品视频一区二区三区 | 人妖欧美一区二区| 97综合在线| 精产品久久| 素人播放一区| 一起草三级AV电影在线观看| 欧洲射精91| 国产对白刺激视频| 亚洲欧洲日产国产综合网| 欧美一区二区三区蜜桃| 欧美在线中M| 在线观看日韩av不卡| 美女t无毒不卡不卡| 啊啊啊不要好疼视频| 国产操逼网站亚洲一级黄色| 青草香蕉网| 99精品视频在线观看免费| 果冻传媒A片一二三区| 久久精彩视频| 人妻性爱一区二区| 日日骚精品视频| 亚洲成人久久美女| 男人的天堂2019| 人妻在线大香蕉| 亚洲欧洲国产综合av| 久久久久国色αv免费观看| 精品91摸| 国产操偷| 97天天摸天天爽| 夜夜骑天天燥| 99热精品在线观看| 国内毛片无遮挡国产| 97天天在线| 校园春色 男人天堂| 国产强奸乱伦xd| 国产熟码AV| 黄色成品网站| 亚洲无线码一区国产欧美国| 97国产超碰| 亚洲综合贴图91| 色噜噜综合在线| 国产白嫩漂亮KTV在线| 综合 亚洲 欧美| 天天操天天日天天干| 你操综合| 91三级理论片播放器| 综合网天天| 久久久久极品| 91人妻视频| 天天做天天爽| 国内毛片婷婷六月色| 97香蕉网| 人妻激情视频| 蜜臀亚洲综合一二三四区| 99成人| 久久精品国产亚洲AV嘿嘿| 97啪啪| 强乱老妇中文字幕| 亚av顶级裸体一区二区三区四区五区 | 51一区二区三区| 精品久久久久9999| 99视频内射三四| 亚洲日韩美女中文字幕乱| 国产强奸乱伦欧美| 熟妇人妻精品一区二区| 青青草狠狠撸| 美女主播色欲91抠b在线播放| 青草视频在线看看看看看看看看看| 中文字幕日韩人妻视频一区二区三区 | 摸奶性爱视频网站在线免费播放| 伊人九九| 97人人夜| 色欲久久99精品久久| 91精品婷婷国产综合久久竹菊| 欧美色棕合| 久久怡红院| 色色色欧美| www.色综合| 殴美在线AⅤ| 成人麻豆av电影网站| 日韩特级毛片免费观看全集| 91综合中文字幕| 99999久久精| julia国产在线| 色九色久| 亚洲日韩资源| 色777999综合| 欧美日韩亚洲国产中文永久天天看| 欧美青青视频| 小明看看网址| 久久99精品九九久久久婷婷| 啊啊啊在线观看免费视频| 欧美最婬乱婬爆婬性视频 | 日本在线15p| 91狠狠狠| 人妻少妇无码| 床戏久久久av一区二区麻豆| 国产精品另类| 97综合激情| 狠狠爱大香蕉| 在线视频亚洲无码| 亚洲电影中字一区二区| 国产精品不卡一区二区三区av| 国产91影院| 91亚洲色人| 九色精品视频导航1| 强歼乱伦资源网| 欧美综合区| 色色色综合网| 精品人妻二区三区| 91欧美美女日韩国产婷婷| 国产精品密臀网在线观看| 国产性爱欧美性爱在线| 欧美激情一| 亚洲se91| 国产家庭乱伦性爱视频| 国产亲戚伦亲在线| 69精品人人人人| 亚洲AV免费在线观看| 磁力99AV| 欧亚韩国999| 成人久久久| 无码高清少妇久久| 丝袜熟女一区二区三区| 91校园春色长篇| 求求你操操我| 天天综合站| 久久久精品网站| 国产精品美女久久久久AⅤ国产馆| 亚洲黄色a级片| 激情自拍 校园春色| 四虎免费看黄| 偷拍导航视频网站| 午夜亚洲WWW湿好大| 在线无码操| 国产精品小视频一区二区三区| 91久久堂| 9久久精品| 强奸乱伦大香蕉| 久久精品国产精品亚洲艾通辽熟妇| 丰满少妇一区二区三区四区观看| 天堂涩涩| 国产性爱强奸乱伦大全| 久久肏大逼| 亚洲成人一二三区| 大逼色网站| 在线无码视频| 怡红院视频在线| 午夜精品久久999热蜜桃介男人用| 久久久久久十| 激情无码日韩| 精品.99999| 国产97色在线 | 亚洲| 中文人妻av高清一区| 六月丁丁香| 很狠操| 亚洲精品免费中文字幕| 丁香五月天啪啪| 熟女高潮合集-永久久久-成人AV | 九九无码视频| 自拍视频大全亚洲专媒视频/一区二区三区 | 91东北熟女| 中文字幕 国产 精品| 和协影院中文字幕三区| 国产又黄又爽| 婷婷久久综合| 欧洲站一级二级三级h| 免费观看性欧美一级| 亚洲天堂东京热| 九九九999久久久网站| 久久精品国产亚洲AV片多多| 麻豆人妻少妇在线免费观看| 亚洲另类春色| 国产精品一二三区福利| 亚洲做性| 人人射人人操人人摸| 男人的天堂在线| 亚洲AV成人无码一二三久久 | 囯戸精品高潮呻吟旡码| 精品久久青青草| 78精品| 骚逼高潮久久精品| 久久国产精品一区二区| 亚洲高清无码免费观看视频| 美女91av| AV无码久久久精品| 十八禁电影伊人网| 久久久精品无码亚免费| 午夜综合在线| 一区操逼日比视频| 亚洲色图伊人网| 欧美精品xxxwww| 青青伊人这里只有精品| 亚州国产精品乱| 在线视频免费播放一区| 久久精品中文| 国产久久av| 97热视频在线观看| 免费在线观看国内色片网站网址| 97一区二区三区视频| 免费公开人人操| 天综合网欧美| 中国探花熟女| 91成人精品| 亚洲成人av色网| 97超碰精品| 亚州色站 日韩电影| 国产一区二区三区免费视频在性观看| 97色97好| 亚洲精品啪视频| 四季av一区二区凹凸精品小说| 婷婷在线精品| 欧美中出| 艳尻美人妻| 亚洲 国产 精品一区| 亚洲色天堂九9| 亚码激情| 影音先锋日本一区二区| 欧美熟女丝袜| 九月婷婷综合| 人妻一区二区三区四区视频| 91撸色网 玖玖网 欧美| 国产精品人妻熟女aⅴ| 加勒比综合a∨| 婷婷综合久久| 综合影院永久入口国产| 九九国产| 在线不卡视频| 国产亚洲深夜激情| 看看日B真人视频| 大香蕉操久久| 中文字幕亚洲热播人妻| 麻豆天天躁天天揉揉AV| 香蕉一区二区三区在线视频| 久久美女国产| 资源新线在线天堂| 综合欧美日韩在线| 五月丁香影院| av在线观看不卡网站| 亚洲综合在线91| 久久久久久九九九九-美女久久久久久久-成人AV| 十八岁啪啪视频免费看| 狠狠躁伊人中文字幕| 白丝少妇一区二区| 99啪啪| 亚洲欧美日韩免费电影| 欧美—性—交—色| 亚洲区限制级| 长长久久免费视频| 综合久久六月久久婷婷| 丰满人妻一区二区三区四区| 97AV在线免费观看| 久久精品人体| 国产超碰| 国产极品精品美女视频| 操人妻视频| 精品人妻视频一区二区在线播放| 99re这里只有精品中心播放| 久久久久久久国产a∨| 永久电影三级在线观看| 91n.欧美| a片亚洲一本通视频| 天天淫人人妻日日色| 亚洲天堂 视频你懂的| 国产日韩欧美中文在线播放| 亚洲国产综合图区中文字幕| 日韩欧美天堂| 天天干人妻| 一区二区三区日韩欧美| 美女刺激久久国产欧美| 黑人黄片在线免费观看| 国产绿奴视频在线观看| 熟妇乱伦一区二区| 日骚逼视频| 欧美日韩小说| 无码人妻丰满熟妇区毛片| 欧美少妇性乱| 五月天综合网| 亚洲国产剧情少妇激情| 国产玖玖| 99啪啪| 99自拍视频在线| 人妻精品视频一区二区| 人人操人人插人www| AA级电影三区| 亚洲成人黄色在线观看| 亚洲 暴爽 AV人人爽日日碰| 欧美色图第一页| 97综合激情| 超碰97伊人| 国产suv一区二区三区6| 深爱伊人影院| 夜夜久久久| 欧美日韩人妻精品系列一区二区三区| 天天拍天| 精品少妇一区二区三区| 色偷偷综合91久久噜噜| 加勒比久久av| 一本一道久久综合久久| 99热线麻豆 | 黄色在线网站| 精品亚洲国产成人av网站| 亚洲成人日韩小说| 激情综合二| 色香色欲天天综合网天天来吧| 国产亚洲色婷婷久久99精品91葵花宝典| 亚州操逼图| 一区三区啪啪| 免费看日产一区二区三区| 久久亚洲婷婷| 大稥蕉免费视频这里只有精品| baisiav| 青青草在线视频欧美| 超碰这里只有精品| 2003天天干夜夜操| 色97欧美| 久久男人的天堂|