欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網運營的一線實戰(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 集成網上能搜到的方案有三大類把 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
返回資訊列表
人人干天天操五月丁香| 97精品人人A片免费看| 少妇丁香婷婷| 99精品热视频| 97碰成超视频免费视频| 亚洲精品无码A片一区二区| 久99久精品| 停停色综合伊人| 五月丁香综合在线| 97久久久免费福利网址| 亚洲丁香花五月丁香花| 老美AA片| 欧美搡BBBBB摔BBBBB| 9999热在线观看| 九月丁香| 开心五月婷婷| 国产99久久久国产精品免费看| 激情六月色| mmm1717.6dbm人人爱人人操| www。五月天激情| 亚洲激情Av| 国产精产国品一二三在观看| 91啪啪| 亚洲综合狠狠艹| 丁香丁婷五月激情| 久久综合影院 | 丁香五月偷拍| 精品国产AV色一区二区深夜久久| 五月天婷婷激情在线色图| 99色性爰网络| www.henhengan| 激情校园 亚洲| a在线观看| 国产色视频网站2| 又大又粗九一在线| 五月天婷婷青青草| 丁香婷婷六月| 69综合在线| 97碰碰九九视频| 一点色成人网| 久久免费高| 亚洲三级无码| Www.久久| 久久婷婷丁香视频网| 黄色AAAAAAA| 伊人网色婷婷五月天| 日本乱子人伦在线视频| 夜夜嗨一区二区三区直播内容 | 综合激情五月婷婷| 97色婷婷| 色狠狠色噜噜AV天堂五区| 色综合99| AA片在线观看视频在线播放| 色吧网91| 日韩综合久| 丁香五月婷婷亚洲天堂| 丁香五月婷婷亚洲综合精品| 丁香五月婷婷婷婷欧美综合| www.minyis.com【JT】币址百万U预算可预付QQ2101460746 | 91狼友视频在线观看| 国产精品色情AAAAA片软件| 久色激情| 97成人操| 在线观看av网站| 丁香五月激情啪| 五月婷婷啪啪啪| 婷婷性爱网| 久久五月综合| 天天舔日日肏夜夜爽| 色五婷婷| 久久婷五月| 色色色网站| 亚洲爆乳无码精品AAA片蜜桃| 夜夜操狠狠操| 性爱人人网| 天天操加勒比| 蜜乳国产网站| 九月丁香婷婷综合| 密着浓厚中出乚交尾GvG935| 亚洲一级AV在线免费播放| 色婷婷五月综合在线| 色噜噜婷婷| 精品久久婷婷五月天| 久久午夜理论| 9999三级片| 99re8这里只有精品99re8热视频| av操逼网| 大香蕉婷婷丁香天堂AV| 天天情色五月天| 欧美婷婷精品激情| 国产精品电影| 激情四射婷婷色色色| 午夜爱插插| 五月色亭丁香| 日韩精品一区二区亚洲AV观看| 久热伊人| 伊人大香久久| 色婷婷激情小说网| 五月天色色婷婷| 久久久精品人妻| 色伦专区97中文字幕| 婷婷五月综合色小姐小说| 色色五月天丁香| 婷婷五月情色| 99操逼视频| 久久久久久久人妻| 五月天色色婷婷| www.sd-xiangsu.cpm| 色五月婷婷婷婷| 亚洲婷婷基地| 99天堂在线观看免费视频| 大香蕉婷婷久久| 视频这里只有精品16| 亚洲精品大片| 激情98色婷婷五| 日本一级特黄大片AAAAA级| 99国产小视频免费观看| 五月天丁香网站| 五月开心播播网| 97五月久久丁香婷婷| 丁香婷婷综合五月天| 久久99热这里只有精品| 操逼福利视频| 亚洲色网络| 六月丁花香啪啪激情欧美| 久久人人九| 婷婷五月天激情五月天网站| 91精品久久久久久77777| 五月婷婷六月丁香首页| 激情婷婷五月基地| www.色五月| 日本美女上人| 五月天丁香网站| 久久久潮喷-久久久九九-成人AV| 森林影视大全,最好看的2019年视频| 亚洲免费观看高清完整版AV线| 大香蕉220| 国产在线中文字幕| 97婷婷狠狠| 91嫩草国产线观看亚洲一区二区| mmm1717.6dbm人人爱人人操| 99无码视频| 手机在线日韩视频中文字幕| 性爱视频久久| 日本色色网站| 国产性爱一级| 欧洲亚洲午夜| 色综合大香蕉| 亚洲成人影视在线观看| 99ri视频| 日日天天天| 国産精品| 99热久| 9热精品| 天天操夜夜爱| 色婷婷亚洲综合天堂| 男人综合网| 亚洲视频99| 操操自拍| 亚洲中文av| 99久久久久久www| 色吧五月婷婷| www.91在线看| 日韩啪啪网| 久热99热| 99色综合| 五月社区婷婷激情| 久久99人人| 五月综合影院| 91亚洲免费片| 丁香婷婷色九月| 91好好热日本在线| 99自拍网| 激情综合网络插| 99久久婷婷| 丁香五月精品视频| 日本欧美成人片AAAA| 婷婷丁香色五月天久久88| 啪啪综合网| 天天拍夜夜撸| AV在线免费观看不卡| 五月婷婷精品无在线| 玖玖九九超碰| 亚洲综合另类| 久久精品99| 色99网| 欧洲电影在线观看免费版英语版 | 色五月涩涩婷婷蜜桃| 久久这里只精品| 久久久久婷婷五月热综合| 婷婷五月天激情小说| 狠狠五月天婷婷| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 婷婷丁香五月天操逼| 天天久| 精品99在线| 婷婷色五月天在线观看| 精品成人无码A片观看香草视频| 久久久一级AAA| 丁香婷婷婷五月| www.五月丁香| 日韩精品AV一区二区三区| A A色色| 五月婷婷亚洲色图| 色婷婷狠狠| 婷婷综合五月色播| 91在线日| 九月停停| 婷婷久草| 五月丁香在线综合| 99热综合在线| 91丨九色丨国产在线| 色色色99| 另类综合婷婷五月天欧美视频| 无码橾| 五月天开心网| 日日杆天天| 久久这里精彩免费在线观看| 五月天天综合网色婷婷| 久久538| 啪啪啪五月天| 婷婷的久久网站| 中国丰满熟女A片免费观| 婷婷五月天激情五月天网站| 激情综合五月婷| www,黄色在线,con| 色人久久| 欧洲亚洲精品| 丁香六月婷婷综合网| cao久久| 欧美精品18| 天天综合影院| 色婷婷伦理| 丁香五月激情网| A片试看50分钟做受视频| 性色天| 婷婷五月丁香狠狠| 色五月婷婷基地| 99干免费视频| 久久AAAA片一区二区| 天天干天天干天天| 深爱婷婷丁香五月激情| 99热青青草原| 天天激情夜夜干| 欧美日韩成人一区二区| 99热大| 免费看欧美成人A片无码| 狼人狠狠操| 天天爽夜夜爽天天爽夜夜爽| 五月社区丁香| 五月天激情综合网站| 97五月综合网| 日本三级色| 成人精品视频99在线观看免费| 国产精品色婷婷99久久精品| www.99视频| 色五月激情综合| 大香蕉精品视频| 青青草原爱爱网| 国产精品A成V人在线播放| 色热久| 夜夜操,天天撸| 97色伦另类图片小说视频 | www,99热在线观看| 久久性爱网| 色播综合| 91狠狠色丁香婷婷综合久久| 五月婷婷影院| 噜噜噜久久| 五月天丁香成人| 久久久久丁香婷婷五月天| 五月丁香六月婷婷不卡免费无码| 日本色色网站| 亚洲热久| 亚洲久艹| 日韩综合久| 亚洲久久天堂| 综合久久十三| 午夜丁香| 久久香蕉福利| 热996精品在线观看| 噼里啪啦完整版中文在线观看| 色婷婷久久综合| 九九精品视频在线观看| 开心五月激情婷婷| 婷婷色网站| 五月伊人视频在线看| 九九99精品| 亚洲欧洲另类| 夜夜爱网站| 五月丁香综合激情| 色色色图| 五月天国产| 久久久久久久人妻| 色婷婷狠狠| 人妻久久久久久久 | 海外网站专业操老外| 9色操| 一区二区成人电影免费播放| 99热草草| 日韩中文字幕| 欧美碰碰碰| 亚洲岛国电影| 久久99免费视频| 九日日夜夜69| 一级性爱大片| 九色婷婷| 99在线观看精彩视频| 开心六月丁香五月婷婷| 亚洲性爱干干| 狠狠操.COM| 日夜夜久久| 五月开心深深爱激情综合| 丁香网五月天激情| 囯产精品久久欠久久久久久九大| 婷婷五月天AV在线| 99在线精品视频在线观看| 色色婷婷五月天| 97五月久久丁香婷婷| 国产激情综合| 熟妇人妻中文字幕无码老熟妇| 被强行糟蹋的女人A片| 亚洲字幕AV一区二区三区四区| 欧美搡BBBBB摔BBBBB| 色香蕉婷婷| 久久激情婷婷| 伊九九三级区| 天天碰天天插天天操| 深爱激情五月天婷婷网| 超碰在线超碰| 天天做天天爱天天高潮| 亚州第一黄网| 91丨九色丨熟女丰满| 日本在线视频www色| 99ri精品| Www.se.久久| 三级毛片7979| 婷婷爱综合| 久久婷婷在线| 99re8这里只有精品99re8热视频| 国产精品18久久久| 综合伊人久久| 狠狠草婷婷| 色婷婷五月中文字幕在线dvd| 色99日韩| 激情婷婷五月社区| 五月天丁香六月综合| 五月婷婷开心色伊人| 丁香五月婷婷色偷偷| 另类激情综合| 久久婷婷五月天大香蕉| 91人人操.COM| 亚洲激情综合五月婷婷啪啪| 婷婷五月天久久久| 色五月开心久久网| 婷婷久久久久久久| 久久综合五月天| 五月激情影视| 成人短视频免费观看| 人人草公开操| 激情色色色| 色色A| 婷婷99视频全集高清| 欧美久久婷婷| 99无码黄色视频| 99久久99九九九99九他书对| 中文字幕在线不卡视频| 99热成人精品| 日韩成人av在线| 激情丁香五月激情婷婷| 97色热| 色色三级视频| 人人草成人视频| 99精品久久久久久久婷婷久久 | 亚洲图片 丁香婷婷| 九九色图| 天天操夜夜操| 欧美婷婷丁香五月| 99热这里有精品2| 久久综合五月| 91精品久久久久久久| er99免费视频在线| 天天狠狠夜夜狠狠2023| 99在线公开视频| 中文字幕 久久9999| 97色干| bukadeavzaixian| 人人天堂操| 热九九精品| 97碰成超视频免费视频| 色狠狠色噜噜AV天堂五区消防| 日韩啪啪视频| 99久久久免费| 99色色| 丁香六月欧美| 狠色色狠网| 99久久这里只有精品| 亚洲免费观看高清完整版AV线| 婷婷综合六| 色婷婷狠狠| 9l视频自拍九色9l视频自拍九色9l社区| www.婷婷五月| 亚洲婷婷综合视频| 亚洲激情免费视频观看| 色亭亭丁香五月天| 玖玖资源站蜜臀| 嫩模草| 六月伊人婷婷| 久久综合久色欧美综合狠狠| 开心五月激情站| 亚洲超碰在线| www.久久爱| 91久久五月天| 国产精品社区| 91超级碰| 在线只有精品| 提提热五月天婷婷| 丁香五月婷婷社区| 99热这里只有精品最新网址| 五月天婷婷丁香人人操91| 五月丁香六月情亚洲| 国产精品久久久久久喷浆| 操操操av| 五月天激情色色| 欧美综合激情五月| 亚洲视频码| www.色色色色| 在线资源av-超碰中文在线-成人AV| 五月天婷婷久久| 狠狠综合色网| 成人av在线电影| 九九AV在线| 五月激情综合网| 丁香五月婷婷六月婷婷| 夜精品无码A片一区二区蜜桃| 婷婷五月丁香狠狠| 99热香港| 五月丁香五月婷婷| 色五月丁香六月资源站| 青青久在线视频免费观看| 激情图片婷婷| 久久婷鲁| 九九热99热| se99热久久一本| 超碰a女人的天堂| 五月丁香| 激情五月婷婷综合秋霞| 天天婷婷综合亚洲亚洲| 99操逼| site:picc-up.com| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | av国产精品| 色五月五月天| 丁香五月婷婷99| 日本五月婷婷| 六月婷婷五月丁香首页| 日本道久久91| 激情久久五月天| 99热99热在线观看| 久久精品五月| 五月色网| ji'qi'luan'ren'lun| 丁香六月激情四射| 热99玖玖99玖玖99九九| 六月色播| 婷婷五月天影视| 超碰在线资源| 激情综合五月丁香| 日日干天天| 色色激情五月天| 久久精品A片777777| 色色色综合色| 99热精在线九九久久保| 色婷婷文字幕| 日产精品久久久久久久蜜臀| 日本久久婷婷| 久久人人人人妻| 中文字幕成人影视| 国外亚洲成AV人片在线观看| 丁香五月六月婷婷综合| 五月丁香六月情婷婷久久| 九热视频精品| 五月六月激情| 亚洲欧美综合7777色婷婷| 亚洲乱码日产精品BD| 丁香五月天堂网| 立川无码av| 伊人9草在线观看| 26uuu欧美| 欧美丁香五月夫妻天| 99热99思午夜精品| 综合一区二区三区| 日本久碰| 久久99热这里只频精品6学生| 婷婷激情视频欧美视频自拍视频欧美剧| 久久五月视频| 亚洲无码你懂的| 国产小精品| 婷婷丁香激情综合色情| 天天做天天爱综合| 第六色在线| 五月婷婷久久久| 日韩三十六页| 色婷婷小说| 九九无码| 久久婷婷六月综合综合色| 婷婷久久五月| 激情五月丁香五月| 99热免费精品| 97婷婷丁香五月天激情图片| 激情综合网婷婷五夜| 亚洲国产99| 久久婷婷网| 激情五月丁香综合网站| 桔色成人官方网站| bbwcuckold精品熟妇| 亚洲成人AV在线观看| 91成人看| 不卡成人免费| 国产99久久久国产精品免费看 | 91色操| 成人AV网站在线| 久久99久久99久久99| 久久伊人大香蕉| 99黄色性生活| 日本色综合| 五月丁香六月综合激情无码软件亮点 | 婷婷五月天伊人网| 九久9精品| 超碰免费成人| 91无码视频| 色五月婷婷在线| 午夜色丁香| 久久婷婷五月综合色和| 人人操9| 老师的粉嫩小又紧水又多A片视频| 四虎成人精品永久免费AV九九| 99爱视频在线观看这里只有精品| 色色哒五月婷婷六月丁香| 噜噜噜色噜噜| 婷婷激情五月综合丁| 秋霞影音91人妻久久| 99视频在线观看欧| 丁香婷婷六月在线资源观看| 五月香六月婷| 五月激情影视| 视频一二区| 久久9热| 97视频久久| 91丨九色丨白浆秘| 开心五月网| 色色国产| 日韩AV无码影片| av高清无码| 成人龟情网丁香五月| 综合 激情 婷婷| 欧美激情综合| 国产无遮挡又黄又爽免费网站| 日韩一区二区A片免费观看| 亚洲在线免费成人| 国产黄色一级片| 99热综合色图| 99热这里只有精品268| 激情综合女人网五月播播| www.狠狠操.con| 五月丁香激情深爱婷婷| 五月丁香六月婷婷啪啪| 五月丁香啪啪网| 男妓跪趴把舌头伸进我的嘴巴| 202丰满熟女妇大| co超碰在线观看| 婷婷综合天堂| 五月丁香婷婷久久| 婷婷丁香六月影视| 99色免费观看全部| 九九热在线精品| 五月婷婷影| 午夜69成人做爰视频| 丁香五月婷婷色综合| 99热性色| 成人精品视频99在线观看免费| 中字幕视频在线永久在线观看免费 | 一本久道综合99| 思思99热这里只有精品| 亚洲人妻一区二区 | 欧美色骚婷婷五月天| 五月综合激情视频| 99色| 欧美色综合天天久久综合精品 | 亚洲色vA| 91成人品| 97超碰色| 性五月激情| 淫荡综合网| 四色永久成人网站| 操逼电影免费看| 色婷精品91| 日日爱678| 婷婷五月天激情基地| 成人在线视频网| 日韩AV免费电影在线播放| www.maotanji.com| 五月色欧美| 97性视频| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 九九精品9| 亚洲最大在线| 99精品免费欧美小视频| 色五月 五月婷婷| 九月色婷婷综合亚洲| 欧美成人日韩| 操逼棍操逼| 99re在线观看| 丁香六月综合激| 激情综合网,婷婷五月天| 色婷婷丁香五月| 91人久| 97干免费视频| 婷婷五月激情中文字幕| 少妇性按摩无码中文A片| 欧洲一区二区| 亚洲国产精品VA在线看黑人| 欧美性二区| 妻久久人久久| 丁香婷婷老熟女综合网| 安息电影在线观看完整版| 综合网五月| 色五月婷婷777| 六月99天天婷婷激情综合| 婷婷激情视频欧美视频自拍视频欧美剧| 久色| 亚洲国产成人在线| 91精品综合久久婷婷九色| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 色婷婷香蕉在线| 五月色婷婷亚洲 | 五月丁香婷婷色| 99久久婷婷国产综合亚洲| 五月夜丁香| 四色99久久| 日本一毛片| www.狠狠| www.精品久9| 都市激情五月婷婷亚洲| 99色在线| 情婷婷五月天在线| 五月婷婷色播| 99色视频| 爱射综合| 欧韩性爱| 99无码精品| 久久99这里只有精品| 综合大香蕉| 九热久| 狠狠色综合777| 少妇高潮呻吟A片免费看软件| 日本99热| 婷香五月激情视频| 这里只有精品99视频| 直接看的av| 超碰在线91| 特黄三级片| 丁香六月啪啪| 激情婷婷丁香| 夜夜骑操AV| 99re6在线视频精品免费| 欧美婷婷六月丁香综合色连续高潮抽搐| 五月色色色| 久久婷婷五月综合97色一本| 夜夜撸夜夜骑| 一区二区三区四区五区| 天天干,夜夜爽| 婷婷色日本| 国产视频色色色色色色色| 五月婷婷色播网| 香蕉网婷婷| 99热这里只有的精品视| 亚洲国产另类av| 久婷五月| 五月婷婷色色色| 婷婷性爱| 亚洲色婷婷激情| 91av成人| 五月天婷婷成人网| 99热自拍| 亚洲亚洲人成综合网络| 五月婷六月丁香| 欧美色必爱| 欧日韩成人| 丁香婷婷激情综合五月激情 | 99爱视频免费| 久久一二三视频| 黄色片avv| 大婷婷色呦呦噜噜色呦呦噜噜| 五月婷在线观看| 99热久| 青草激情在线| 色99欧洲色19| 五月丁香综合激情网| 激情网 五月天| 婷婷五月天综合亚洲| 无码色| 婷婷在线播放av| 极品人妻VIDEOSSS人妻| 另类视频五月天| 色婷婷丁香| 北京熟妇搡BBBB搡BBBB | 99色色爰| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 丁香五月色| 婷婷播播五月天| 九月av在线| 五月丁香网站| 成人丁香婷婷| 亚洲综人色综网| 五月天色软件| 五月婷婷啪啪| 日本不卡五月婷婷丁香| 丁香五月电影| 特黄三级又爽又粗又大| 九九99久久| 色色色色五月| www.婷婷网| 99在线小视频| 国产精品99久久久久久久女警| 六月丁香久久| 精品人妻伦| 淫视馆av三区| 五月天精品| 激情五月天开心| 一區四區歐美日韓| 亚洲综合婷婷| 丁香五月婷婷久久久| 99久久久99久久91熟女| 久狠狠狠| 综合性视频99| 五月天久久久| 蜜桃婷婷狠狠久久| 99在线资源视频| 精品久久久人妻| 亚洲色频| 五月丁香青草综合啪啪| 97操操| 丁香五月婷婷Av| 99精品视频免费观看近期发布| 97色天堂| 婷婷五月丁香六月| 天天激情夜夜干| 婷婷五月天黄色| 日本黄色精品| 五月伊人91| 天天色天天操天天射| 99久久玖玖| 婷婷中文字暮| 天天婷婷操| 色10月婷婷视频| 97在线/日本| 亚洲狠狠爱婷婷| 国产亚洲精品久久久久久郑州| 色激情五月| 免费五月婷婷网| 极品五月天| 91精品电影18T| 丁香六月啪啪啪| 六月丁香中文字幕| 亚洲蜜乳AV| 久草婷妨| 色婷婷91激情小说| 色五月婷婷在线观看第一页舔| 人妻av在线| 色999;丁香五月| 五月婷色| 超碰九色| 久久香蕉网| 91狠狠色| 五月婷婷av| 久久人人看| 久久看婷婷| 66成人网| 婷婷成人视频| 五月丁香六月婷婷色日| 三十路磁力链接| 日日干日日s| sisi热国产| 天天插天天很| 日韩五月天婷婷| 天搞天天天天天| 99re思思| 99区视频| 丁香五月婷婷成人网| 天天操天天爽天天爱| 亚洲性图一区二区三区| 狠狠狠狠狠狠狠狠草| www.五月天性.com| 五月婷在线色视频| 噜噜噜久久亚洲精品国产品91| 婷婷五月六月丁香综合| 国产资源91在线| www.99热这里只有精品| 亚洲天堂色色| 亚洲欧洲国产精品| 天天操比比| 色婷婷小说| 久久草大香蕉| 国产美女无遮挡裸体毛片A片| 禁欲电影完整版在线播放| 丰满少妇猛烈A片免费看观看 | 丁香婷婷激情| AV在线资源| 超碰在线99| 无码人妻AV久久久一区二区三区| 黄色激情五月天| 人人爱国产| 五月天丁香综合在线| 丁香五月婷婷99| 武则天精品久久| 思思热国产视频| RenRenSe在线视频网站| 日屌日日操日日色| 91免费看片| 九九伊人网| 国产av天堂| 三日本无码| 色婷婷超碰| 99噜噜噜在线播放| 丁香五月婷婷成人网| 99精品无码| 99热91| 国产亚洲精品久久久久久久久动漫| 婷婷五月综合丁香久久| 激情综合国产| 久久九九综合| 五月丁香基地| 一区视频网站| 最新高清无码专区| 91九九热| 色综合激情| 婷婷综合五月色播| 五夜丁香| 五月天婷婷久久视频| 99福利视频导航| 色婷婷免费观看| 天堂婷婷丁香六月网| 成人在线视频一区| 五月天伊人| 免费看无码视频A级| 噜噜狠狠| 台湾无码A片一区二区| 99性视频| 这里精品| 五月天影院婷婷在线观看| 丁香激情五月| 十二区无码| 色色色色热| 四色99久久| 婷婷六月激情啪啪| 大香蕉网站,大香蕉综合| 婷婷五月色| 午夜免费试看| 骚。com| 五月激情偷拍婷婷| 久99久在线| 丁香五月婷婷综合激情啪啪啪| 婷婷五月激情中文字幕| 99综合| 丁香 婷婷 亚洲 熟女| 色婷婷婷av | 丁香五月婷婷高清| 国产成人片| 99久久极情精品一区| 夜夜夜夜撸夜夜操| 婷婷五月AV| 97干视频| 激情 婷婷| 亚洲中文AV| 色婷婷久久| 97婷婷丁香| 五月亭亭网成人在线视频| 欧美3AaAa大片| 婷婷色播六月无码| 亚洲avjiujiur91| 亚洲九区| 婷婷五月丁香六月| 大香蕉久久久| 日本久久人| 91蝌蚪窝视频在线| 思思久久99热只有频精品66| 婷婷91| 99热8| 久机视频这只有精品| 丁香婷婷婷五月| 五月 婷婷 成人| 丁香五月第四色88| 亚洲情a| 热99热9| 99er精品视频| 青青草原精品久久| 丁香婷婷十月| 青青草激情网| www婷婷| 国产婷婷五月天| 人人综合久| 综合久久综合| 操人无码| 99热这里只有精品8| 97人人干| 少妇水多A片太爽了| 狠狠色噜噜狠| 精品日本视频444| 婷婷五月丁香青青草在线| 婷婷不卡基地| 色婷婷啪啪综合网| 99精品久久久久| 97干欧美| 五月激情另类| 成人九九视频| 丁香婷婷五月| 啊V视频在线观看| 99综合网| 日本女色人人| 丁香五月熟女| 大香蕉丁香五月| 怡春院久操| 久久婷婷影院| 久热最新视频| 99亚洲精品视频| 色五月大香蕉| 欧美S码亚洲码精品M码| 久久婷婷五月天丁香| 色五月97| 婷婷色中文字幕| 97色伦另类图片小说视频| 五月婷婷亞洲中文| 亚洲午夜视频| www.色婷婷.com| 骚逼视频一区2区| 丁香五月婷婷色情综合| 九九热这里有精品视频| 五月综合色播播丁香婷婷| 日本天天色| 丁香五月色情| 任你干线上免费视频有3吗| 激情视频91| 中文字幕丁香五月| 狠干综合| 深爱婷婷基地| 色了色综合| 男女99免费视频| 成人国产欧美大片一区| 五月婷综合| 欧美五月丁香啪啪响视频| 这里只有精品99www| 热99精品视频五月| 在线看的免费网站| 亚洲婷婷久久综合| 久久av电影| 亚洲情色一区| 91精品国产综合久久久不卡电影| 国产综合久久久777777| 性婷婷| 桃色五月天| 夜夜操加勒比| 五月色丁香| 丁香婷婷成人在线播放| 变态另类9| 欧洲色区| 中文字幕在线免费观看视频| 密桃激情五月天综合网| 久久99久久99久久99人受| 99只有精品9| 小视频在线亚洲| 婷婷日欧美在线观看| 婷婷五月欧美综合| 婷婷性爱影院| 亚洲色vA| 婷婷五月婷婷| 香蕉大综综综合久久| 五月婷婷福利| 综合久久婷婷| 激情小说五月天社区丁香 | 无码色| 999婷婷综合| 五月丁香婷婷基地| 第四色五月天| 九九亚洲视频| 99久久婷婷精品视频| 99re思思热久久| 五月丁香大香蕉| 依人大香蕉在钱1| 99re在线观看| 91九色成人原创视频| 色播五月网| 99久在线精品99re8热| 99九九99九九九视频精品| 久热91| 亚洲天堂碰碰婷婷| www.日本久久videos| 日本色色网站| 婷婷激情五月天桃花网| 婷婷的五月天另类视频| 婷婷五月天色| 国产片天天爽夜夜爽| 综合激情婷婷| 久热黄色| 九九热99视频| 五月丁香色婷婷久久| 思思热在线视频精品| 狠狠色噜噜狠狠狠狠狠色综合久久| 99爱在线| 成人精品在线观看| 99色这里| www.色五月| 久久久中文| 玖玖资源在线视频| 丁香五月久久| 99色综合| 色五月丁香总合网| 天天干,夜夜爽| 婷婷色五月激情| 日本人妻伦在线中文字幕| 888精品福利地址| 成 人片 黄 色 大 片| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 丁香婷婷五月六月天| 超碰精品在线| 五月综合激情久久| 婷色五月天| 天天久久66xxx| 色五月婷婷大香蕉| 亚洲99综合| 99只有这里有精品在线视频| 丁香五月先锋| 九九综合精品| 五月花成人网| 欧美色激情四射| 久久六月天| 五月丁香婷婷婷激情爱爱| 丁香花色色网| 97色碰| 日日操夜夜擼| 丁香五月另类小说| 国产老熟妇亲子乱对白| 99精品自拍| 色一区高清| 婷婷丁香六月| 欧美激情综合| 97香蕉碰碰人妻国产欧美| www.久久爱.com| 五月婷婷日本| 日韩在线一级| 日本人妻操| 人人操人人看97干| 激情五月天婷婷色色色色色色色色色色色 | A√天堂网在线| 99精品久久| 亚洲成人网站在线播放| 久久精品91视频| 五月丁香婷婷激情四射迷人| 天堂在线婷婷| 葵花AV在线| 大香蕉人人网| 狠狠久久婷| 97资源碰碰在线| 国产女人十八水真多1| 一本狠婷婷综合| 亚洲电影中文字幕| 9 1 A v久久久| 综合色视频| 亚洲免费观看高清完整版AV线| 97人妻碰碰碰碰碰久久久久久| 啪啪操操| 激情综合色婷婷啪啪六月天| 五月天婷婷影院| 夜夜噜夜夜奇| 97超碰人人操| 日本eVa一区=区视频| 超碰在线人人| 五月丁香色婷| 九月激情网| 99在线资源视频| 激情深爱五月天| 天天综合在线网| 插插干干干色| 另类亚洲视频| 91精品91久久久久77777| 26uuu精品国产| 色五月涩涩婷婷蜜桃| 国产人妻777人伦精品HD| 色色激情五月| 五月婷婷性| 激情丁香婷婷六月天| 黄网在线观看免费| 成人做爰黄A片免费看直播室男男| www.五月天色色.com| 亚洲 小说 欧美 激情 另类| 性视频久久| 五月综合色| 婷婷的99视频网站| 五月婷婷视频| 色久免费| 狠狠五月天婷婷| 人妻久久婷婷| 日韩三及成人AV片| 婷婷不干网| 9+1视频网址| 日本三级中国三级99| 五月天亚洲色| 五月婷婷婷婷婷婷艺术| 热99热| 超碰人人99| 黄色短视频在线观看| 久草婷婷网| 午夜丁香婷婷| 九九热在线视频| 婷色五月天| 丁香五婷婷| 日本色色视频| 五月天色视频| 色婷丨日丨天丨综合久久| WWW丁香五月| 久久人人看| 久久狠狠干| 97久操视频| 18久久| 五月精品99综合| 婷婷丁香六月天| 无码少妇高潮喷水A片免费| 色五月婷婷综合| 久久久婷婷| 99热偷拍| 激情六月综合| 九九久久五月天| 成人电影一区| 超碰超碰在线| 色色色五月婷婷| 久久人妻伦理| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 激情图片婷婷| 99ri国产在线| 99热这里只有精品1025| 久久丁香五月婷婷| 常久最新免费的色吊丝| 俺也高清无码高清视频| 亚洲国产成人裸舞| 天天xxxxxx天天日| 99久久综合精品五月天| 激情小说五月欧美亚洲丁香| 婷婷五月天亚洲综合| 这里精品| 99视频精品全部观看10| 超碰人人99| 久久综合影院 | 91人妻人人操| www.婷婷五月.com| www综合久久| 97色97干| 美女天天艹人人爽| 黄色五月婷婷| 99久久国产宗和精品1上映| 天天综合.com| 天天肏天天爽夜夜爽| 天天干天天操天天拍| 婷婷六月啪啪| 久久一热| 亚洲九区| 九九九九热99超碰| 日韩AV成人电影| 大香蕉九九操| 五月婷色| 成人色情五月天婷婷丁香| 激情六月婷| 99激情视频| 婷婷色影院| 香蕉久久av一区二区三区| 亚洲午夜国产成人电影VA国产欧…| 大胆伊人久久| 一起草Av| 色狠狠综合| 99热精品99| 免费无码毛片一区二区A片| www.狠狠操.com| 五月丁香婷婷激激激综合网色播| 九九这里只有精品| 婷婷久久大香蕉| 色婷婷综合久久| 五月婷婷六月丁香首页| 久热视频A.| 婷婷六月丁香欧美视频在线| 日韩狠狠色| 日韩AV免费电影在线播放| 成人VAV视频在线观看| 激情五月天黄色小说| 99热这里有精品2| 色爱综合网| 国产亚洲AV人片在线| 伊人婷婷综合| 一区二区三区四区无码| 色综合五月| 91打屁股免费看| 日本A片一区| 丁香五月综合激情久久潮喷| www.五月天婷婷| 婷婷五月天伊人| 久久9RE热视频精品98| Xx色综合| 激情综合网色播五月| 99久久66综合| 亚洲第一成人无码A片| 五月天婷婷视频30| 国产精品久久..4399| 99操网站| 亚洲精品操一操、噜一噜、摸一摸、爽 | 国产成人av在线播放| 五月天婷婷丁香社区| 婷婷激情综合| 99精品综合视频| 欧洲区自拍| 最新精品视频99| 99免费| 婷婷人妻激情| 激情五月天网页| 俺去也五月天婷婷| 91av视频在线观看最新网址| 久久99久久99精品免视看婷婷| 九月激情综合| 丁香六月亚洲| 婷婷5月天av| 5月丁香啪啪啪| 一区二区免费看| 婷婷开心激情五月激情网| 疯狂做受XXXX高潮A片动画| 九九精品综合| 思思99热| 成人短视频免费观看| 色青青视频| 深爱五月天| 久久婷婷激情| 五月丁香婷婷五月| 9色小视频在线观看| 色五月 激情婷婷 综合五月天| 狠狠做深爱婷婷久久综合一区| 六月婷欧美| 99无码黄色视频| 9精品国产在热久久| 色情五月天se| 色99色| 安息电影在线观看完整版| 人妻久久婷婷| 色噜噜五月天| 另类小说五月天激情| 性一交一乱一交A片久| 久久婷婷丁香五月一二三| 91久久婷婷| 97一区二区| 99色中文| 色五月丁香五月五月婷婷| 日本婷婷色| 99九无网码| 99久久成人| 国产avapp 网| 婷婷五月花| 五月天色婷婷综合| 天天AV导航网| 激情婷婷黄色五月| 久久婷婷伊人| 99爱在线视频|