日韩精品一区二区三区在线视频放-无码中文字幕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
返回資訊列表
校园春色亚洲欧洲| 男女激烈网站最新| 欧美图片校园春色| 大色综合| 成人精品一区二区91毛片不卡| 亚洲成人免费中文字幕| 日韩AV熟女乱伦| 免费观看啪视频| 国产欧美一区二区| 熟妇一区,二区,三区。| 日韩啊V| 蜜臀一区二区三区在线| 久久丁香| 国产美女高潮叫床视频| 欧美专区第一页| 中文字幕丰满子伦无码专区在线视频最新| 丁香五月激情网| 长长久久免费视频| 在线观看视频91| 亚洲天堂性爱| 久操97| 日韩乱伦影音先锋| 九九碰九九爱97超碰| 欧美 传媒 麻豆 日韩 偷拍| AV在线播放网址| 操操逼视频| 大香网伊人久久综合| 99国产精品免费| 久久一区二区蜜桃| 色色五月婷| 国产视频人人网| 国产精品suv一区| 欧美色www亚洲国产阿娇要播| 午夜男人av| 超碰综合97在线| 激情开心五月天| 蜜臀99久久| nuu12国产麻豆精品| 日本免费中文一区二区三区四区| 黑人精品XXX一区一二区| 97超碰色五月| 东京热,男人的天堂| 国产热RE99久久6国产精品首| 99精品无码| 欧美精品日韩一区二区| 亚洲加勒比| 亚洲国产精品久久久男人的天堂| 人人爽天天爽| 欧美精品另类人妖xxxx| 成人三一级一片aaa| 午夜亚洲| 变态另类专区| 怡春苑东京热| 1024亚洲中文字幕久在线看片你懂的| 精品一区二区三区国产| 婷婷国产精品一区二区| 欧美激情亚洲情色| 婷婷久久五月天| 凹凸视频特色日本特黄| 人人看欧美性爱| 999综合网| 成人一二三区| 91黄射| 熟女啪啪视频| 久久久久久大| 亚洲涩涩| 国产sv美女内射| 麻豆亚洲AV成人无码久久精品| 久久精品人妻一区二区| 97 亚洲 日韩 欧美 在线| 日本有码影片下载| 999久久久九| 亚洲狼狼干综合1| 91人妻丝袜无码| 国内精品久久久久影院亚洲| 青青草日韩无码| 亚洲天堂性爱| 精品中文日韩字幕视频| 伊人宅男大香蕉| 十八禁啪啪视频| 日本操色导航| 国产精品香蕉热久久新品| 正在播放国产精品一区| 91av一区二区在线观看| 亚洲欧美日韩精品久久久一区二区| a级成人毛片免费视频高清| 三级日本一区二区三区| 国产成人亚洲精品无码最新在线| 五月丁香啪啪网| a片偷拍视频| 中文字幕jul-617人妻熟女| 91狠狠综合久久久久久| 啊操爽品善一区二区三区| 一道本东京热加勒比一区二区三区| 亚洲美女av无码| 国产亚洲精品美女久久久久久2021| 亚州男人天堂| 日韩特一级久久| 亚洲成人av电影在线| 黄总AV色图| 韩国黄片aaaa| 精品免费一区| 啊啊啊啊啊舒服| 12一15性XXXX粉嫩国产| 高跟丝袜AV专区国产| 亚州高清AV| 嗯嗯啊啊用力视频免费| 五月天色图| 日本黄色XXX| 色五月婷婷色| 女人喷水视频在线观看| 日韩精品-原创伙伴| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 久久9精品网站| 色蜜AV| 国产精品久久泡妞网站| 黄片直播三级黄片两女一男| 97色97干| 国产高清视频无码在线| 久久久久久久六六| 丁香五月偷拍| 久久,精品一二三| 在线岛国新天堂8| 亚洲黄色电影| 亚洲国产成人7777| 日韩成人性日韩成人性爱视频在线免费观看 | 黄久在线| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 91亚洲综合在线| 亚州欧美综合| h无码动漫在线观看| 国产精品白领在线观看| 国产懂色精品国产av| 国产在线综合福利网站| 国产人妖的免费的视频| 久久久久久久亚洲Av无码| 亚洲av成人精品一区| 日韩无限资源| 日韩有码一区三区| 婷婷在线精品| AV中文在线可看| 国产日韩欧美三级片| 欧美日韩 强奸乱伦| 搡老女人老妇女AAA一VU麻豆| 久久男人精品| 日本女人久久久| 美女91AV| 岛国毛片手机在线观看| 国产白丝av| 日本一区视频在线观看| 人妻久久久久久久久久久久久久久 | 新婚人妻扶着粗大强行坐下| 国内亚洲高清无码| 欧美在线视频观看一二三四区高清| 无码二级三级| 亚洲AV人人澡人人爱| 性猛交| 亚洲国产成人精品无码专区| 亚洲性综合9| 91网站18在线| 国产午夜在线观看| 五月天久久久| 性欧美| 亚洲最新中文字幕免费| 美女在线H91| 亚州黄站| 久久精品亚洲成a人天堂| 按摩中文字幕| 久久东京热久久| 岛园激情| 98福利在线视频| 日本熟女不卡视频| 人妻社区男人天堂| 国产乱码精品久久久久久| 久久香蕉国产线看观看亚洲女人| 在线观看色视频| 大香伊人在线一区| 国产精品原创巨作?v网站| 亚洲综合97中文网| 易易A毛视频| 精品国产丝袜一区二区三区乱码| a男人的天堂| 五十路六十路七十路熟婆| 亚洲青青草| 97视频新免费| 一区二区三区免费岛国片| 9999免费精彩视频| 伊人991| 欧美亚性天堂| CCYY草草影院地址入口| 碰超人人在线一区二区三区| 26uuu国产成人综合| 在线五区| 中文字幕 码 自拍 视频 区| 女人天堂av在线播放| 亚洲 欧美 另类 综合 偷拍| 色欲无码人妻日韩欧美精品| www.人人摸在线视频| 欧美少妇大量自拍视频在线观看| 国产丝袜欧美在线视频| 久久视频,这里只有精品| 蜜桃av综合网发布| 超碰97网站| 九九九九免费高| 国产日韩无码一区二区三区久久区| 亚洲欧美日韩国产丝袜自拍中文| 天综合网| 亚洲AV无码成人精品久久| 欧美亚洲手机在线| 欧美性天天影视| a v网站在线播放| 国产成人久久精品蜜臀| 神马久久久久久久久久| 国产原创剧情在线丝袜| 人妻中文字幕日韩电影| 亚洲AV噜噜狠狠网址蜜桃动漫| 九九热三级片| 老熟女综合网| 99夜夜操| 在线日韩日本亚洲国产| 干干干天天| 青青草一区二区高清无码视频| 超碰性爱97| 丁香五月激情综合国产| 日韩精品一区的| 欧美呦呦性爱| 亚欧操逼片在线观看 | 乱伦系列一区二区| 天堂无码精品国产久| 色与欲影视| 亚洲欧美激情另类色图| 婷婷久草| 九九九影院| 久久AV色| 欲女人妻性色av| 欧美日韩国产人人| 91丨精品丨国产丨丝袜| 蜜伊人色综合97| 九九九综合精品| 五月天激情小说| 后入式五六区| 久久偷偷色综合蜜桃| 亚洲日韩电影| 国产精品青草综合久久| 中文字幕乱码人妻一区二区三区,99精品| 97bbn| 日本中文熟女视频| 中文字暮97| 欧美96在线|欧| 欧美刺激色黄片免费看| 欧美亚洲尤物久久| 久久综合日韩亚洲欧美| 超碰2017| 好吊色在线观看| 大香蕉综合网| 亚洲国产剧情少妇激情| 欧美亚洲天堂| 熟妇亚洲一区二区三区| 蜜臀视频网站| 丝袜制服字幕在线| 亚洲国产成人精品久久久国产成人一区二区 | 久久手机视直播| 91亚洲影视| 大香交伊人网| 99精品免费| 91麻豆天美传媒HD| 新精精品久久精品| 青娱乐老司机视频| 日韩乱伦视频| 久久久性| 日本不卡二三区| 超碰爽人妻熟女Av| 99精品在线播放| 日本久久久久久久久久| 亚洲伊人成综合成人网| 成人女人国产| 欧美午夜熟妇黑人精品91| 亚州中文字幕超碰97| 国产深喉视频一区二区| 久久婷婷伊人| 超碰 国产熟女精品一区| 91美女視頻| 少妇人妻好深太紧了vr91| 色官网在线| chaopen97久久| 啊啊啊啊好爽好舒服一区二区易域| 婷婷中文网| 欧美色天堂网在线视频| 亚洲精品影视老司机| 亚洲高清无码免费观看视频| 天天日天天干天天摸天天操| 国产女人操逼视频| 久9综合在线| 色婷亚洲五月在线观看| 一起草三级AV电影在线观看| 九X超碰| 无码高清国产AV| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 欧美国产精品久久九九| 亚洲综合色男人网| 日本操逼视频免费| 欧洲中文字幕| A片A5445444| 麻豆国产av网| 日韩性爱播放| 久久久久久亚洲中文| 亚洲视频,小说| 久久久精品视频免费观看| 婷婷丁香人妻 | 亚洲天堂东京热| 国产真乱mangent| 久久99干一本高清| 麻豆AV短剧| 五月丁香亭亭| 国产东北女人在线视频| av一区二区三区不卡| 国产性爱欧美性爱在线| 污到发麻的视频 国产| 另类 日韩 熟女| 69av一区二区三区| 福利视频合集| 色九久| 精品久操| 热G综合热G中文| 日欧毛片久久| 加勒比海成人视频网 | 亚州九九九精品视频| 2019天天干天天操| 精品视频免费在线一区| 日本欧美一区二区三区免费| 天天色综亚洲91污| 欧美极度丰满熟妇hd| 狠狠操夜夜| 欧美成97爱| 久久一区无码| 国产超碰| 91色艳| 偷拍伦理视频| 夜夜高潮夜夜爽高清视频一| 亚洲中文字幕噜噜噜久久久| 无码91| 欧美性暴力| 亚洲 欧美 第一页| 麻豆人妻少妇在线免费观看| 一区在线国产播放| 欧美精品久久96人妻无码| 综合色拍| 嗯啊啊啊轻点视频| 国产精品熟女乱伦| 性久久| 超碰成人人人爽人人爽| 欧美肥臀在线| 激情文学 亚洲图片| 骚货人妻偷情自拍在线视频| 日韩成人性爱电影在线播放| 亚洲色欲天天天堂色欲网女| 狠狠色伊人亚洲综合网站色| 久久岛国| 天天干嫩逼网| 9 1果冻精品视频| 18禁久极品美女久久哦哟呀!| 五月激情小说| 探花一区在线| 日本女优在线视频福利| 日逼视频日本| 人妻无一区二区三区| 中文字幕青青草| 夜夜免费视频| 77国产精品| 青青草国产亚洲精品久久| 狠狠综合网| 国产宅男宅女在线观看| 秋霞成人一级在线观看| 100啪啪视频大全| 在线综合网| 99999亚洲| 午夜福利合集| 神马麻豆福利院| 噜噜噜亚洲精| 青草一区二区| 91精品丝袜久久久久久| 97色操| 久久丝袜| 凹凸精品熟女在线观看| 婷婷涩嫩草鲁丝久久午夜精品| 亚洲少妇自拍中文字幕懂色| 日韩AV噜噜噜一区二区三区四区| 人妻精品一区一区三区蜜桃91| 91精品久久久久久77777| 天天摸天天舔天天操| 九九九九九用不成了| 日本人妻天堂网站在线播放| 国产第11页| 日韩中文字幕宗合在线| 老鸭窝日丰县女人| 欧美日韩久久精品爱爱| 九九九九久久久久| 操b在线观看| 国产精品一区二区亚洲人成毛片| 一区二区三区黄片免费观看| 免费作爱一级视频| 日本一级一级一级一级| 亚洲精品天天影视综合网 | 99色日| 久久99草| 999热日韩精品| 97久久久久| yw尤物av无码点击进入麻豆| 偷拍亚洲熟女视频播放| 国产视频不卡在线观看| 日本三级中国三级99人妇网站| 亚洲美乱| 亚洲一二三| 综合亚州欧美| 强奸乱伦AV一天堂网| 三级特黄60分钟播放| 操逼操操操91| 97国产超湿| 狠色婷婷久久一区二区三区_| 久久久一二三四区| 欧洲亚洲国产综合在线| 综合网色| 91日日| 国产精品动态一区二区三区四四| 亚洲色图 欧美| 亚洲一区二区三区中文字幕| 97色碰| 精品九九九九九九九九九| 天天天做天天天爱天天天爽| 中日韩免费看男女操逼大全| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 久久国产在线一区二区| 一本一道vs波多野结衣| 亚洲男人的天堂一区二区| 久久久性少妇| 激情国产乱伦Av| 六六久久日韩不卡| 国产精品久久久久久夜夜夜夜| 中文乱码字幕观看| 欧美成人黄网色网站| 国产欧美伊人| 国产又粗又长又大的视频| 嫩草在线视频| 好淫网一二三视区| 欧美中日韩XXXX| 看日韩操逼| 啊啊啊啊啊在线视频| 五月天伊人网| 97综合在线| 嗯,啊。舔我逼| 日本羞羞的视频在线播放| 亚洲黄色影视| 激情婷婷黑人91| 免费精品中文字幕| 99只有精品| 人人人摸人人| 大香蕉欧美伊| 99精品国产户外露出| 日韩三级一区| 免费视频一二三区| 色五月婷婷麻豆在| 国产精品久久泡妞网站| 国产精品亚洲美女久久久久| 久草久日| 亚洲超碰AV| 啊啊啊啊啊啊啊啊啊啊在线观看| 日韩无码a片| 中文字幕免费观看| 国产亚洲精品无码三区| 黄网站黄视频网站进入口| 视频不卡中文字幕| 炮色五月| 少妇高潮流水av免费| 91在线限制级| 成人免费看吃奶视频网站| 91久久久视| 国产免a费看黄片在线| 2019天天操天天爽天天拍| 国产精品一区二区手机看片| 神马久久久久久久久久| 亚洲最大成人a毛毛片| 欧美熟女丝袜| 激情专区综合| 啊啊啊免费视频| 你操综合| 国产特级毛片AAAAAA高潮流水| av麻豆啪啪| 乱伦AVxx| 火箭成精品视频884必出精品| 殴美性色a级欧美| CCYY草草影院地址入口| 99久久9| 婷婷综合激情| 操国产高清| 91九九九小逼| 90后性网国产欧美| 日本熟女不卡视频| 日韩国产九九精品一区二区三区毛片| 亚洲AV成人无码一区二区三区在线观看| 婷婷五月天色网| 狠狠干狠狠色| 永久电影三级在线观看| A啊啊在线观看| 国产三级中文有码在线视频| 天天肏夜夜肏| 久久蜜桃综合网| 99re国产精品视频| 熟女熟妇一区二区三区视频| 久久婷婷一区二| 国产无码三级视频在线观看| 亚洲性少妇| a在线观看| 四虎国产精品永久在线囯在线| 大香蕉男人的天堂| 极品白嫩福利在线| 亚洲黄色网址视频| 丰满人妻一区二区三区免费| 精品然女一区二区| 成视频在线观看免费看| 日本国产亚洲一区在线观看| 亚洲AV不卡在线观看| 69人妻精品一区二区绯色| 免费看片黄| 日韩毛片9| 欧洲中文字幕| 五月婷婷深深爱| 成人乱人伦一区二区| 综合少妇网| 91五月天| 麻豆黄色五月天| 99热精品国产| 成人资源中文字幕在线观看天天| 日韩久久.一级黄色片| 美女啊啊啊啊啊| 色偷偷超碰亚洲| 国产91精品久久久久久久网曝门| 99视频只有精品| 久久久久久国产精品免费网站| 毛片久久| 操逼操逼操| 91性网| 蜜桃午夜视频一区二区| 91AV天美在线视频| 97亚洲欧美日韩| 中文一区二区婷婷视频| 蜜臀av在线播放一区二区三区| 日韩人妻中文视频| 日韩色欲久久一二三四区| 大屁股人妻女教师撅着屁股| 老熟妇乱轮| 国产精品久久久亚洲第一牛牛_在线观看 | 精品国产一区二区三区久久久蜜臀| 人妻-91porn| 国产第25页在线观看| 两女互慰AV高潮喷水在线观看| 九九无码| 久久久久久久强迫| 成人五月天丁香激情综合| 精品九九九九九九| www国产无码| 亚洲欧美另类激情小说| 操国产高清| 99re免费| 色哟哟AⅤ| 日本精品中文字幕视频| 18禁无码永久免费无限制| 一区二区乱码福利| 亚洲A曰本VA欧美VA视频| 久久大黄片| 国内毛片欧美香蕉精品| 无码久久国产| 无码天天操| 国产精品无码av在线| 亚洲最大成人a毛毛片| av在线一区二区三区| 免费A V在线播放| 2020国产精品| 夜夜嗨一区二区| 啊啊啊 在线观看| 乱理日韩中文| 青青操视频在线| 亚洲欧美变态| 91老熟妇| 中文字幕精品一区二区精| 肉嘟嘟www视频在线观看高清| 抽插无码高清一区| 97超碰碰碰| 99啪啪| 天堂av最新电影网| 97这里只有精品| 91人精品妻入口| 日韩AV无码中文一区二区| 九九碰九九爱97超碰| 五月天黄色av| 亚洲麻豆18发?| 97视频免费播放| 日本性爱欧美性爱| 婷婷五月天成人网| 91艹逼精品| 日韩精品三级| 久久亚州精品成人Av无| 中国亚洲呦女专区| 亚洲影院小综合| av影院十区| 手机在线免费看的av| 免费看欧美美女黄色大片 | 天天亚洲| 天天视频黄网站| 97亚洲性爱| 精品无码产区一区二| 91w欧美| 中日韩熟女| 亚洲18禁| AV有码在线| 成人三一级一片aaa| 婷婷日韩一区二区三区中文字幕在线| 很很很很操| av激情亚洲五月天| 国产原创剧情在线丝袜| 91网站18在线| 操逼A∨| 99∨VTV| 一区二区三区四区在线不卡| 人人看人人插| 久久免费中文字幕在线观看| 人妻91少妇| 伊人黄色视频免费观看| 日韩av色图| 男女猛烈无遮掩视频免费软件| 久久婷婷五月天| 中文日韩欧美熟| 最新日日夜夜天天干干| 欧美亚男人的天堂| 2024黄色视频| 免费看美国人人爽,人人操| 97超碰欧美手机| 99热91| 伊人国产AV| 亚洲偷拍自拍在线视频| 亚洲精品黑丝| 久久精品国产亚洲AV无码电影 | 欧美一级A片不卡视频。| 亚洲人在线成线成人| 97精品网| 少妇诱惑视频| 欧美成人A√在线一区二区| 欧美三级一级| 国产精品久久久久久亚洲色欲| 97 亚洲 日韩 欧美 在线| 激情小说亚洲| 精品人妻一区二区免费蜜桃| 秋霞操逼片| 久久久久久波多野吉衣高潮| 亚洲天堂一区二区久久| 小骚逼被操的爽不爽| 在线免费观看日韩一区| 亚洲精品97中文字幕| 成人免费福利在线观看| 97ai亚洲| 欧洲天天在线| 手机看片日韩人妻| 色亚州人久干视频在线观看免费版 | 992这里有精品| 久久91| 91av天美性媒精品视频| 亚洲精品xxx| 涩亚洲欧洲| 亚洲色色色| av黄图片在线观看| 久久伊人青青草| 日本性爱少妇| 91亚洲人| 亚洲欧美setu| 强奸a片网| 免费试看60秒| 大香蕉欧美国产日韩高潮| 国产精品久久久久久 百度| 亚洲色图欧美色18直播在线| 97超碰碰碰| 思思热久久成人| 人妻少妇精品久久久久久| 厕所偷拍在线| 国产小u女在线观看| 92一区二区| 天天天天天超碰| 亚洲色色色| 国产日韩欧美中文在线播放| 蜜臀久久99精品久久久久久成人小说 | 欧美一级三级| 可以在线观看的黄色网址| 九九热只有精品| 你草精品在线视频| 国内外色色色色色成人视频| 超碰无码加勒比| 超碰人妻久久| 麻豆天美在线喷水AV| 天美麻豆精品视频99| 草草影院最新网址| 日本成人在线不卡一区二区三区| 碰人碰碰人人开房人肉| 国产精品熟女AV中文字幕在线播放| 国人欧美精品一区二区| 亚洲一区在线观看欧洲| 99色热| 色综合20p| 九九久久久九九| 亚洲综合成人网| 操逼逼中文字幕| 色波多| 亚洲男人在线观看天堂| 日韩精彩视频| 日韩精品作爱导航| 欧洲中文字幕| 九九热九九热| 思思99热| 超碰在线国产| 国产精品久久久久无码AV会牛| 一级性爱视频免费观看| 国产97免费视频| 嗯~啊~轻一点 视频| 欧美 综合 亚洲| 麻豆人妻少妇在线免费观看| www老逼91| 先锋精品av色鲁| 国产热RE99久久6国产精品首| av天堂天堂av日韩| 国产成人精品必看 | 偷拍超碰| 狠插 制服 自拍| 亚州操操穴网| 天天操av懂色| 毛片中心9视频99| 欧美色图天堂在线| 中亚精品极乱| 中文字幕二区日韩天堂| 婷婷五月色| 人人操av| 日本一区三级韩国| 淫淫总合网| 熟女丰满人妻一区| 另类综合另类| 蜜臀AV一区二区三区激情综合| 天天91~综合入口| 久草成人福利导航| 少妇国产不卡| 日日骚 av| 91欧美另类| 伦理日韩国产久久| 国产夫妻性生活视频| 一本色道久久综合亚洲二区三区| 久草毛片| 亚洲风情在线观看| 亚洲无码 国产无码| A片大香蕉在线| 黄色激情电影在线观看| 欧美性爱1080p| 亚洲精品国产精品乱码不99| 一区二区日韩欧美久久| 久久大香蕉手机高清| 亚洲中文字幕乱码无码一区二区 | 亚洲九九九九| 亚洲国产一区二区日韩专区| 粉嫩av在线一区二区| 色噜噜婷婷| 区日韩亚洲乱码av电影| 91人妻视频| 久湿久久| 亚洲天堂男人天堂网| 熟妇综合一区二区三区| 国模不卡| 国产亚洲人妻综合日韩 久久| julia在线观看久久| 激情四射五月天| 怡红院久久老司机| 乱抡国产91| 国产日本久久免费精品| 青青青国产| 91激情综合| 啊啊啊啊啊啊在线| 欧美aa一级片| 婷婷激情啪啪| 久久综合av| 天天综合网~91| 日本免费中文字幕在线| 婷婷五月丁香五月| 精品一区二区三区四区女| 天天干夜夜| 亚洲影院无码在线| 91性高潮久久久久久久久| 欧美 亚洲 大香| 超碰97人人乐| 91搞逼视频| 国产av尤物| 亚州国产成人精品女人久久| www国产无码| 成人午夜视频免费播放| 色九九九综合| 亚洲欧美日韩中文播放| 日本黄 R色 成 人网站| 国产成人主播| 啪啪综合网| 色爱国产| 日本久久999| A级国产欧美激情在线| 国产久久久久久久久一区二区 | 欧美性爱十八禁| AV天堂电影网| 欧美天天干| 中文字幕av乱伦| 亚洲成人妻日韩在线| 天天草天天日| 九九无码| 夜夜嗨一区二区三区直播内容| 国内毛片婷婷六月色| 日韩二三区| 亚洲天堂久久久久久粉红视频| 99ri在线视频| 91亚洲狠狠色| 中国一区二区亚洲人妻| 一直超碰| 国产精品亚洲一级av第二区| 一区二区三区四区姦女| 亚洲国产综合图区中文字幕 | 啊啊啊爽爽| 激情五月天色色| 青青草五月份天| 亚洲美女自拍偷拍视频| 激情五月天校园春色网| 一本久道在线综合视频| 久久精品国产99国产精品亚洲| 欧美一区二区男人天堂| 人妻夜夜爽天天爽麻豆三区网站| 欧美色图 色综合图| 欧美综合自拍成人自拍第二十页| 亚洲小说视频| 国产精品交换一区二区| 国产99热| 色综合中文字幕不卡| A 天堂| 97大色网| 综合五月婷婷亚洲一区| 久九9精品| 久久精品国产免费观看99| 手机av亚洲丝袜美腿日韩第一页二页| 黄色网址在线免费观看| 日韩欧美蜜桃精品久久中文字幕久久| 日韩成人大片一区二区| 在线播放欧洲免费av| 色噜噜狠狠色综合日日| 亚洲国产熟妇综合色专区| 青青11操操操操操操操操| 日本成a人v网站在线观看| 色女99一级片在线观看| 7777奇米影视久久| 另类专区加勒比| 国产无马av| 国产精品熟女一区二区三区| 熟妇一区二区三区| 萌白酱自拍视频| 亚洲,欧美,综合网| 91neishe| 丁香六月激情| 欧美日韩小说| 91在线免费观看处女| 亚洲天堂一区二区久久| 日本不卡免费二区| 国产伦精品免编号公布| 精品久久久久久中文字幕三区| 手机av亚洲丝袜美腿日韩第一页二页| a在线观看| A级在线视频| 超碰在97| 精品久久久九九九孕妇| 国产亚洲精品美女久久久| 精品久操| 国产精品久久久久绯色| 另类 日韩 熟女| 亚州男人天堂| 自拍亚洲综合| 久操九九九九| 亚洲AV无线| 伊人操| 一区二区亚州激情久婷婷欧美| 天天爱天天操| 国产亚洲精品美女久久久久久2021| 又黄又硬又粗又长国产视频| 久插不卡| 天美精品av| 国产69精品久久久久99尤物| 久久狠狠色噜噜狠狠狠狠97| 97视频在线视频| 性色乱AV一区二区| 国产吞精a级片激情电影| 无码精品久久久久久亚洲| 亚洲女人毛茸茸91| 九九久久国产精品| 密桃99999| 日本色色的视频| 精品无码久久久久久久杏吧| 欧美色图99| 男人的亚洲天堂| 丁香五月激情综合| 91超级碰| 久湿久久 | 亚洲影院成人| 婷色五月| 欧美色www亚洲国产阿娇要播| 精品女人999| 亚洲一区二区三区在线激情| 99精彩视频| 一级岛国大片| 无码精品久久久天天影视| 亚洲日韩天堂| 欧美色图私拍91| 98一区二区精品| 久久久9品一区二区三区| 国产午夜精品在线观看| 欧美日韩国第一区| 亚洲国产欧美中文永久| 欧美大香蕉同搞| 搡老人老9丨女老熟人| 久久精品 六十路 熟女 欧美| 精品无码人妻一区二区免费蜜桃| 国产精品久久久无码AV网站| 内射老妇BBWX0C0CK| 中文字幕后石码三区四区| 亚洲色图欧美色18直播在线| 久久成人精品| 天天在线91| 亚洲大色鬼| 色呦色呦色精品| 亚洲色悠悠久久88| 91精品国久久久久久无码| 少妇极品熟妇人妻无码| 精品视频97| 日日干夜夜操视频h| 91 丝袜在线| 亚洲色图欧美色图制服丝袜| 欧美成不卡网| 人人操天天爽| 国产亚卅97| 欧美老妇女内射网址| 九九热五区| 色爱欲亚洲| 日韩ab网 | 欧美综合加勒比在线| 夜夜嗨AV蜜臀av| 色哟哟-国产专区| 日少妇亚洲版| 青青草日本中文字幕| 精品999日本| 91视频综合在线| 亚洲。天堂。日本在线观看| 激情文学小说一区二区 | 国产人妻天天干精品| 国产亚洲综合欧美一区| 99精品无码| 爱干爱射网啊啊啊| 60秒免费小视频| 欧美日韩97在线| 男人天堂导航| 人妻三级在线中文字幕| 日本人妻伦在线中文字幕| 国产一区二区三三视频| 国产一区二区三区导航| 一起草AV| 超碰在线人妻不卡| 风骚少妇视频中文字幕| 亚洲人妻色图| 精品人妻视频入口| 色噜噜精品一区二区三| 色色五月天激情| 最新一二三区视频| 久久一本大香蕉| 欧美92| 国产呦精品系列在线观看| 人人操人人操人人人操| 强奸a片网| 男人天堂站| 大干人妻| 日韩操啪| 欧美性爱另类综合| 久久久久久久九九九九九九| 91老熟女老女人国产老太| 91N综合网| 精品成人无码| 欧美男人一区| 久久综合av| 国产精品香蕉| 亚洲欧美日韩精品久| 人妻久热在线| 97视频在线免费| 在线日韩精品一区二区三区| 每日更新AV| 99999精品成人| 亚洲天堂另类| 中文字幕一区电影在线观看| 天美精品av| 久久中文字幕女同性恋一区| 久9re热视频这里只有精品| 91精品国产麻豆国产自产在| 青草香蕉网| 久久超碰97| av资源在线观看少妇| 大香蕉啪啪啪啪在线| 久久久人妻| 亚洲欧美中文日韩视频中国语 | 免费观看的黄色的网站| 久热久一区二区三区| 啊啊啊慢点| 91精品啪在线观看国产城中村| 日韩天堂av电影在线观看| 大逼色网站| 最新啪啪视频| 久神马| 岛国福利在线精品播放| 亚洲91av| 五十路三区在线| 久久99视频| 人妻人久久精品中文字幕| 最新岛国大片| 久久综合久久综合人久久夜精品| 青青久久艹| 99色| 啊啊啊好大好深| 操逼操操操91| 欧美日韩亚洲国产中文永久天天看| 免费观看国产小粉嫩喷水精品午| 九九九久千久久激情蜜桃在线看| 亚州性9| 国产91美女高潮| 少妇高潮九九九九| 色色99| 火箭成精品视频884必出精品| 久久婷婷五月| 超碰碰97资源站| 精品色色| 99久久99久久免费精品蜜臀| 精品区9| 亚洲色人| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 久久精品美女一区| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 青青青国产| 国产无码精品无码| 中文字日本乱码| 亚洲密乳AV| 美女黄码视频午夜| 最新中文字幕精品在线| 舔舔啊| 99热精品在线播放| 亚洲人久久久久日| 超碰超碰95| 日本性感人妻91| 九九九九日本| 色哟哟511老熟女| 密臀国产在线| 男人兔费天堂| A级国产欧美激情在线| 91骚妇| 成人性爱高清视频免费看| 色婷婷日韩精品一区二区三区| www.久久99| 久久久新亚洲AV| 亚洲情色图片区| 久久AV无码网址| 96麻豆精品一区二区三区| 97玖玖人妻| 手机在线A片| 天天射天天色成人| 精品免费一区二区三区在线亚洲人成| 成人av性爱电影在线观看| 日韩欧美天天爽爽爽天天爽爽| 国产 日韩 另类 视频一区爱| 男人的天堂99| av午夜玫瑰| av片在线观看免费播放| 久久78| 丰满人妻一区二区中文| 六月婷婷激情| 强奸乱伦亚洲第一页| 国产蜜臀精品一区二区尤物| 韩国女主播青草福利视频| 亚洲精品官网在线观看| 国产精品农村妇女| 加勒比综合九九99视频在线播放| 偷窥自拍A片| 国产1024在线播放| 欧美激情黑人| 67914在线精品观看| 黄片www.| 少妇高潮流水av免费| 久久婷婷苹果| 久久綜合很很很| 激情五月天网| 岛国黄色短视频| 成人国产视频在线观看| 青草伊人久久| 久久久婷婷| 丁香五月天视频| 亚一综合久久久久久久久久| 九九九九热| 亚洲美女高潮喷水视频| 日本三级黄页| 白丝一区| 色婷婷日韩精品一区二区三区| 亚洲不卡av在线| 丁香五月激情啪啪| 国产Aα| 国产91福利小视频在线观看| 亚洲影视高清三级-草1024榴社区入口-品爱AV| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 97在线观视频免费观看| 荡小穴在线观看| 妺妺跟我一起洗澡没忍住| 狠狠色伊人亚洲综合网站色| 国产精品一区二区三| 97欧美色综合| 后入式在线免费观看60秒| 日本不卡卡一区| 色丁香五月婷婷| 在线观看日韩av不卡| 蜜桃视频成a人v在线| av一区二区三区不卡| 久久91| 久久超碰97| 999热这里只有精品| 风间由美日韩欧美久久| 伊人午夜福利视频| 亚洲欧美日产国产91毛片| 久久久久久久久久久久久久久乱码| 婷婷久久综合| 可以免费观看的av| 91一起操| 九九热在线精品视频| 国产欧美亚洲精品a第2页| 十八禁成人网站在线观看| 日本一级婬片试看三分钟| 色在线综合| 欧美一二三级精品在线| а√天堂资源官网在线资源| 午夜舔阴达高潮视频免费看| 91亚洲色图| 欧美性爱第1 页| 亚洲av性爱电影| A级在线视频| 精品日韩人妻视频| 中文字幕一区二区三区四区在线视频| 亚洲精品一二牛牛| 手机午夜电影神马久久| 人妻干天天| 欧美性爱日韩性爱| 美国aaaaa一级黄片| 一本一道vs波多野结衣| 日美免费黄片| 国产超碰| 色97| 一区中文字幕二区日韩| 9精品在线| 亚洲高清男人天堂|