日韩精品一区二区三区在线视频放-无码中文字幕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
返回資訊列表
色悠悠伊人网五月天| 国产综合日韩伦理| 亚洲丁香花色| 色吧5亚洲| 麻豆福利视频导航| 中文字幕黄片在线| 淫妻综合网| 中日韩免费看男女操逼大全| 人妻一区二区三区四区视频| 久久riav中文精品| 加勒比中文av| yy少妇精品久久| 激情久久久| 久久久无码精品人妻二区| 日本3级一区二区免费| 中国熟妇| 成人一区二区三区四区| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 色噜噜综合网| 久久人妻| 亚洲在线观看| 日本欧美色| 激情五月综合| 亚洲精品乱码久久久久久蜜桃麻豆| 天天操人人操骚逼网站| 97人人草| 天天色天天干天天射| 日韩91网| 毛片99-全集电影手机免费观看完整-B029AV| 国产亚州日韩欧美看片| 亚洲字幕一区二区| 九九九免费视频| 另类图片天天影视| 精品国产乱码久久久影院| 激情图片伦理国产一区二区日韩| 久久色情| 性爱动态120秒| 亚州操逼网| 国产日韩无码一区二区三区久久区| 欧美草草| 久久超碰av在线| 99成人| 欧美黑人猛交春色影视大全| 思思热国产高清| 精品v1区| 97精品视频在线播放| 一二三四日本视频高清| 亚洲全色网| 国内毛片热久久思思热| 久久久免费一级黄片| 97干在线| 久草电影网| 欧美18老人禁| 亚洲男人bt天堂| 夜夜爽爽夜夜精品视频| 好爽视频在线观看视频| 色噜噜精品一区二区三| 1024亚洲中文字幕久在线看片你懂的| 激情小说亚洲图片| 日韩性爱一级片| 精品国产片亚洲一区| 日韩精品人妻系列无码天堂| 久艹日日日| 日韩性爱电影一区| 国产不卡的视频| 少妇被c 黄 免费观看| 日韩激情啪啪| 熟妇人妻一区二区三在线| 人妻天堂网| 欧美性爱系列| 五月天精品| 户外裸露刺激视频第一区| 四季AV综合网址| 97超碰中文在线| 99自拍视频在线观看| 欧美激情久久久久| 中文字幕亚洲热播人妻| 久久精品中文字幕女同| 亚洲高清无码在线桃色| 91久久国外网| 欧美性爱系列| 国产美女高潮视频| 五月婷婷综合激情| 97在线视频观看| 久久久久日本视| 国产精品久久| 91网站视频在线观看| 涩综合导航| 日韩激情视频| 五月色综合| 大香蕉综合网| 九九综合网| 国语av最新自产拍在线观看| 久久久久99999| 搡老女人老妇女老妇老熟女怎么读| 国产区日韩区在线观看| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 性爱乱伦网址| 91丝袜| 校园春色制服丝袜中文字亚洲| 97视频免费播放| 神马视频久久久久久| av一区二区三区不卡| 久久久久密臀视频| 丁香五月影院| 亚洲AV无码国产精品久久久久| 99精品无码| 蜜臀av中字字幕网站| 免费一级黄色录像影片| 最新日本中文字幕| 国产91丝袜 在线播放| 九九拍拍精品视频在线播放 | 韩国轻伦国内自拍一区| 九九黄色视频在线观看| 中日992视频| 久操操AV电影| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 中文字幕精品一区二区精品| 95自拍视频在线观看| 91久久精品蜜臀| 女生自91网站| 中文字幕丰满子伦无码专区在线视频最新| 日韩免费三级黄片电影| 蜜桃臀av在线观看| 久久噜噜噜精品国产亚洲综合| 亚洲高清欧美总合| 神马久久网| 夜夜嗨绯色| 暴力av在线| 亚洲国产精品9999在线观看| 97情超碰色| 亚洲色系另类精品国产| 这里只有精品视频在线| 日本一卡二区在线| 日韩精品亚洲一二三| 加勒比aⅴ| 蜜臀久久99精品久久久| 天天看天天在线精品| 丝袜美腿制服人妻二区中文字幕| 视频国产成人精品日本亚洲18| 性九九九九九九| 色综合久| 欧美性色欧美| 91色s| 爱丝福利| 久久只有精品| 26uuu欧美日韩| 欧美少妇性爱网站| 激情五月丁香五月| 精品国产99| 午夜综合在线| 人妻铁牛TV| 日韩激情无码影院| 日韩免费性爱视频在线观看| 亚洲美乱| 白丝在线一区| 欧美极品| 亚洲黄色影视| 午夜福利在线合集| 天天综合官网| 日韩激情中文字幕有码| 九九久久久久久爱| 人妻人久久精品中文字幕| 少妇久久久久| 99自拍视频在线| 7月婷婷综合| 99最新日韩偷拍视频| 久久久久久亚洲Av无码精| 亚洲砖码砖专无区2023| 九九久久99| 9久久精品| 人妻人人做人人澡人人爽欧美一区| 一本一首道人妻少妇免费久久| 欧美色日本| 亚洲国产成人精品久久久国产成人一区二区 | 欧美日韩婷婷中文| www.色吧5.com| 人妻AV 中文字幕的| 亚洲少妇免费视频\| 国产毛片毛片4p懂色| 婷婷综合久久| www.婷婷六月天| 品亲网欧美品亲网| 天天操天天干一区二区 | 日本欧美中文字幕| 亚洲熟妇极品| 免费看黄片现成| 久操B网| 性色aV一区二区三区噜噜| 亚洲中文字幕一区| 国产h小视频在线观看免费| 日本天天操| 大香蕉78| WWW.加勒比人妻一区不卡.com| 久久超碰国产一区二区三区| 亚洲国成人情色好看电影| 13小男生GAY自慰脱裤子| 国模限制级电影| 在线播放成人高清免费视频| 一区,二区,三区视频| 亚洲 日韩 丝袜 熟女 变态| 日韩欧美偷拍美女视频| 日韩成人免费电影| 中文字幕狠狠玩| 色偷偷综合91久久噜噜| 国产精品免费久久久久久久久久| 老司机深夜影院18未满| 超碰碰小说97| 久久久婷婷| 亚洲日本大香蕉1| 校园春色中文字幕AV| 亚洲熟妇综合久久久久久| 亚洲偷91色| 亚洲欧美碰碰| 免费自拍三级综合| 户外裸露刺激视频第一区| 不卡啪啪视频| 极品五月天噜噜| 久久爱超碰网| 国产视频第二页| 激情黄色片在线观看| 国产女人和拘做爰视频| 欧美一区二区三区日韩| 人人妻人人操人人乐| 亚洲熟女一区| 国产精品美女视频诱惑| 国产网站在线播放| 天天干2019| 日韩精品一区,二区 九九...老司机| 久草线上视频免费看| 熟女色综合久久| 九九亚洲| 亚洲成人在线资源| 免费av高清无码| 99色在线| 亚洲九九爱| 一个色导综合| 久久av一级av少妇av高潮| 加勒比五月天| 亚洲最大黄网| 久久五月份| 在线播放中文字幕| 久久黄片国产一区二区| 九九九国产精品| 亚洲妇色| 国产免费一区二区在线A片视频| 天堂性色| 91少妇通奸网站| 大香蕉久久| 免费久久一级毛片大黄| 国产精品无码av| 大香网伊人久久综合网eew| 人妻天天夜夜爽一区二区| 亚洲欧美999| a天堂视频| 欧美性爱一区| 性猛交| 成人免费不卡在线视频| 久久亚州高清| 女色综合| 人妻久久久| 欧美激情 亚洲色图| Sekablack无码一区| 97人人模人人爽人人| 日本大香蕉| 国产又黄又爽| 狠狠躁AV| 东京热一区二区中文字幕| 91GD.COM| www.男人的天堂| 狠狠操狠狠插| 丝袜美腿制服人妻二区中文字幕| 色蜜AV| 91爱啪| 99精品网| 操逼操逼操| 亚洲 91 在线| 国产亲戚伦亲在线| 青青草久草| 久久妇| 东京热激情视频一二三区| 日本黄色天堂| 大香蕉综合| 亚州综合在线| 国产精品午夜成人福利| 欧美日产国产在线成人第一区| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 加勒比综合88| 欧美天天干| AV99热18这里只有精品| 色色五月婷婷| 青青草字幕AV| 日韩欧美中文| 另类图片五月天| 日本一区二区成人在线| 欧美在线永久天堂| 蜜桃臀久久| 成 人片 黄色大片| 欧美亚洲今日在线| 内射中出日韩在线观看视频| 亚州情色j区| 肉丝无码中文高清| 五月天精品| 干少妇视频| 啊啊啊好疼| 91色伦综合| 免费农村成人少妇人妻Aa一区二区视频| 欧美日韩激情无码专区| 激情五月天中文字幕色| 欧美宗合网| 东京太热男人的天堂久久久| 久久久男人的天堂| 久久久久久久久国产| 嗯啊抽插大香蕉网页| 婷婷五月综合在线| 91热色| 久久精品 六十路 熟女 欧美| 综合夜夜| 一区二区三区在线美女| 岛国色情视频在线观看| 日本人人操人人操| 丁香啪啪| 九九英色视频| 伊人在线大香蕉视频久久| 97操碰| 97超碰日韩| 俺去啦俺来也久久综合| 中国东北熟女老太婆内谢| 91麻豆va国产精品| 午夜久久一区二区无码中出| 使劲用力艹少妇视频一区二区| 狠狠操狠狠燥| 丰满人妻aA一区二区三区| 熟妇的味道HD中文字幕| 偷拍 精品另类 凸凹了四区| 色超碰综合| 婷婷人妻激情| 欧美成人A天堂片在线观看| 成人AV在线电影| 人妻夜夜爽天天爽麻豆三区网站| 久久久久久久久久久久欧美日| 亚91网| 豆花视频操逼网址| 大香蕉久久| 69精品人人人人| 久夜操| 一类无码操逼视频| 大香蕉AV丝袜| 蜜桃臀av一区二区| 色网在线视频观看免费| 国产九月婷婷| 国产日产欧产美韩系列麻豆免费| 国产精品第一区第一页| 91色久| yiren97| 東南亚性呦成人伦理资源在线视频| 99久久无码| 日韩中文字幕在线视频观看| 久草精品国产蜜臀| 超碰97精品在线| 亚洲伊人久久精品影院| 日韩综合无码一区久久92| 91在线精品| 九九九久千久久激情蜜桃在线看 | 97人妻色| 精品国产乱码久久久影院| 欧美一级AAAAAAA| 另类天堂| 亚洲双插| 91麻豆va国产精品| 日本高清视频在线观看黄已三辽| 中文字幕精品一区二区精| 旡码电影特区| 老熟女综合| 亚洲操人| 精品人妻一区二区蜜桃视频| 欧美亚洲日本视频久久久 | 色五月婷婷五月天| 欧美色老汉| 久久肏大逼| 91操人| 91社区拍啪人妻| 日韩av色图综合| 91人妻人人澡人人爽人人精品| 色五月婷婷五月天| 天天日天天干少妇日| 丁香六月综合激情| 加勒比色99999| 色综合尤物| 国产蜜臀在线| 97久久超碰| 一本大道青青| 丁香五月色情| 亚洲性天堂| 亚洲综合小说另类图欧美视频激情小说色五月天| 视频黄站| 思思热在线观看| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 免费亚洲国产精品久久一区| 成人性爱av.com| 韩日精品福利视频一区不卡在线免 | 亚洲的天堂网| 1769精品一区二区三区| 999国产精品999久久久久久| 97人人夜| 日日狠狠久久偷偷色综合免费| 欧美亚洲特P| 亚洲无码色| 亚洲天堂男| 久久久久成人蜜桃精品| 久操精品| 无码男人天堂| www.丁香五月| 精品国产三级av韩国在线| 粘花网06av视频| 亚洲欧洲综合成人av一区| 日本超碰97日韩精品人妻| 国产网红精品| 久久系列| 啊啊啊啊啊啊啊啊啊啊在线观看| 欧亚乱色熟女一区二区| 1204av韩国| 青椒国产97在线熟女| 超碰在线1234区| 能看的AV| 午夜无码精品免费看性色| 欧美一区二区| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 午夜福利一区二区影院| 免费男人的天堂| 国产13区| 日本精品不卡一二三区| 久久久97| 日本布卡一区二三区| 毛片17S| 最新中文字幕在线亚洲| 亚洲天天综合| 91精品在线播放| 综合干干干av久久久综合网 | av激情亚洲五月天| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 久久9精品视频| 国产AV精久久| 97爱综合| 亚洲中文字幕av | 嗯嗯啊中文字幕| 人人操人人摸人人看人人干| 啊啊啊啊啊在线| 最新三级网址| 国内毛片欧美香蕉精品| 天天综合网视频91| 丁香7月婷婷| 亚洲色图a| 日本片日本片祼观看网站在线看中文版网页在线看| 精品久久久久久无码| www.yeyecao| 中文字幕99999| 国产v片在线免费观看| 欧美性爱91| 色图综合| 天躁夜夜躁2021| 天天操人人操骚逼网站| 宗合情欲网| 蜜臀av在线播放一区二区三区| 精品亚洲国产成人精品| 亚洲成人精品在线一区| 久久精品国产Aⅴ| 97超级久久| 伊人96在线| baiduhicn.com。| 天天弄欧美| 国产乱码久久| 97资源制服丝袜| 99热自拍| 久久99网站| 精品一区二区成人动漫| 免费中文在线| 人妻日日干| 亚洲成人无码影院| 99精品欧美一区二区三区桃色| 亚洲伊人成综合成人网| 啊啊啊啊啊好多水| 九九九九精品九九九九| 天天综合网日韩| 欧亚日韩一区在线| 思思久热在线精品66| 91亚洲网| 秋霞一级鲁丝片A片| 欧美一区二区三区不卡高清视频| 99无码狠狠久久| 欧美激情久操网| 伊人热综合| 小视频国产| 蜜乳av一区二区| 亚洲成人日韩小说| 777奇米影视777四色| 麻豆国产96在线| 色欲天天综合网| 少妇超碰在线| 中文字幕制服欧美久久一区| 亚洲自拍欧美国产首页网曝 | 又黄又爽在线观看视频| 亚洲av在线免费观看| 九九久久久久久爱| 国产九区| 亚洲性刺激| 欧美97超碰| 色婷婷一区二区三区久久| 91高潮喷水美女| 强奸乱伦αv片| 国产97色在线| 操少妇很爽av| 秋霞一区二区三区四区五区六区七区| 青青伊人加勒比海| 78精品| 麻豆天美传媒毛片| 成全在线观看免费观看| 麻豆国产免费影片| 丰满少妇一区二区三区四区观看| 亚洲综合小视频小说在线观看| 97精选久久| 久久精品无码专区| 乱伦1色页| 99热在线播放| 嗯嗯啊啊好大好爽| 美女啊啊啊啊啊| 久久久久久电影| 五月丁香激情啪啪| 久9久9精品| 亚洲图片小说欧洲| 26uuu性| 国产毛片精品一区二区色欲黄A片| 无码一区二区三区四区五区六区七区八区九区十区视频 | 久久一二三四不卡| 狠狠躁伊人中文字幕| 精品久久无码午夜福利| 亚洲欧美成人在线| 啊啊啊啊啊啊啊啊啊啊在线观看| 日本二三四区| 国产高清免费不卡av| 99成人| 超碰伊人在线| 国产黄色剧情影片麻豆免费播放| 91精品伊人久久久大香线蕉91| 天天色悠悠激情| 欧美淫乱视频| 大黄片做爱的大的| 亚洲成人一二三区| 精品欧美乱码久| 97欧美性爱| 日夜干射色啊| 98人妻精品一区二区色欲| 婷婷六月色开| 超碰在线1234区| 色色网91| 亚洲综合113页| 老熟女91视频| 亚洲av无码成人精品国产| 欧洲与亚洲欧美精品中文字幕| 99999亚洲| www狠狠| 精品妇操一区二区三区| 大香蕉www.超碰| 亚洲 中文 女同| 99re超碰| 男人的天堂在线有码| 97ai亚洲| 综合色99| 成人草草视频| 夜夜草网站| 九久久精品| 国产精品婬乱一级毛片彝族| 天操老女人| 亚洲综合另类小说色区亚洲成av人片在www| 亚 欧 美 综合| 久久99九九九九6666免费观看软件| 性爱乱伦网址| 精品丰满熟妇人妻一区| 国产亚洲色婷婷久久99精品91葵花宝典 | 婷婷伊人网| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 天天插天天操天天摸天天射天天看| 国产精品分类在线观看| 男人天堂久久日韩| 亚洲无码国产精品久久| 欧美韩国你懂得在线| 在线中文字幕| 欧美国产成人在线| 久久九九视频九九视频| 久艹99| 日本中文字幕在线视频 | 欧美一区二区成人一卡| 日本免费人成视频播放120秒| 淫乱图区| 岛国成人av在线播放网址| 中文字幕熟女人妻丝袜丝| 日本午夜久久电影| 欧美在线啊啊| 91嫩草欧美| 思思热免费在线视频| 天天大干大香蕉| 欧美99热| 最新无码国产| 亚洲天堂资源| 国产刺激视频| 国产一区二区免费福利片| 天美传媒AV国产在线| 欧美精品久久久久久久久88| 欧美日韩小说| 久极品在线观看| 一级黄色视频网| 97超碰影音| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 二三四区精品| 91操碰| 精品无码一区二区三区| 久久精品人妻一区二区| 六月婷婷综合| 久久69精品久久久久久久| 九九热午夜欧亚国产视频| 激情五月综合| 美女尤物人人操| 色淫网站优优视频| 欧美亚洲美少妇一区二区| 亚洲av强奸乱伦| 日韩av在线精品观看| 男人的天堂日韩| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 中文字幕啊啊啊在线观看视频| 91久久免费视频互動交流| 大香蕉92| 欧美熟女妇同| 91大学精品激情戏| 超碰人妻天天干| 亚洲综合首页| 婷婷九月丁香| 亚洲青色欧美| 九九毛片这里只有精品| 亚洲国产高清福利视频| 精品美女久久久久| 懂色Av一区二区三区| 久神马| 毛片视频白嫩| 久久丁香| 久久欧美性爱视频| 欧美偷拍区| 国产日韩久久| 99热在线只有精品| 加勒比色综合| 亚洲情色在线| 综合亚洲情色| 高清不卡一二三区视频......| 国产亚洲禁久一区二区| 人人操人人插人人摸人人干| 国产高清自拍视频| 热99re69精品8在线播放| 怡红院亚洲怡春院av| 日韩不卡码| 嗯……啊…嗯嗯…啊…好舒服| 婷婷激情四射| 2020国产精品| 亚洲偷拍自拍在线视频| 激情小说成人日本无码一| 翔田千里爆乳巨臀无码| 曰韩中文人妻视频| 啊啊啊免费视频| 国产一区在线看| 国产在线激情| 欧美色图另类图片| 国产精品一区在线播放| 欧美高清在线| 欧美日韩国产色五月综合在线| 欧色性第一页| 久久夜精品一区二区三区| oumeizonghese,www| 宅男午夜在线视频| 亚洲图片欧美制度| 日本不卡码黄色| 精品无码一区二区| 中文字幕丝袜人妻| 欧美97在线观看| 天天日天天舔东京热| 91精片| 亚洲a色| 一本久道久久综合狠狠爱一密臀精| 一级AAA片一区二区三区| 欧美爱国产综合、| 蜜臀AV一区二区三区| 久久人妻熟女一区二区| 777超碰| 思思热一热婷婷热一热| 亚洲 欧美 另类 日韩 人妻一区| 欧美白嫩在线放| 91美女看B| 国产日产欧产美韩系列麻豆免费| 久久久久久99999国产精品| www.久久超碰| 国产9区| 日韩簧片免费看| 色黄色美女大长腿午夜视频| 亚洲色图欧美视频| 天天做天天爱| 国产夫妻一区二区| 久久99精品九九久久久婷婷| 精品一区二区久久| www欧美91| 精品蜜乳AV免费观看| 亚洲欧美日韩免费电影| 操逼网站地址| 国产极品999| 搞中出视频在线观看| 九七人妻在线| 97精品免费视频网站| 大屁股人妻女教师撅着屁股| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 欧美黑人精品一区二区| 97色色视频| 啊啊啊啊啊好大好舒服想要| 熟女久久久| 欧美高清第一页| 日韩乱伦AⅤ| 99色在线| 日韩中文字幕2020| 亚洲欧美伦综合| 国产女人高潮嗷嗷嗷叫小说 | 国产精品岛国片在线观看| 天天色综合图片| 69久久久久久久久久久久久| 国产欧美另类久久久精品课程| 日本韩国国产精品一区| 在线观看黄色电话| 成人综合视频久久| 熟女91网站| 激情网色| 久久9 9 9精品| 天天综合站| AV麻豆免费一区| 久久99网站| 一区二区国产视频在线观看| 欧美综合第一页| 欧美成人一级免费电影| 欧美一级欧美三级在线观看| 国产精品午夜福利| 国产欧美精选激情视频| 91天天日| 国语精品av| 精品人妻一区| 性色高清在线| 97亚洲精品超碰| 亚洲av影院在线观看| 夜夜高潮夜夜爽高清视频一| 日本大香蕉综合网红本杳社区| 日本三级一区二区 在线| 混色激情av| 99精品九九九九九九| 国产麻豆福利av在线播放| 蜜臀AV成人精品蜜臀AV久久| 国产精品自拍视频| 色情五月综合婷婷| 天天天堂影视日韩亚洲91| 人人做天天爱| 麻豆久久久久久久久丝袜 | 91美女视频电影| 国产亚洲精品精AV.| 性欧美另类高清| 91 天天综合| 在线看免费无码AV天堂的| 91精品婷婷国产综合久久竹菊| 中国一级αV| 九色97| 久热最新在线杭州| 婷婷综合| 欧美日韩另类激情图片| 色情五月丁香| 天天影视综合色| 在线视频日韩欧美国产| 热久久无毒不卡| 亚洲欧洲精品视频发布| 人妻丝袜肏逼| 亚洲AV无线| 超碰久久网| 操B在线观看| 日本一级不卡一二区| 欧美系列在线一区二区| 亚洲熟妇综合久久久久久| 视频在线观看免费一区二区三区| 东京热精品97综合网| 欧美精品一区二区少妇免费A片| 成人日本精品九区| 懂色中文一区二区三区| 九九热在线精品视频| 精品中文字幕第一页| 91超碰碰在线| 亚洲第一在线视频| 麻豆av一区二区| 97超碰国产亚洲精品资源| 少妇久久久久久| 色91综合网| 日本免费人成视频播放120秒| 色网综合网| 国产在线视视频有精品| 四虎AV在线播放| 久久久久日本视| 日韩中文字幕精品一区在线| 国产精品天干天干综合网麻豆 | 亚洲无码免费看| 久久久91福利姬| www五月| 9色国产精品一区粉嫩| 五月天久久婷婷亚洲| 亚洲高清无码在线桃色| 美女天天干| 天综合网| 国产宅男宅女在线观看| 日本2020一区二区| 精品国产网站| 国产高清MV操逼视频| 男人的天堂VA| 诱惑人妻欧美一区在线播放| av片在线观看免费播放| 天天日天天干天天操| 狠狠2050在线观看| 欧美综合亚洲| 亚洲s在线观看| 久久九九国产精品| 蜜臀久久99精品久久久久久无删减 | www.av在线观看| 超碰97色| 公司1区2区3区精产精| 插入综合网| 日韩欧美中文| 日本一级特级毛片视频| 色香欲天天天天综合色| 久草久热| 一区二区娱乐网站| 另类小说综合网| 97碰久久| 久艹99| 91麻豆天美传媒HD| 色色五月婷婷| 韩国成人精品久久久免费看| 99久久99久久免费精品蜜臀| 亚洲。天堂。日本在线观看| 18一区二区三区| 柠檬AV导航| 26uuu性| 搡老女人老91妇女老熟女| 日本道日本道中文字幕日本道最新日本道在线观看 | 日韩性爱播放| 尤物黄色在线观看网站| 搡老女人老熟女91| 国产日韩美女小穴视频网站不卡| 九九成人精品| 欧美 亚洲 制服 精品| 性爱乱伦一区| 无码高清国产AV| 成人午夜高潮av猛片| JuliaAnn丝袜熟女系列| …中文字幕亚洲乱,97人妻无码费视…| 宅男91视频在线播放| 久久婷婷五月综合| 欧美国产伊人久久久久| 国产日韩欧美中文在线播放| 在线午夜成人无码视频| 伊人超碰97| 4tube欧美女厕所| 粉嫩av一区二区三区四季| 四虎884a| 超碰97玖玖爱| 欧美最婬乱婬爆婬性视频 | 一区二区精品更新提醒| 久久大香蕉手机高清| 日本三级黄页| 五月婷色| 九月婷婷综合| 九九人人操| 亚洲九区| 五月婷婷无码| 婷婷五月天丁香| 亚洲激情四射| 欧美躁死她一区二区| 久久色情| 婷婷色导航| 色综合久| 天天干美少妇一区| 大香蕉亚洲中文| av中文字幕在线熟女| 日本三级韩国三级99| 一区二区 韩日AV| 啊啊啊不要好疼视频| 欧美精品四区| 精品久久久av| 亚洲综合影片| 久草综合视频| 91亚洲欧美综合高清在线| 国产吹潮女在线观看| 神马久久免费电影观看| 欧美宗合网| 校园春色五月天| 夜草网站| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 狠狠操狠狠插| 爱爱60秒免费视频| 中文字幕在线观看AV| 91欧美成人色站| 亚av顶级裸体一区二区三区四区五区| 人人搡人人肉久久精品| 亚州九九九精品视频| 97操综合| 天堂综合网| 超碰97人妻| 国产精品亚洲无码| 国产黄色av大片网站 | 亚洲系列第一页| 2024人人操人人摸| 99re6国产精品99re在线| 欧洲乱码视频| 人妻喷水| 91精品国产91久久青草| 日韩性爱1级片视频| 最新日韩黄片| 精品99999久久久久久| 伊人伊人LD| 久久精品噜噜噜成人看免欧美大片| 丰满人妻一区二区三区免费 | 国产精品96| 欧美αv.com| 伊人久久婷婷| 操B久久| 99热精品在线观看| 亚洲熟伦熟妇AV无码春色| 一区操逼日比视频| 九九九九久久久| 欧美在线视频播放| 91人妻人人澡人人爽人人精品| 乱操乱伦AV| 欧美在线播放aaaa| 97香蕉人人乳| 这里只有97精品| 精品人妻1区| 丁香五月综合| 亚洲性图91| 91欧美在线| 久久久久成人亚洲国产| 麻豆亚洲Av成人无码一区精品| 走光一区92下载| 超碰95| 7777欧美成是人在线观看| 国产精品九9| 成人情色综合网| 91人妻最真实刺激绿帽| 色婷五月天| 嫩草 我啊~嗯~在线| 百度百度日本操逼| 99碰碰| 无码高清国产AV| 亚洲情色五月天| 欧洲亚洲人妻无码久久三区四区| 国产在线视频二区| 天美AV片| 91N综合网| 精品久久久久av影院| 日日日啊啊啊| 天天92av| 久久丁香五月婷婷| 黄色一区三区| 一级黄色视频网| 人妻天天爽夜夜爽精品2| 国产人妻久久精品一区二区三区| 无码黑人精品一区二区三区三| 日韩97视频!在线| 日本媚薬中文字幕在线| 女人被添高潮免费视频| 色综合99999| 欧美一区二区三区四区综合| 欧美熟爽综合| 99re久久| 丁香五月天堂网| 五十路成人在线视频二区三区| 日日日日做夜夜夜夜无码| 97激情97激情| 肉动漫无遮挡h在线观看| 狠狠欧美| 青青久久艹| 九九热免费视频| 亚洲情色 欧美| 婷婷色五月激情| 欧美色老汉| 色综合九九| 欧美黑人与女人91| 成人网址在线观看| 久久大香蕉97| 亚洲激情av| 亚洲精品欧洲色| 淮穴色AV| 亚洲学生妹高清av| 色呦呦、国产精品| 久久国产AⅤ| 欧美激情一区二区| 午夜激情成人在线观看| 色五月第四色| 色狠狠 - 百度| 欧美最大综合网| 婷婷AV一区二区三区| 在线洲亚线| 色九九九九久| 五月婷亚洲精品天堂| 久久久久久久 九九九九九九九| 亚洲无992tv| 综合网欧| 精品无码不卡视频| 国产AV线| 色综合天天| 国产午夜在线观看| 日日黄色三级网站| 99久久久久久久久| 国产人妻久久精品一区二区三区| www.婷婷| 综合久久久久久久久91| 97操在线| 超碰在线成人| 肏逼视频日本| 欧美一区二区成人一卡| 欧美日韩岛国大片在线观看| 中文字幕乱妇免费视频| 毛片视频白嫩| 操操操日本的逼| 极品人妻少妇综合| 久久久久国产亚洲一区欧美色图日韩 | 久草热制服丝袜在线观看 | 免费一级黄色录像影片| 超碰9 7女人| 久久侵犯人妻爽爽爽| 国产美女裸体秘 永久无遮挡| 日日日色色色色色| 亚洲男人天堂2019| 久久性生大片免费观看性| 91综合国产精品| 99爱精品| 亚洲阿v天堂无码z2018| 欧美日韩中文字幕不卡| 麻豆国产av网| 欧美另类天堂| 国模限制级电影| 蜜乳AV一区| 神马午夜久久| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 91制服丝袜中文字幕| AV高清一区| 九九碰九九爱97超碰| 久久精品福利影院| 国产精品乱码久久久久久久久| 91在线限制级| 人妻中文在线| 日韩无码黄色片| 国产精品久久久久久久久久久久| 久久久久久久六六| 2001天天操| 欧美人人AAA| 久久受www免费人成| 午夜欧美精品久久久| 狠色婷婷久久一区二区三区_| 日韩精品一二三四| 亚洲成人福利电影免费| 老司机午夜精品视频| 深夜激情| 内射卯月麻衣| 东北女人被操| 亚洲 欧美 91| 97综合在线| 美女午夜福利免费视频| a级免费在线观看| 91欧| 久久久久久免费电影| 亚洲精品欧洲精品| 国色天香av| 婷婷色导航| 久精品无码av一区二免费国产在线观看 | 久久激情视频| 精国久久一区二区三区98| 欧美成不卡网| 欧美午夜精品久久久久久3D| www欧美性爱| 国产免费操逼| 国产成人99久久亚洲综合| 91天天| 99999re| 欧美丝袜中文字幕07在线| 激情四射婷婷六月天| 国产 大胆 对白| 国产乱弄免费在线视频。| 蜜臀久久久久久999| 超碰99在线观看| 精品国产片亚洲一区| 色爱三区| 欧美一区二区观看在线| 秋霞久久亚洲精品成人| 日韩乱伦AⅤ| 天天懆天天日| 国产黄色小视频网站| 伊人视频| 天天色天天干天天爱| 在线日韩日本亚洲国产| 欧美 亚洲| 91亚洲人| 亚洲欧美不卡线| 日韩大香蕉| 免费成人自拍视频在线| 综合97| 麻豆久久精品亚洲精品88| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 狠狠综合网| 中文字幕黑人大片| www.91色综合| 久无码| 综合干干干av久久久综合网| 久久免费看高潮毛片韩国| 青青草十区九区爱夜| 日韩ab网 | 日本不卡三级网在线播放| 国产日本熟女顶级一区二区三区视频 | 国产亚洲深夜激情| 无码一区二区精品视频久久久春药| 手机看片日韩人妻| 乱伦av麻豆| 无套内射性感少妇视频| 五月天婷婷影院| 观看免费区二区三区二| 欧美婷婷久久| 四虎在线观看网站| 青女偷拍网| 97超碰超碰| 欧美爱三级日韩久久| 日韩美女操b| 欧美日综合| av在线浏览| 欧美亚洲国产日本在线,久久精品国产| 秋霞福利网| 韩日欧亚a级| 日本成a人v网站在线观看| 国产女同视频在线播放| 日人妻视频91| 大香樵伊人网| 丰满搜索结果 -第18页- 久久高清无码| 96国产污污污丝袜| 久久超碰天天| 加勒比伊人| 久操网线| 精品区9| 欧美色图成人网一区二区 | 精品美女少妇一区二区三区| 成人开心网在线视频| 2019天天干| 色嗨嗨在线| 九色 人妻 大香蕉| 欧美人人天天网| 欧美综合另类| 久久激情亚洲精品无码?V| 亚州伊人色综台| 偷拍2020|