日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

iOS與Unity混合開發(fā)中的通用指令化繪制工具設計

iOS與Unity混合開發(fā)中的通用指令化繪制工具設計 在實際 iOS 與 Unity 混合工程里所謂“iOS-Unity 通用繪制工具”通常并不是一個能自動把世界坐標換算成屏幕坐標的“黑盒”而是一套從繪制數據協(xié)議、Unity 側指令封裝、iOS 原生渲染到回寫鏈路一起協(xié)同的方案。之所以需要單獨抽一套通用層是因為大多數項目在 UI 動態(tài)畫線、涂鴉標記、軌跡預覽這些場景里都會遇到同一個問題Unity 側已經采集到了點序列iOS 原生側還需要再畫一份兩端如果各自寫一套坐標換算和樣式解析等到聯(lián)調時就會出現線條偏移、觸摸事件不同步、橫豎屏旋轉后錯位等問題。這篇文章會圍繞“動態(tài)畫線”這個最小場景介紹一套可落地的通用繪制工具結構。你會看到如何定義兩端都認的 JSON 繪制指令如何在 Unity 側生成噪聲曲線、折線和涂鴉數據如何在 iOS 側用 CAShapeLayer 渲染這些指令并通過橋接方法把原生觸摸事件回傳給 Unity。工程中不涉及平臺破解、抓包或其他灰產場景只討論正規(guī)游戲、渲染工具和原生輔助功能開發(fā)。1. 先確定主線這是一套指令化繪制橋接不是大而全的畫板 SDK1.1 這種工具通常會出現在哪些業(yè)務場景里游戲內玩法或輔助編輯器常見的繪制需求大致可以分成三類玩家用觸摸筆跡做涂鴉、簽名、關卡內標記。Unity 把業(yè)務生成的路徑、連擊軌跡、噪聲波形顯示在場景層或 UI 層。iOS 原生層需要在 Unity 渲染結果之上疊加一層批注例如截圖標注、AR 引導線、回放控制工具欄。第 1 種和第 2 種在純 Unity 工程中可以用 LineRenderer 或 UGUI 動態(tài)網格完成。真正麻煩的是第 3 種。Unity 的渲染結果和 iOS 原生視圖屬于兩個不同的渲染體系Unity 使用 OpenGL ES 或 Metal 渲染到自己的屏幕區(qū)域iOS 原生視圖則基于 UIKit、Core Animation。如果業(yè)務要求原生側動態(tài)畫線而 Unity 側又要同步同一份數據最穩(wěn)妥的做法不是截屏下發(fā)而是把繪制動作本身抽象成指令讓兩端執(zhí)行同一份指令集。1.2 通用繪制工具應該只管理繪制不應該直接管理游戲對象做這類工具時容易犯的最大錯誤是試圖讓一條線條直接對應一個 GameObject 或一個 UIView然后用很重的腳本去控制生命周期。真正的通用繪制工具應當更薄接收一個繪制動作集合。將動作轉換成統(tǒng)一數據格式。把數據提交給對應渲染端。渲染端只負責畫不負責業(yè)務邏輯。這里還有一個關鍵取舍數據協(xié)議才是核心渲染實現可以替換。Unity 編輯器里可以用 UGUI 頂點臨時預覽iOS 原生里可以用 CAShapeLayer 渲染未來如果切換到 Metal 自繪也只需要替換最底層的render(payload:)方法不需要改動上層業(yè)務代碼。2. 第一層基礎設施讓 iOS 和 Unity 都理解同一份繪制指令2.1 先用一個可以擴展的 JSON envelope 承載整批操作繪制數據不能只包含單個線條的點數組。實際場景里還包含畫布 ID、畫布寬高、坐標空間、繪制顏色、線寬、透明度、是否需要清除畫布、是否允許原生接收觸摸事件等附加信息。建議先定義一個 envelope 結構用來包住整批操作。{ version: 1, canvasId: annotation_canvas, coordinateSpace: uikit_points, viewport: { width: 390, height: 844, scale: 3.0 }, actions: [ { op: stroke, pathId: noise_001, style: { strokeColor: #2277FF, strokeWidth: 4, opacity: 0.9, lineCap: round, lineJoin: round, dashPattern: [] }, points: [ { x: 20, y: 500 }, { x: 60, y: 470 }, { x: 100, y: 420 } ] }, { op: clear } ] }這段 JSON 是兩端共同約定的協(xié)議。version用來做向后兼容canvasId用來區(qū)分多個畫布coordinateSpace告訴兩端坐標原點在哪里viewport則保留了畫布邏輯尺寸方便 iOS 原生側在屏幕旋轉后做映射。actions數組用于繪畫動作每個動作都是一條獨立可執(zhí)行指令。2.2 動作類型要按“可回放、可增量追加”設計繪制工具的動作類型不需要一開始就很多但每種動作的語義必須明確不能一個op里既畫線又處理手勢。建議從最小集開始op 類型用途必需字段說明stroke繪制一條折線或曲線pathId,style,points一條路徑只對應一個 CAShapeLayerclear清空畫布無可以搭配exceptPathIds實現部分清除layerVisible隱藏或顯示某一批路徑pathId,visible用于標記線的擦除和恢復enableTouch開啟或關閉原生觸摸采集enabled避免原生層誤接管手勢touchiOS 原生把觸摸點同步給 Unityphase,point,pointerId這是反向指令在真實工程中stroke不必高頻發(fā)送整條路徑。更合適的策略是 Unity 先在業(yè)務層累積點數據用手勢結束時再把整條路徑發(fā)給 iOS。如果確實需要實時預覽也可以按幀發(fā)送增量點但增量點仍要歸屬于同一個pathId。這種設計讓回放、回滾、撤銷都變得簡單因為每個操作都是可以重放的純指令。2.3 坐標系統(tǒng)一是兩端聯(lián)調的第一道門檻iOS 的 UIKit 坐標以左上角為原點x 向右增大y 向下增大。Unity UI 的默認坐標系在某些設置下 y 軸方向并不一致如果直接使用 Unity 的屏幕像素坐標很容易出現上下顛倒。在實際項目中更推薦使用“歸一化坐標”或“邏輯點坐標”。協(xié)調方式可以這樣定iOS 全部使用 UIKit point不寫 pixel。Unity 向 iOS 發(fā)送點之前先把世界坐標或 UI 坐標換算成 iOS 畫布坐標。在 iOS 側渲染時如果畫布尺寸和 JSON 里記錄的viewport不一致使用比例換算而不是直接 draw at point。float uiKitX uiX; float uiKitY screenHeightPoints - uiY;這段換算說明的是 Unity 坐標轉 iOS 坐標時的典型處理思路。如果兩端都使用歸一化坐標就是下面這個更穩(wěn)的公式normalizedX pointX / viewportWidth normalizedY pointY / viewportHeight收到 JSON 的端再用自己的實際畫布寬高乘回去就能應對不同分辨率。3. Unity 側把繪制邏輯收斂成一個命令緩沖器3.1 C# 側不要到處直接操作 LineRenderer如果項目的業(yè)務層到處調用LineRenderer.SetPosition后面想加 iOS 原生畫布就會非常痛苦。通用繪制工具的第一步是在 C# 側做一個命令緩沖器業(yè)務層只負責向緩沖器提交點數據和樣式。public class DrawingCommandBuffer { private ListDrawingStrokeAction _strokes new ListDrawingStrokeAction(); public void BeginStroke(string pathId) { _strokes.Add(new DrawingStrokeAction { PathId pathId }); } public void AddPoint(float x, float y) { if (_strokes.Count 0) { return; } var current _strokes[_strokes.Count - 1]; current.Points.Add(new DrawingPoint { X x, Y y }); } public void SetStrokeStyle(Color32 color, float width, float opacity) { if (_strokes.Count 0) { return; } var current _strokes[_strokes.Count - 1]; current.StrokeColor ColorUtility.ToHtmlStringRGBA(color); current.StrokeWidth width; current.Opacity opacity; } public void EndStroke() { // 這里可以做點數壓縮、抽稀和校驗 } public ListDrawingStrokeAction Flush() { var result _strokes; _strokes new ListDrawingStrokeAction(); return result; } }DrawingStrokeAction和DrawingPoint都是可序列化的 DTO不依賴 UnityEngine 的JsonUtility數組序列化限制實際工程可以結合Newtonsoft.Json、System.Text.Json或 Unity 自帶序列化器處理。重點在于業(yè)務層在代碼里只看到“開始畫筆、加一個點、設置樣式、結束畫筆”不需要關心這些點最終是進了 LineRenderer 還是 CAShapeLayer。3.2 一個可運行的最小用例用 PerlinNoise 生成動態(tài)波形Mathf.PerlinNoise 經常被用于生成地形高度、云層變化、人物抖動和波形軌跡。在繪制工具里它適合用來演示“Unity 動態(tài)生成路徑點再交給原生渲染”的完整鏈路。下面這段代碼把噪聲值轉成一條連續(xù)的折線橫坐標從畫布左側均勻推進到右側。public string BuildNoiseStrokePayload( float canvasWidth, float canvasHeight, float seed, int sampleCount) { var buffer new DrawingCommandBuffer(); float startX 20f; float endX canvasWidth - 20f; float baseY canvasHeight * 0.5f; float amplitude canvasHeight * 0.2f; buffer.BeginStroke(noise_ seed.ToString(0.000)); buffer.SetStrokeStyle( new Color32(0x22, 0x77, 0xFF, 0xFF), 4f, 0.9f); for (int i 0; i sampleCount; i) { float t (float)i / sampleCount; float noiseValue Mathf.PerlinNoise(seed t * 6f, 0.5f); float x Mathf.Lerp(startX, endX, t); float y baseY (noiseValue - 0.5f) * 2f * amplitude; buffer.AddPoint(x, y); } buffer.EndStroke(); var payload DrawingPayloadBuilder.BuildJson( annotation_canvas, canvasWidth, canvasHeight, buffer.Flush()); return payload; }這段代碼的關鍵點有三個sampleCount控制點密度點太密會浪費原生渲染開銷點太疏則曲線不平滑。入門項目可以先給 200 個點。Mathf.PerlinNoise(seed t * 6f, 0.5f)的第二個參數寫固定值得到的是一條一維噪聲波形如果第二個參數也隨 t 變化得到的是一塊噪聲面。BuildJson負責把 DTO 列表轉成上一節(jié)定義的 JSON envelope不參與渲染邏輯。3.3 Unity Editor 內可以先預覽再把指令提交給原生如果工程暫時只需要在 iOS 原生側渲染那么在 Unity Editor 里調試時需要有一個輕量預覽路徑。預覽最簡單的方式是用OnDrawGizmos或 Gizmos.DrawLine不引入額外 UI 組件。#if UNITY_EDITOR private ListVector2 _previewPoints; private void OnDrawGizmosSelected() { if (_previewPoints null || _previewPoints.Count 2) { return; } Gizmos.color Color.blue; for (int i 0; i _previewPoints.Count - 1; i) { Gizmos.DrawLine( new Vector2(_previewPoints[i].x, _previewPoints[i].y), new Vector2(_previewPoints[i 1].x, _previewPoints[i 1].y)); } } #endif如果你用的是 UGUI 動態(tài)畫線也不建議一開始就直接寫自定義網格。先用少量管理類把“路徑數據”保存下來再用LineRenderer或UGUI做編輯器預覽等到數據協(xié)議穩(wěn)定后再把真正發(fā)布到 iOS 的渲染實現切到原生層。編輯器預覽和 iOS 原生渲染可以并存預覽用于快速檢查原生渲染用于真機驗證。4. iOS 原生側用 CAShapeLayer 渲染指令用 Auto Layout 管理工具欄4.1 用 Codable 解析上一節(jié)下發(fā)的 JSONiOS 原生側應當有一個專用繪制視圖不建議直接在主ViewController里寫繪制邏輯。繪制視圖負責解析 JSON、管理 CAShapeLayer、處理觸摸事件ViewController 只負責布局??梢韵扔?Codable 定義結構struct DrawingEnvelope: Codable { let version: Int let canvasId: String? let coordinateSpace: String let viewport: DrawingViewport? let actions: [DrawingNativeAction] } struct DrawingViewport: Codable { let width: CGFloat let height: CGFloat let scale: CGFloat? } struct DrawingNativeAction: Codable { let op: String let pathId: String? let style: DrawingStrokeStyle? let points: [DrawingPoint]? let visible: Bool? let enabled: Bool? let phase: String? } struct DrawingStrokeStyle: Codable { let strokeColor: String? let strokeWidth: CGFloat? let opacity: CGFloat? let lineCap: String? let lineJoin: String? let dashPattern: [CGFloat]? } struct DrawingPoint: Codable { let x: CGFloat let y: CGFloat }解析完成后通過op分發(fā)到不同處理函數。核心邏輯是把stroke動作渲染成一個CAShapeLayer。func render(envelope: DrawingEnvelope) { if let viewport envelope.viewport { self.viewport viewport } for action in envelope.actions { switch action.op { case stroke: renderStroke(action) case clear: layer.sublayers?.removeAll() case layerVisible: updateLayerVisibility(action) case enableTouch: isTouchEnabled action.enabled ?? false default: break } } }CAShapeLayer直接使用 Core Animation 渲染矢量路徑不涉及額外貼圖對于畫線工具來說比頻繁提交紋理更高效也更容易做顏色、圓角、線帽和虛線控制。4.2 繪制 stroke 時要注意坐標映射和圖層命名CAShapeLayer和UIBezierPath是 iOS 原生繪制線的常用組合。下面給出一個基礎實現思路private func renderStroke(_ action: DrawingNativeAction) { guard let points action.points, points.count 2 else { return } guard let bezierPath UIBezierPath() else { return } let firstPoint mapRenderPoint(points[0]) bezierPath.move(to: firstPoint) for point in points.dropFirst() { let nextPoint mapRenderPoint(point) bezierPath.addLine(to: nextPoint) } let shape CAShapeLayer() shape.path bezierPath.cgPath shape.fillColor UIColor.clear.cgColor shape.strokeColor color(from: action.style?.strokeColor).cgColor shape.lineWidth action.style?.strokeWidth ?? 2 shape.opacity Float(action.style?.opacity ?? 1) shape.lineCap .round shape.lineJoin .round if let dashPattern action.style?.dashPattern { shape.lineDashPattern dashPattern.map { NSNumber(value: Double($0)) } } if let pathId action.pathId { layer.addSublayer(shape) shape.name pathId } else { layer.addSublayer(shape) } } private func mapRenderPoint(_ point: DrawingPoint) - CGPoint { let logicalW viewport?.width ?? bounds.width let logicalH viewport?.height ?? bounds.height let normalizedX point.x / logicalW let normalizedY point.y / logicalH return CGPoint( x: normalizedX * bounds.width, y: normalizedY * bounds.height ) }如果下發(fā)時已經約定好 iOS 坐標是“左上角原點”這里就不需要反轉 y。反之如果 Unity 發(fā)送的是從下到上的坐標就需要在mapRenderPoint里補一句y bounds.height - y。注意不要把CAShapeLayer的frame當成業(yè)務狀態(tài)去維護。frame只決定 layer 在其父坐標系里的位置一般繪制坐標都應由path本身攜帶圖層 frame 保持和畫布對齊。4.3 使用 UIStackView 和 Auto Layout 搭建繪制工具欄繪制工程里經常需要一組顏色選擇器、畫筆寬度滑塊、撤銷按鈕。這些控件如果用 Frame 硬編碼橫豎屏切換時需要一個一個改坐標。用UIStackView配合 Auto Layout可以在一開始就避免這種布局問題。private lazy var toolbarStackView: UIStackView { let stack UIStackView() stack.axis .horizontal stack.alignment .center stack.distribution .equalSpacing stack.spacing 12 stack.translatesAutoresizingMaskIntoConstraints false return stack }() override func viewDidLoad() { super.viewDidLoad() view.addSubview(canvasView) view.addSubview(toolbarStackView) let colorButton UIButton(type: .system) colorButton.setTitle(顏色, for: .normal) let widthSlider UISlider() widthSlider.minimumValue 1 widthSlider.maximumValue 20 let clearButton UIButton(type: .system) clearButton.setTitle(清空, for: .normal) toolbarStackView.addArrangedSubview(colorButton) toolbarStackView.addArrangedSubview(widthSlider) toolbarStackView.addArrangedSubview(clearButton) NSLayoutConstraint.activate([ toolbarStackView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 16), toolbarStackView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -16), toolbarStackView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 8), canvasView.leadingAnchor.constraint(equalTo: view.leadingAnchor), canvasView.trailingAnchor.constraint(equalTo: view.trailingAnchor), canvasView.topAnchor.constraint(equalTo: toolbarStackView.bottomAnchor, constant: 8), canvasView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor) ]) }這種結構里canvasView負責整塊繪制區(qū)域工具欄stackView懸浮在上方。由于繪制工具往往需要占用比較多屏幕面積所以要讓canvasView具有明確的 leading、trailing、top、bottom 四邊約束不要只給 width 和 height。5. 端到端鏈路從 Unity 主動推指令到 iOS 原生回傳觸摸事件5.1 Unity 調用 iOS 原生方法的橋接層Unity 工程打 iOS 包后C# 可以直接調用工程里的 Objective-C/C/C 函數。前提是原生側實現了同名導出函數并且 C# 使用__Internal標記。#if UNITY_IOS !UNITY_EDITOR using System.Runtime.InteropServices; public static class DrawingNativeBridge { [DllImport(__Internal)] private static extern void UnityDrawingBridgeSend(string payload); public static void Send(string payload) { UnityDrawingBridgeSend(payload); } } #endif在 Unity 業(yè)務代碼里調用時要區(qū)分 Editor 和 iOS 真機環(huán)境。Editor 里不能直接調用__Internal函數否則會因為找不到入口導致崩潰。public void FlushToNative(string payload) { #if UNITY_IOS !UNITY_EDITOR DrawingNativeBridge.Send(payload); #else Debug.Log([Drawing] preview only, payload size payload.Length); #endif }5.2 iOS 原生導出函數和回傳 Unity原生導出的 C 函數接收到字符串后要切換到主線程再交給繪制視圖。不要在回調函數里直接操作 UIKit 對象。extern C { void UnityDrawingBridgeSend(const char *jsonString) { if (jsonString NULL) return; NSString *json [NSString stringWithUTF8String:jsonString]; dispatch_async(dispatch_get_main_queue(), ^{ [[NSNotificationCenter defaultCenter] postNotificationName:DrawingPayloadDidReceive object:json]; }); } }iOS 原生側在touchesBegan、touchesMoved、touchesEnded中采集觸摸點后可以通過UnitySendMessage回傳給 Unity 場景里的某個 GameObject。extern C { void UnityDrawingBridgeTouchEvent(const char *eventJson) { UnitySendMessage(DrawingMain, OnNativeTouchEvent, eventJson); } }C# 側對應寫一個普通方法public class DrawingMain : MonoBehaviour { public void OnNativeTouchEvent(string payload) { var touchData JsonUtility.FromJsonNativeTouchEvent(payload); // 根據 touchData.phase 處理 down、move、up } }這個回路的價值在于Unity 只負責下發(fā)熱點指令原生側負責繪圖和手勢兩端不會互相阻塞。5.3 真機驗證怎樣的輸出才算鏈路打通搭建完橋接后不要只看畫面是否出現應該按下面的順序驗證在 Unity 場景里放一個“生成噪聲線”按鈕。點擊按鈕后Unity 組包并調用FlushToNative。iOS 原生 Xcode 控制臺應輸出收到 JSON 的日志。繪制視圖上出現藍色噪聲線。在 iOS 繪圖層用手指滑動Xcode 控制臺應輸出 touch 事件。Unity Console 中應該能收到OnNativeTouchEvent回調。排查鏈路可以按下表逐步查看驗證點預期現象如果失敗優(yōu)先檢查Unity 按鈕點擊日志出現 payload 長度C# 里是否走了UNITY_IOS分支原生收到 JSONXcode 打印收到字符串導出函數名是否一致JSON 是否 NULL視圖繪制成功藍色噪聲線出現JSON 里coordinateSpace和坐標映射觸摸采集成功iOS 日志輸出觸摸點isTouchEnabled是否為 trueUnity 收到回傳Unity 日志顯示 touch phaseUnitySendMessage的對象名是否真實存在6. 這幾個坑最容易在 iOS-Unity 繪制鏈路里出現6.1 橫豎屏旋轉后線條位置錯亂很多繪制工具一開始就鎖定豎屏所以橫豎屏來回切換時才暴露出坐標系問題。CAShapeLayer的path不會自動跟隨 view 的 size 變化重新計算尤其是你已經保存了絕對坐標而不是歸一化坐標。排查方法確認 JSON 下發(fā)時是否攜帶了當時的viewport。確認mapRenderPoint是否使用當前 bounds 反算。旋轉前后如果畫布尺寸發(fā)生變化需要重新觸發(fā)整批指令的重新渲染。最穩(wěn)妥的做法是在 iOS 原生側保留最后一份DrawingEnvelope在layoutSubviews或viewDidLayoutSubviews中重新執(zhí)行一次render(envelope:)。但如果每次都新建 CAShapeLayer內存會漲得很快性能不好所以生產項目偏向于保存 path 列表在旋轉后重建。6.2 動態(tài)畫線過于頻繁最終導致卡頓或內存報警每次touchesMoved都生成新的CAShapeLayer是畫板類項目最常見的錯誤。一條手指路徑可能產生幾百個 move 回調首幀點創(chuàng)建好 layer 后后續(xù)點只需要調用UIBezierPath.addLine并更新同一個 layer 的path。不要把每個點都提交一個大 JSON。更推薦的做法是手勢 down 時創(chuàng)建一條新 stroke。move 時把點追加到內存并且定時批量渲染。up 時才把完整 stroke 發(fā)送給 Unity 或保存到回放列表。動態(tài)線回放階段則使用 CADisplayLink每幀推進有限個點。性能排查順序建議第一看 CAShapeLayer 是否過多第二看是否頻繁調用layer.path 賦值第三看是否把整條路徑 JSON 高頻發(fā)送到日志或文本控件里。6.3 iOS 真機上出現 DllNotFoundException: Unable to load DLL slua如果 Unity 工程集成了 slua 這類 Lua 橋接插件打包到 iOS 真機后控制臺可能會看到類似下面這一條DllNotFoundException: Unable to load DLL slua這條報錯不能從 C# 調用方單獨解決。它通常表示插件沒有以 iOS 支持的 native library 形式打進包里或者插件只導入了 Editor 版本。檢查方式如下查看插件的 iOS 版本目錄是否包含.a、.framework或.bundle文件。在 Unity 插件 Import Settings 中確認 Platform 勾選了 iOS。真機日志無法在 Editor 里復現所以要先確認你用 Xcode 構建的是真機包而不是模擬器包。跑一個只調用 slua 的極簡用例排除業(yè)務代碼干擾。如果輸入數據里還有 Lua 側動態(tài)生成的繪制點要注意點坐標在進入 C# 后仍然是 Lua 表里的數字必須先在 C# 側轉換成 DrawingPoint DTO再進行 JSON 序列化不能直接把 Lua 表格轉成 JSON 后混進 Native 繪制協(xié)議。6.4 渲染 API 或插件不統(tǒng)一導致構建期現象不可復現Unity 在導出 iOS Xcode 工程時渲染 API 可以在 Player Settings 里勾選。如果關閉 Auto Graphics API只留 iOS 支持的 Metal 渲染很多繪制相關的異常更容易復現。可以進入 Unity 的 Player Settings在 Other Settings 的 Rendering 部分手動確認Graphics APIs: Metal Auto Graphics API: false注意這并不會直接解決 DllNotFoundException但統(tǒng)一渲染 API 之后紋理、截圖和動態(tài)繪制相關的日志會更穩(wěn)定排查問題時也少一個變量。7. 生產環(huán)境下如何繼續(xù)演進這套通用繪制工具7.1 性能和內存優(yōu)化要從“減少指令和圖層數量”入手在開發(fā)環(huán)境跑通不代表能直接用于生產。上線或對外發(fā)布前至少要做一輪繪制性能檢查用幾百條動態(tài)線測一測 CAShapeLayer 數量對內存的影響。在性能面板統(tǒng)計 Unity 側 JSON 序列化耗時。在 iOS Instrument 里觀察 Core Animation 的 Commit 數量。如果使用小圖標、顏色點等貼圖資源Unity 側優(yōu)先考慮 Sprite Atlas 打包合圖減少小圖各自提交造成的多次內存拷貝和額外 Draw Call。下面這張表可以作為性能驗收清單項目開發(fā)環(huán)境關注點生產環(huán)境關注點JSON 格式可讀性好方便打印可壓縮頻率低于每幀多次指令數量越小越好按幀批量下發(fā)避免每個點一次調用CAShapeLayer一個 stroke 一個 layer定期清理無引用圖層或復用 path點序列完整保留方便調試增加抽稀算法保留視覺關鍵點圖標資源單圖測試Sprite Atlas 合批減少單獨加載橫豎屏鎖豎屏測試記錄最后 envelope旋轉后重放7.2 日志、監(jiān)控和回滾機制要跟著協(xié)議一起擴展通用繪制工具最大的優(yōu)勢是“指令可回放”生產環(huán)境要充分利用這個特性。用戶反饋線條丟失或錯位時你可以讓客戶端只上傳最近一段動作指令而不是上傳整張截圖。回放動作指令可以快速判斷問題是出在采集端、協(xié)議端還是渲染端。日志記錄要覆蓋四條鏈路Unity 初始化繪制指令的耗時。Unity 發(fā)送 payload 的時間點。iOS 收到 payload 和渲染完成的間隔。iOS 觸摸事件回傳給 Unity 是否成功。如果生產端需要支持撤銷、重做可以給每條動作增加一個本地自增序號或時間戳而不是用隨機字符串作為 pathId。帶有序號的指令流天然支持服務端合并和客戶端回放。7.3 給新項目團隊的落地建議第一次接入這套方案時不建議直接鋪開涂鴉、標注、AR 引導等全部場景。建議按下面這個順序做增量驗證先實現 Unity 到 iOS 的單向畫線只畫一條靜態(tài) Bezier 折線。再接入 PerlinNoise 生成動態(tài)波形驗證點序列變化。然后接入 iOS 原生觸摸回傳驗證 Unity 能收到手勢事件。最后再把顏色選擇器、線寬控制、清空、撤銷這些 UI 控件接入 UIStackView 工具欄。每一步都建立一個可運行版本再進入下一步。通用繪制工具真正要解決的不是“有沒有畫出來”而是當 Unity 側和 iOS 原生側都需要理解同一段用戶操作時能不能用同一種指令語言干凈地表達出來。只要協(xié)議穩(wěn)定、坐標系統(tǒng)一、圖層管理清晰后續(xù)再加曲線插值、橡皮擦、自定義筆刷、多端回放都是在同一個骨架上擴展而已。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久九九视频九九视频| 欧美一区二区三区大综合| 精品人妻丰满熟妇一区二区三| 麻豆人妻精品一区二区| 天堂中文日本在线观看| 精品高潮| 国产国产亚洲一二三久久| AND人妻系列| 色九月| 激情 欧美 亚洲 小说| 久久精品99| 国产精品乱人伊人网| 亚洲最大无码中文字幕网站| 亚洲福利影院一区久久| 日本欧美m v精品网站加| 亚洲春色一区二区三区| 亚洲欧美中日韩| 日韩成人人妻网站| 久久综合久色欧美综合狠狠 | 污电影在线观看| 99精品在线观看| 亚洲AO在线| 久久久免费视频18| 久热大香蕉网站| 极品欧美一区二区三区| 久久99国产综合精品女同| 亚洲高清无码在线桃色| 国产精品久久妻无码网站| 高清无码91| 九九九久久久久| 天美av在线观看| 五月天久久久| 久久亚洲av成人无码国产| 少妇厨房愉情理伦片bd在线观看| 无码一区二区精品视频久久久春药| 亚洲中文sv| 精品无码久久久久| 天天日天天操VV| 天堂在线一区二区| 天天综合网AV91| 免费视频在线观看啊啊啊啊啊| 国产亚州高清国产拍精| 国产精品一级特黄aaa大片在线观看 | 不卡超碰护士AV在线免费播放| 乱色视频中文字幕| 99精品在线播放| 日本三级网页| 美女被艹尤物视频| 国产剧情一区在线观看| 好吊色在线观看| 婷婷激情四射| 亚洲精品欧美专业| 97超碰巨乳| 美美91成人国产精品欧美精品久久久久久久 | 国人欧美精品一区二区| 亚洲AV成人无码久久精品播放| 久久久亚洲Av| 国产精品成人福利在线| HEYZO高无码国产精品227| 97人妻免费中文字幕| 97在线精品观看视频| 亚洲天堂一区二区久久| 大香蕉丝袜一级片| 色一射色一射| 日韩电影天堂视频一区二区| 成人AV在线网站| 91模特在线观看| 久久久九精品| 亚洲精品97p| 欧美成97爱| 久久久久久久9999| 欧美在线永久天堂| 国产又大又硬又长又粗| 欧美十八禁在线看| 天操天操夜操夜月操月年年操| 欧美久久久15P| 亚洲国产欧美日韩人妻日中文| 热天堂一区二区| 97香蕉人人乳| 无码二级三级| 欧美 日韩 亚洲 春色| 把腿张开老子CAO烂你| 多毛小伙内射老太婆| 婷婷亚洲五月***久久| 99精彩视频| 97干com| 男人久久精品| 国产在线播放成人免费| 精品久久久久久中文| 一区二区三区精品黑丝白丝酒店对鸡 | 成人青青草原伊人| 岛国在线一区二区三区| 国产乱码久久| 啊啊啊啊啊啊啊网址在线观看| 国产又粗又长视频| 亚洲天堂中文字| 欧美日韩国产黄色片| 国产视频一区二区免费| 91久久久久久| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 久久久无码精品人妻二区| 国产高清亚洲日韩一区| 天天日天天干天天整| 伊人91| 91+欧美| 久久大黄片| 日本在线播放不卡一区| 亚洲日本天堂| 我要看免费韩日黄片| 青娱乐导航AV| 91女优在线观看| 思思久热在线精品66| 综合久| 大香蕉92| 东亚亚洲无码高清| 粉嫩av一区二区三区四季| 成全动漫视频观看免费下载| 亚州精品一区二区三区香中文字幕在线| 91路www| 日韩欧美性爱电影在线观看| 操狠狠| 黑人性欧美| 久草免费福利在线播放| 综合熟女| 91日产桃蜜| 一区二区三区激情在线观看| 老司机免费视频在线91| 五月丁香婷婷综合| 999国产精品999久久久久久| 国产三级电影免费观看| 天操天操夜操夜月操月年年操操| 国产高清成人mv在线观看| 大香蕉免| 九九久久玖玖| 人妻加勒比东京热| 色吧91| 久久黄色网址| 天天干天天燥| 九九热国产| 婷婷综合网| 中文字幕一区二区无码成人| 91啪啪视频| 97手机日韩| 91精品黄在线观看| 中文字幕高清精品一区| 污色区网站| 粉嫩国产精品久久久| 超碰538| 色女99一级片在线观看| 日韩成人精品| 色路综合| 婷婷国产精品九区| 亚洲国产一区二区入口| 日本高清一本二本免费不卡| 五月激情综合网| 91色插| 嗯嗯嗯啊啊啊操的我好爽| 黄色免费网| 久久久久ab| 无码乱人伦中文视频| 欧美色91| 日韩一级二级在线| 欧美,日韩,亚洲视频| 欧美亚洲首页| 五月天开心网| 另类TS人妖一区二区三区| 欧美 综合 亚洲| 99久久婷婷国产综合精品草原| 97免费在线观看| 九九九久千久久激情蜜桃在线看| 日本精品第一视频在'| 亚洲玖玖爱| 国产AV人人 夜夜人人澡| 日韩亚洲中文字幕在线| 婷婷五月综合激情| 国内三级自拍小视频在线观看| 婷婷性网| 亚洲色图综合网| 日本肏逼视频在线观看| xxxx网站亚洲精品| 亚州91| 熟女高潮合集-永久久久-成人AV | 99色悠悠| 国产精品熟女丝袜一区二区| 久久久久久久久久va| 亚欧美色图| 国产天天骚| 校园春色综合色| JIZZJIZZ国产精品喷水| 青娱乐日韩无码| 97在线免费看| 歐美性天天| 欧美的性爱网站免费| 欧美肥臀在线| 成人精品视频| 九九色婷婷| 大香蕉线| 99精品在线| 久久久久9999妇女| 久久久国产精品人妻丝袜| av无码av无码专区| 久久精品欧美一区二区三区不卡| 精品人妻一区二区三区免费视频| 欧美97se| 后入合集| 久久9精品| 久久精品一区二区三区蜜桃臀| 欧美熟女妇同| 人人噜夜夜操| 亚洲日韩青青草色月| 中文字幕精品一区二区精品| 色色色色网站| 日本在线一二 | 麻豆天美AV传媒第一页| 超碰这里有精品| 涩涩久久精品| 亚洲精品国产熟女久久久| 亚洲精品 超碰| 欧美日韩国产中文超碰| 亚洲日本男人天堂网| 在线观看黄色电话| 无遮挡一级毛片视频免费的| 人妻无码后入| 欧美亚涩| 很黄很污的免费网站| 欧美色三级片91| 久久精品中文| AV天堂国产| 2017人人操,人人摸| 国内精品久久人妻性色av| 亚洲伊人久久综合97| 日本乱人伦片中文三区| 亚洲āv网址在线观看| 中文人妻av高清一区| 亚洲国产成人7777| 亚洲中文日韩欧美大香蕉视频| 久久五十路熟女人妻| 口爆吞精在线观看| 国产日比| 亚洲aw毛茸茸在线| 欧美日韩黄色片一区二区三区四区人与兽做爱| 色盈盈影院| 97超碰在线资源网站| 中国黄色特级精品一区二区三区片| 丝袜亚洲91| 91在线丝袜| 哑洲在线| 国产免费内射视频| 无码免费在线观看黄色片| 国产AAAAAABBBBB| 国产福利视频精品视频| 91精品国产麻豆国产自产在| 超碰97男人| 91精品免费| 国外91| 日本久久天堂| 国产性刺激| 国产91av在线播放| 搡老女人老91妇女熟女| 日韩A优精品在线观看| 精品一区二区亚洲国产| 99在线视频播放| 天天影视网色欲色香| 欧美78P| 91东京热男人的天堂| 五码视频在线观看| 97天天爽| 91天堂丝袜美腿| 日韩精品一二三| 欧美呦呦性爱| 蜜桃久久久久久久| 97av,com| 日韩操逼性鲍| 五月丁香啪| 国产情色第一第二页在线观看| 中文字幕乱妇免费视频| 国产高清成人mv在线观看| 日韩人妻少妇 一区二区三区| 熟女天天干| 国产一区二区在线看| 91亚洲综合在线| 秋霞曰韩R级| 亚洲综合网电影91| 欧美三级免费伊人| 4tube欧美女厕所| 亚洲国产精品9999在线观看| 天天摸,夜夜摸| 中文字幕久久亚州无码| 欧美后入| 精品精品精品| 欧美九九九| www..com操老师| 3571色综合一区二区二区| 天天天操天天天爱| 丝袜美腿制服人妻二区中文字幕| 韩日精品福利视频一区不卡在线免| 九九免费影片| 尤物黄色在线观看网站| 日本欧美色| 国产精品爆乳懂色蜜乳| 久草视频在线视频在线视频在线观看| 亚洲棕合电彰| 1000部熟女视频在线观看| 成人夜夜爽| 色五月av| 99自拍B亚洲 | 久久同城AV| 伦激情人妻另类人妻| 日韩女优中文字幕| 亚洲激情深爱文学小说网站| 亚洲日本韩国在线| 97神马久久| 岛国黄色大片网站| 超碰吊日色| 大香蕉人妻| 青草精品视频一日本久久久久网站| 欧美一区二区三区蜜桃| 人妻丰满熟妇av无码区蜜桃| 噜噜吧,噜噜色,噜噜| 久草成人影片| 亚洲丝袜色| 欧美成人免费在线观看| 日本三级韩国三级99| 国产综合久久久麻桃个| 综合97亚洲| 亚洲导航深夜福利| 一本大道青青| 久久超碰、| 曰本人妻人人澡人人夹| 亚洲精品天天影视综合网 | 青青草伊人久久| 久久久久久99AV无码免费网站| 国产日韩精品一区二区三区| 欧美1区二区三区公司| 欧美少妇性乱| 人妻少妇视频在线播放| 成人五级久久| 一本色道久久综合亚洲二区三区| 久99| 日韩免费中文字幕视频| 国产乱码久久久久久| 国产情侣自拍在线播放| 性欧美999| 成人AV素股で擦久久| 青青草在线成人视频| 久久久久久九九九九九九| 色综合九九| 日本阿v天堂在线观看| 殴美日韩m| 久久肏大逼| 欧美在线|亚洲| 啊啊啊用力在线观看| 午夜福利1区2区3区| 日韩精品影视| 中文一区二区婷婷视频| 日韩免费高清大片在线| 96久久久精品| 国产欧美一区二区| 欧美啪啪女女| 国产高清免费不卡av| 亚洲中文丝袜美腿诱惑字幕| 久久九精品| 中文字幕 码 自拍 视频 区| 国产专区第一页| 一区二区三区四区在线不卡| 人妻在线中出视频| 亚洲天堂东京热| 18禁美女裸体无遮挡啪啪| 色综91| 超碰97色色| 95人妻爽爽人人做人人澡| 亚洲免费在线探花| 久久精品国产亚洲av水密被窝| 麻豆性爱视频在线播放| 婷婷久热| 成人八戒网站| 囯戸精品高潮呻吟旡码| 熟女熟妇一区二区三区视频| www.AV有限公司一区| 亚洲精品视频二区| 九九热精品| 久久香蕉综合一本到3atv| 国产不良强奸视频免费看| 91人人操| 激情综合网一盗摄| 男人的天堂在线| 猛交交| www.人人cao| 久久久精品无码亚免费| 999国产精品999| 国产福利一区二| 日韩97| 女优大全 - 91n| 激情视频图片| 国产精品午夜福利| 国产91 丝袜在线播放 | 亚洲密乳AV| 国产一区二区在线看| 色97综合中文字幕| 亚欧高清| 丝袜AV一区二区三区| 欧美极品少妇| 久久婷婷一区| 99999久久精| 欧美天天综合网版| 久久在线观看免费视频| 日韩一区二区精彩视频| 超碰色男人操熟女| 家庭乱伦网站国产| 亚洲成人一区二区精品| 国产欧美日韩精品中文| 大香网站| 久操影视| 99re这里只有精品2| 天天夜夜久久| 超碰国产情侣自拍网| 三级片大波波| 免看60秒涩涩视频| 超碰97综合在线| 欧美高清色| 老司机深夜18禁污污网站| 69国产对白刺激| 亚洲精品白浆高清久久久久久 | 大逼色网站| 亚洲精品国产av天美传媒| 男人把坤坤插入女人的下体| 伊人 俄罗斯 a v| 亚洲天堂一二| 天天欧美97| 国内伊人久久久久久网站视频| 国产精品扒开腿做爽爽爽视频| 国产精品不卡一区二区三区av| 色婷婷国产精品一区在线观看| 老熟女乱伦一区| 一本一道波多野毛片中文在线| 国产精品白丝在线播放| 九九99精品| 后入内射蜜桃臀| 精品国产乱码久久久久久日本公司| 操人妻视频| 1000部熟女视频在线观看| 在线中文字幕极品av| 午夜男人天堂| 天综合网| 亚洲精品丝袜-不卡成人免费…… 久久久久成人蜜桃精品 | 熟妇熟女亚洲天堂网| 97视频在线免费看| 97超碰在线资源网站| 最新制服中文第一页| 91bbbbbb| 欧美久久伊人| 日本三级日本三级99| 好看的91视频| 久久九九热| 国产男女边吃边摸视频网站| 97任你吞精| 婷婷激情一区二区三区俺也去| 人妻酒店出差被中出免费在线播放| 99操逼| 口爆吞精在线观看| 97天天操天天干| 亚洲婷婷丁香在线| 精品久久青青草| 丰满少妇精品一区二区| 2017人人操,人人摸| 欧美熟女少妇| 天天天干977| 久久久国产成人一区二区三区在线 | 欧美人与动性人交a| 99热在线观看| 暴力av在线| 日本欧美一区二区三区免费| 亚洲婷婷五月天| 国产激情在线观看| 99热 按摩 日韩| 1024精品在线| 欧美激情另类一区二区| 中文字幕日韩精品一区二区三区| 69一区二区三区 | 亚洲字幕一区二区| 天天舔天天日天天射| 激情五月综合开心五月| 国产专区路线| 超碰人人操97碰| 亚洲一区二区三区麻豆传媒| 麻豆成人影音在线| 另类一区| 欧美人妖内射| 91东京热男人的天堂| WWW4虎| 中文AV制服乱伦| 色月天AV导航| h无码动漫在线观看| 天天操夜夜操| 思思热国产高清| 中文字幕精品丝袜| 欧美激情性久久久久久| jiujiujiujingpin| 粉嫩av在线一区二区| 亚洲清纯综合| 久久大香蕉| 欧美夜夜| 男人亚洲91首页在线| 欧美性爽xyxOOOO| 人人澡综合涩| 国产超碰人人操| 麻豆 美女 丝袜 人妻 中文| oumeisetu综合| 丁香五六月啪啪| 西西美女视频网| 日本午夜福利影院| 91欧洲入口| 96精品在线| 日产精品久久久一区二区| 五月婷婷激情| 高清一区AV无码| 激情五月天色色| 亚洲一区中文字幕| 午夜精品一区二区三区三上悠亚| 国产白丝AV| 在线天堂999| 欧美成人一级免费电影| 91欧美亚洲| 九九九九精品一区| 最近2019中文字幕国语免费版 | 日本 色 导航| 久久97视频| 超碰在线人妻不卡| 狠狠爱综合网| 久久久久久久| av72网| 五月天伊人| 欧美日韩国产黄色片| 亚洲精品97久久| 亚洲污污网站| 亚洲情色1区| 国内自拍 日韩激情 99| 成人小说视频在线精品欧美| 亚洲美腿丝袜香蕉影视欧美成人| 四虎国产成人精品免费一女五男| 久操热线| 免费啪啪一级视频| 浓厚中出中文字幕在线| 97av,com| 屌色在线97视频| 国产精品女久久久久av爽| 中出人妻中文字幕91在线| 国产精品经典一卡久久久 | 欧美色图亚洲色,麻豆| 99re69综合| 丰满少妇乱子伦精品无| 国产精品蜜臀久久久久无码AV| 天天操天天谢| 六六久久日韩不卡| 五月综合久久| 人人操av| 色伊人91| 精品高清一区二区三区三州| 无码人妻精品一区二区三区99不卡| 久久亚洲一区女同性恋中文字幕 | 一区二区三区男人的天堂| 1二区9| 97超碰碰碰| 曰韩精品九九无码 | 蜜臀久久在线视频| 99精品免费| 91日本在线观看| AV无码久久久精品| 亚洲色图亚洲无码强奸乱伦| 国产三级日产三级韩国三级| 色欲Av人妻精品一区二| 国产诱惑| 美女91在线观看| 亚洲码和欧洲精品激情系列| 在线啊啊啊啊| 75大香蕉| 一区二区 日韩 欧美 国产 传媒| 久久久久密| 九一屌逼| 久久蜜色情在线视频xxx免费观看| 口爆欧美91| 性欧美天天| 99re国产中文字幕| 久久久久久国产无码精品| 精品无码不卡视频| 天天躁日日躁XXXXYY| 人人贴人人摸| 日韩人妻播放| 婷婷亚洲综合| 4141514逼喷水三级片| 9 7超碰在线免费观看| 青青草色情网站视频| 日韩午夜国产| 97精品国产手机| 欧美色图小说综合| 91性感在线| 久久双插| 人人人人插| 91麻豆va国产精品| 91老司机在线视频免费观看| 美女淫穴| 精品十八在线观看| 国产午夜在线观看| 欧美日韩大香蕉| 操逼1区| 五月天开心网| 亚洲天堂自拍| 超碰98综合网| 激情小说亚洲| 激情综合二| 五月丁香啪| 婷婷五月天在线观看| 99久久网站| 亚洲av影院在线观看| 天天干一区二区| 精品久久久久,69国产成人精| 色五月首页| 不卡一区二区日本视频| 操逼逼福利视频| 婷婷五月丁香五月| 天天内射| 中文字幕日韩电影人妻| 91天美| 国产精品一区av在线| 色婷五月| 伦理弟一页| 精品九九九九九| 国产精品极品美女视频| 久久久久日本视| 人人操人人射人人干| 欧美96交| 亚洲国产婷婷在线播放| 中文字幕一区 二区三四五 区日 日骚| 亚洲熟女乱熟乱熟妇综合网二区| 中国熟妇| 国产最火爆久久国产网站网站| 最新岛国大片| 偷拍欧美激情| 亚欧成人一级片在线播放| 东北丰满熟女国产一区| 欧美熟妇视频| 亚洲久久久| 国产91美女视频| 欧美日韩午夜精品一区二区三区| 亚洲av噜噜噜噜噜噜| 久久综合婷婷| 亚洲图片 欧美电影| 啪啪资源网| 久久天天性久久伊人| 欧美图片色五月天| 国产一级操B视频| 久久亚洲不卡一区二区三区| 精品人妻一区二区免费蜜桃视频| 99热超碰在线| 视频二区美腿制服人妻欧美| 国产无码一二三区| 欧美精品,四区。五区| 又粗又长又爽在线观看| 亚洲青青草| 2020国产精品| 欧美超碰97| 超碰 另类 欧美 | 插老姨肥穴| 噜噜噜噜久久久精品免费| 天天干天天操天天干天天操| 欧美手机在线综合| 久久婷婷综合国际产色怕| 亚洲少妇免费视频\| 日本成人电影资源网| 91男人天堂网| 3p国产欧美99热| 人妻色情天天操| 亚洲另类在线观看| 土豪酒店各种姿势玩弄极品幼稚| 少妇久久久久久久久| 天天色悠悠激情| 欧美熟妇成人一区二区| 97天天弄| 天堂8在线新版官网| 青草地一本线一区二区三区| 天堂种子在线www网资源| 人人妻人人爽人人精品| 不卡在线一区,精品一区二区三区中| 中文字幕欧美日韩三级| 人妻在线大香蕉| 1769成人国产精品视频| 97日视频| 久久久一级| 国产一区二区a毛片| 青青青青青手机视频| 天天综合网1| 920日本午夜免费| 亚洲囯产精品女人久久久| 91精品国产91熟女| 麻豆 亚洲 97| 天美国产精品| 国产激情av女片自拍| 国产无码精品久久久久久| 欧美性五月| 大吊色| 激情综合五月婷婷| 国产AV久久野战精品| 亚洲美女av无码| 天美传媒精品久久视频| 诱惑人妻欧美一区在线播放| 黑丝内射一区二区三区| 亚欧国产无码精品在线| 岛国毛片在线观看免费| 91日韩| 这里都是精品| 天欧美在线| 99久在线精品99re8a| 97资源超碰| 激情第四色| 久久久免费一级黄片| 小视频国产| 大香蕉免费3| 超碰78| 亚洲日韩精品一区二区| 91痴汉| 九九热精彩视频| 九九英色视频| 丝袜内射| 97玖玖人妻| 欧美.亚洲.另类.丝袜.制服.诱惑| 无码自拍SM| 在线v中文字幕一区二区三区| 久操网视频| 日韩av不卡在线看| 午夜福利1区2区3区| 精品欧美老熟女一二区| 天天噜| 狠狠图片青青草| 亚洲 日本 国产 综合| 变态另类专区| 啊啊啊好舒服好爽啊啊啊视频| 高凊专区人人操| 99热这里是精品| 日本岛国黄色网址| 日韩性色b| 伊人久久国产免费观看视频| 丁香五月天激情综合| 欧美黄片视频在线观看免费| 日本布卡一区二三区| 亚洲、日韩、综合、另类| 五月天激情国产综合婷婷婷| 熟女乱伦A| AA级电影三区| 伊人久久在线视频观看| 免费a在线播放v| 国产中文字幕曰本毛片| 亚洲精品美女久久久久久久久| 日本亚洲熟女视频| 自拍盗摄一区| 蜜臀久久99精品久久久久久成人小说| 激情四射婷婷六月天| 天天综合网合集91| 国产精品白丝www| 日韩有码专区| A级片日韩欧美国产欧美视频精选观看 | 国产综合色精品在线观看| 国内精品嫩模A∨私拍小视频| 影音先锋少妇| 欧美,日韩,亚洲视频| 99ri视频| 日韩中文字幕熟妇人妻 | 伦激情人妻另类人妻| caoni国产亚洲av| 婷婷激情五月| 97天天做| 亚洲,欧美,综合网| 国产精品香蕉| 在线欧美69V免费观看视频| 亚洲欧美日韩夜夜| 日韩无码嘿咻黑热久| 日日AV加勒比| 密桃99999| 国产大片精久久久久久| 新97国产超碰| 欧美综合天堂| 黄色电影在线播放综合网站| 国产成人无码网站在线视频| AV天天综合| 日韩97视频| 男人天堂电影院| 可以在线观看AV的网站| 97超碰jingpin| 欲女人妻性色av| 亚洲欧美另类图片| 乱伦图一区| 中文字幕av色| 亚洲影视高清第一页| 欧美一区二区三区不卡高清视频| 欧亚乱色熟女一区二区| 精品人妻一区二区三区-国产| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 久热久| 特色a在线上| 黄色av片三级三级三级免费看| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 国产成人bd在线观看| 密臀在线免费观看| 老熟乱一区二区三区四区| 免费自拍三级综合| 亚州情色j区| 国产白丝网站| 日韩欧美中文| 99RE在线视频精品,这里只有精品| 成人青青草原伊人| 特级毛片特黄久久免费看 | 欧美少妇高潮视频| 啪啪免费| 色婷婷婷五月天激情四射| 亚洲 欧美 第一页 | 亚洲久草AV色图| 亚洲激情综合另类男同| 啪啪视频mP4| 国产欧美另类久久久精品课程| 中文字幕91页| 欧美成人色| 国产精品第一区第一页| 天天综合AV| 超碰91在线| 91久久久久免| 色九久| 五月丁香久久| 久久精品超碰| 婷婷五月天影院| 国产欧美另类久久久精品课程| www.av在线观看| 五十路成人在线视频二区三区| 亚洲一区二区三区播放在线| 97超久碰| av网站在线观看了| 人妻免费观看| 欧美日本国产日韩激情视频| 97超碰人操| 亚洲二区精品在线观看| 天欧美在线| 日韩AV一起草| 国产嫩草精品A88AV| 婷婷91| 成人性交午夜免费片| 可以免费观看的av| 欧亚日韩中文在线| 天天操女人| 久久欲| 亚州熟妇精品| 最新国产精品久久精品| 精品少妇99| 亚洲男人天堂2019| 搡老熟女免费视频| 1204金沙人妻懂旧版免费| 一线黄色免费性爱片| 伊人久日| 2020中文字幕| 日韩簧片免费看| 色悠久久久av| 91日韩在线| 欧美精品三级黄片| 熟女AV一区| 久久九色| 丁香五六月啪啪| 99re在线精品78| 婷婷久久综合久| 日本成a人v网站在线观看| 欧美性爱网97| 热九九精品| 日韩av性爱在线播放| 欧美亚洲涩涩| 久草婷婷| 日韩精品一区二区高清| 欧美色图片欧美色图| 激情综合色| 影视综合无码少妇| 加勒比综合在线| 91丝袜美女| 亚洲成人福利电影免费 | 2020视频1区2区3区| 中文字幕,人妻,日韩| 大屁股熟女一区二区三区| 激情婷婷五月天| 国产精品国产自产高清AV| 91白虎| 91五月天| 色噜噜人妻av 中文字幕| 最新中文字幕精品在线| 亚洲欧美日韩中文播放| 香蕉大久久久| 精品人妻一区二区免费蜜桃| 亚洲无码一区二区三区三州| 色综合国产在线观看| chaopen97久久| 97天天做| 亚洲欧美大| 婷婷中文网| 无码精品久久| 九九亚洲| 91大香蕉伊人| 欧美天天综合站| 中文字幕少妇色| 1024日韩| 3p国产色噜噜一区| 欧美国产精品| 精品无码欧美三级| 欧美日韩久久精品爱爱| 超碰久久精品| 香港日本韩国人妇99www.wccm20| 亚洲国产精品乱码在线观看| 天堂种子在线www网资源| 欧美日韩国产三级黄色| 欧美成年人性爱视频免费观看| 夜夜夜爽www精品视频| 97伦乱| 在线亚洲丝袜视频网站| 久久国产对白激情浪潮| 色呦呦、国产精品| 丰满人妻一区二区三区四| 激情丁香婷婷| 熟女突然公开看18禁影片| 日日日日做夜夜夜夜无码| 精品人妻免费观看| 久久精品国产亚洲AV先锋| 4虎在线观看| 久草这里只有精品| 四虎av在线| 蜜臀久久99精品久久久久电影| 九99久久| 玖玖资源视频一区二区三区| 亚洲一区制服诱惑| 日韩一级二级三级免费看完整版国语版| 国产农村妇女精品一| 色女网日韩| av大香蕉网站| 激情终合网| 亚洲一二三| 天天日美女的B| 我爱搞逼综合网| 日韩97视频| 国产精品大屁股999| 夜夜骑日日| 91中出视频| 啊啊啊啊啊啊啊啊视频| 超碰91在线| 激情熟女12P| 无码一区二区精品视频久久久春药| 91AV入口| 人人操人人操人人操人人操人人操人人人11.CM | 岛国片国产成人亚洲播放| 美女写真| 色婷婷久久| 麻豆精品久久久久久久| 夜夜嗨AV蜜臀av| 91l欧美在线| 蜜桃精品一区二区三区久在线| 久久久久久免费电影| 夫妻日逼| 91精品人妻偷情| 久操网址| 91丨九色丨大屁股| 炮色五月| 亚洲熟久久| 超碰吊日色| 黄色视频高清无码网站| 亚洲天堂一区二区久久| 亚洲aV性爱| 久久这里都是精品| 麻豆国产成人精品| 大粗鳼巴久久久久| 丰满人妻被猛烈进入中| 无码av永久免费专区网站| 久久色情| 91色图片| 亚洲成人AB| www.亚洲黄色| 激情久久av一区av二区av| http://qxhbdz.com| 九九热精彩视频| 大香久久| 岛国网址国产| 男人的天堂2019AV| 人妻少妇精品久久久| 亚洲成成熟女人综合一区二区| 久久 国产 无码| 超碰人人超在线观看| 久久超碰亚洲人| 欧美色交| 日韩精品碰碰| 欧美性猛交美女自慰91| 60秒免费视频| 欧美夜夜草视频| 狼人久草| 欧美在线色| 日本成a人v网站在线观看| 凸凹视频在线观看| 在线视频五十市| 国产精品乱码久久久久| 日韩人妻免费精品| 久久亚州高清| 国产路线专区| 久草免费在线一区二区| 久久最新视频免费观看| 男同专区一区二区三区在线| 亚洲高清国产理伦片| 久草综合京东| 91老司机视频| 强免费黄色网址| 亚洲欧洲无码一区夜| 成人五月天丁香激情综合| 一区在线国产播放| 91 综合 色| 自拍偷拍草一草| http://qxhbdz.com| 精品国产乱码久久久久久久| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 久久久禁| 免费少妇一区二区| 久久熟女人| 日本天天干天天操一区| 色人久久| 亚州五月| 亚欧国产无码精品在线| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 婷婷色色网| 国产AV线| 无码人妻丰满热妇又大又粗| 试看福利| 国产精品久久久无码aV去| 久久久久久大| 亚洲无992tv| 女人爽到高潮久久久| 国产欧美另类久久久精品课程| 国产剧情AV不卡在线观看| 亚洲www91| 国产精品成人无码a v毛片| 中文字幕少妇色| a亚洲欧美色欲| 欧美性暴力猛交XXXX | 爽爽歪在线视频| 亚洲熟女综合网| 色蜜AV| 男女啪啪网站免费视频| 精品无码一区二区| 人人看黄色视频| 日本丝袜美腿人妻九九| 亚洲 小说 欧美 激情 另类| 99re95| 成人三一级一片aaa| 怡红院亚洲怡春院av| 国产a级午夜毛片| 欧美色九九| 中文字幕二区日韩天堂| 91福利网在线观看| 亚洲欧洲无码97久久精品| 一区二区三区在线美女| 亚洲日韩熟女人妻高清在线| 久久高清欧美国产| 亚洲高潮影院| 中文字幕av色| 天天干天天燥| 欧美淫乱视频| 欧美亚洲玖玖玖| 九九视频黄色片| 欧美一区二区三区黄色影视| 国产精品久久久久久久久AV大片| 国产后入式在线观看| 麻豆天美国美国产AV| 久久久一区二区三区三州| 中文字幕第23区| av九九| 精品国产三级av韩国在线| 国产亚洲日本| 国产亚洲色婷婷久久99精品91| 日韩97| 欧美综合 站| 亚洲第一页色| 精品国产一区二区三区香蕉欧美| 九九九九九九九九九九九蜜桃| 狠狠干,狠狠操| 大香蕉乱级| 九久久精品| 草b在线| 日韩欧美俄罗斯A片| 91中文字幕| 久久骚| 色综合中文字幕不卡| 人人妻人射| 69一区二区三区 | 熟女六十路| 亚洲一区二区三区春色| 日韩精彩视频| 91女人的网站| 影音先锋国产精品| 操逼逼一区视频| 欧美综合色,www| 操逼999| 久久精品欧美一区蜜桃| 国产精品久久久久中文字幕| 不卡在线观看视频| 亚洲欧美91√| 国产精品久久久蜜臀| 久久香蕉网| 国产精品无码av| 亚洲精品一区二区精华| 人人操人人操人妻人| 精品久久久不卡一区二区| 欧美九九爱| 国产动漫操逼视频| 操操操日本的逼| 欧洲在线性爱视频| 国产欧美另类久久久精品课程| silk lablo在线观看一区二区| 成人贴图日韩欧美| 日韩另类| 人人操人人操草草| 国内精品久久人妻性色av| 国产精品96久久久久久| 亚洲脚交| 十八禁电影伊人网| 夜夜综合| 青青操在线亚洲视频观看欧美在线 | 操我啊啊啊啊啊| 九九亚洲| 国产自偷自拍一区| 高跟丝袜AV专区国产| 久操凹凸视频| 欧美性爱无码一区二区三区| AAAA级日本片免费视频| 五十路熟女人妻一区二区三区四区五| 九久久精品| 蜜臀th| 国产第11页| 欧美激情色婷婷花野真衣一区二区| 蜜桃久久久久久久| 青青草九九九九九| 狼天天狼天天大香蕉| 亚洲中文字幕97久久精品少妇| 欧美一区二区三区日韩| AV女优男人的天堂| 欧美中出1| 亚洲一本大道中文字幕无码在线| 国产亚洲深夜激情| 乱伦熟妇一区二区| 欧美岛国精品在线观看| 成·人免费午夜在线观看| 日韩欧美日韩| 成人精品无码| 五月丁香六月综合缴清无码| 国产精品视频内谢女人| av毛片aaaaa免费看| 欧美不卡在线一区二区| 岛国1区2区3区在线观看| 久久精品国产亚洲妲己影视| 国产一区免费午夜视频| 国产绿奴视频在线观看| 青椒国产97在线熟女| 性做久久久久久久| 亚洲日本韩国在线| 亚洲色图激情小说| 动漫片子网站3黄|