久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码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
返回資訊列表
男人女人18禁片免费看网站| 玖玖色综合| 性吧在线视频| 十八禁网站在线| 玖玖爱伊人玖玖爱| 国产精品成久久久久午夜午夜| 黄色片A级一区二区三区| 五月丁香综合啪啪| 91女网站| 啪啪综合网| 免费人成?大片在线播放| 99国产精品人妻人伦| 久操在97| 男人天堂新在线| 夜夜嗨视频| 搡老熟女老女人老熟妇免费视频| 蜜臀99999| 无码人妻一区二区三区色欲aⅴ | 青青草国产一区二区三区| 操逼无码操逼| 欧美性后入| 欧美线天码中字| 豆花视频操逼网址| 九九精品美女高溯喷水| 国产一区二区三区高清视频| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 91呆哥人妻| 国语人妻精彩刺激| 狠操91,com| 午夜.DJ高清在线观看免费7| 色牛牛AV| 婷婷探花久久精品一区| 中文字幕91综合| 性欧美91| 色色无码| 欧美大战久久久伊人| 99蜜桃臀久久久欧美精品网站| 欧美少妇人妻| 国产传媒一区日韩| 日本免费专区| 91熟女网| 国产人伦精品一区二区三区 | 青青草日逼视频| 日韩中文字幕国产| 亚洲熟女少妇免费视频| 东京热激情视频一二三区| 中文字幕人妻资源在线| 人人澡综合涩| 国产激情在线| 国产剧情在线| 宅男午夜在线视频| 99ri在线视频| 国产精品久久久久无码Av网曝门| 91AV天堂| 久久超碰久| 日韩精品一区二区日韩| 亚洲丝袜少妇在线| 自拍视频大全亚洲专媒视频/一区二区三区| 国产又猛又粗又爽又黄| 人人妻人人爽| 中文字幕在线日亚州9| 九九久久玖玖| 性性欧美| 亚洲精品99| 很黄很色的视频在线观看| 99中文字幕| 97精品97久久| 97人人爱人人做人人乐| 欧美日本国产日韩激情视频| 亚洲网站一区二区在线| 伊人精品视频| 67914在线精品观看| 国产操操日韩三级黄| 亚洲国产精品无码AV久久| 国产女人视频三四五区| 91久久精品美女高潮喷水| 色老汉色| 人人澡人人爽人人精品| 国产又粗又又黄又猛| 婷婷色综合欧美日韩| 欧美日韩婷婷中文| 蜜臀无码一区二区| 国产综合久久久鬼色| 玖玖玖玖精品国产剧情| 日本三级R| 99热最新网址| 日韩少妇丰满亚洲| 欧美综合网| 国产AV线| 九九九九九九综合| 夜夜欢天天干| 国产传媒日韩欧美| 中文?日韩?免费?精品| 人人妻人人操人人乐| 天天看综合网| 91性高| 91精品婷婷国产综合久久竹菊| 国产呦精品一区二区三区下载| 伊人久久艹| 九九热免费视频| αⅴ天堂| 婷婷综合在线| 麻豆国产原创AV色哟哟 | 亚洲码专区| 一区黄二区黄| 超碰97伊人| 精品国模无码| 久久香蕉超碰97国产精品| 亚洲AV噜噜狠狠网址蜜桃动漫| 中文字幕 国产区| 99啪啪视频| 神马久久久久眼| 国产精品高潮久久AV| 操B久久| 嗯嗯啊啊视频一区二区三区| 高清无码人妻久久久一区二区三区aⅴ| 97超碰色色| 日本操逼二区| 97视频观看| 欧美性爱一区| 欧美不卡五十路| 亚洲激情片| 香蕉久久AⅤ...| 欧美超碰9798| 97超碰天天爱天天爱| 狠狠操狠狠燥| 强奸国产精品视频| 青青草日本中文字幕| 一区二区三区四区姦女| 亚洲欧美日韩电影网站一区| 精品成人无码| 美女大乳久久久久久久女人18| 男人的天堂Va| 一色网男人的天堂| 在线午夜成人无码视频| 97欧美精品综合| 偷拍 欧美 日韩| 亚洲熟妇无码一区二区三区| 男女做爰猛烈动高潮A片免费应用| 欧美|91色综合| 色五月AV| 亚洲国产精品乱码在线观看| 男人的天堂2019| 91久久久久久久久久久| 嗯嗯啊啊视频一区二区三区| 欧美一区二区三区入口| 9ⅰ久久久天天| 五月丁香综合啪啪| 日本欧美中文字幕| 韩国国产欧美情侣视频在线| 欧亚在线视频| 欧美大波激情xxxx| 另类欧美| 色眯眯射| 五月丁香啪啪网| 国产精品内射婷婷一级二| 中文字幕78| 国产67194| 欧洲特黄毛片免费看欧洲毛片| 啊啊啊不要啊啊受不了了视频在线 | 五月婷婷六月丁香| www.99色| 欧美性性性| 欧美性,亚州色| 欧美疯狂做爰xxxx| 欧美性爱第1 页| 欧美 亚洲 91| 免费观看欧美日韩操逼视频| 成年人黄色小视频网站| 玖玖爱伊人玖玖爱| 日本在线一二| 欧美激情中文字幕另类小说| 人人看黄色视频| 亚洲男人在线观看天堂| 91挑色欧美| 日韩精品中文字幕二区| 超碰碰97资源站| 精品无码人妻一区二区免费蜜桃| 120分钟婬片免费看| 男人天堂黄片| 13小男生GAY自慰脱裤子| 狠狠爱夜夜干| 久久手机好看网站| 久久久久久久久久久久久久久性生活视频| 美女写真| 精品国产丝袜一区二区三区乱码 | 亚洲色图 欧美热图 清纯唯美 另类自拍 | 骚货 中文字幕 av| 久久女人视频| 久久鲁干| 五月天社区| 国产偷拍自拍在线视频| 国产宅男宅女在线观看| 人妻81p| 国产精品一区av在线| 欧美日韩大香蕉| 激情久久av一区av二区av| 日韩大香蕉精品在线视频| 日韩精品电影| 男人的天堂成人的社区| 妇女视频网站| 国产精品点击进入在线影院高清| 国产一级作爱毛片| 亚洲精品一区中文字幕乱码| 亚洲欧美综合网站| av在线不卡一区二区三区| 亚洲国产综合久久天堂| 在线视频日韩欧美国产| 真实高潮91| 亚洲天堂,男人| 在线A日本| 91丝袜视频在线观看| AV色天香在线| 乱人伦 国语对白:视频直接看| 婷婷视频在线免费观看| 欧美 中文字幕 一区| 超碰97在线中文| 五月天亚洲色图| 日韩一性一交一A片俄罗斯| 99精品九九九九九九| 第二页中文字幕| 欧美一区二区三区日韩| 日本精品一区二区三| 国产剧情一区在线观看| 一区 欧美 日韩 麻豆| 伊人97色天使| 凹凸 69堂 在线播放| 亚洲天堂精品日韩电影| 欧美黄色大片在线观看 | 婷婷色导航| 日本少妇va7777| 91超碰在线播放| 嗯嗯啊啊啊好爽| 欧美一级久久久丰满| 成人免费看吃奶视频网站| 91黑人无码激情在线| 九九久久一区二区三区| 少妇高潮九九九九九九九| 人人操人人摸人人骑| 国产精品久久99日日| 另类综合另类| 婷婷15月天青娱乐| 久久香蕉国产线看观看亚洲女人 | 亚洲精品 超碰| 97精品国产手机| 久久春色| 五月天婷精品激情| 丁香五月成人| 一二三四区操操Av| 性videos欧美熟妇hdx| 激情四射婷婷四五月天| 国产精品97视频| 福利在线观看一区二区| 国产欧美精品日韩区二区麻豆天美| 亭亭在线资源| 91夜色| 国产免费一区二区在线A片视频| 欧美A√综合网| 欧美日韩黄片精品在线| 91美女视频在线| 久久久久99999| 99精品在线| 蜜桃丰满熟妇av无码区不卡| 欧美色日| 精品人妻1区| 日韩国语字幕| 亚洲无码偷拍| 亚洲无套久久嗯嗯| 99久久国产精品免费高潮| 肥臀熟女福利视频一区二区| 国产在线播放成人免费| 色狠狠色| 综合久久少妇中文字幕| 色眯眯射| a天堂视频| 老司机免费视频在线91| 人人妻人人狠人人| 色九九九综合| 中文字幕一区电影在线观看| 无码天天操| 伊蕉97蜜桃97狠狠综合干| 91综合网| 国产午夜在线观看视频| 国产一级内射高清视频| 噜噜噜噜久久久精品免费| 97婷婷色| 区日韩亚洲乱码av电影| 综合久久久久久久综合网| 国内亚洲高清无码| 骚鸭AV| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊| 日韩中文字幕熟妇人妻| 后入内射蜜桃臀| 国产又大又粗又长视频在线| 国产美女高潮叫床视频| 色99视频| 天天色香欲综合网| 伊人成人中文字幕久久网| 亚洲精品视频二区| 欧美少妇一区二区三区| 亚洲免费97免费| 人妻激情在线视频| 粉嫩小泬久久久一区二区| 久久有码| 蜜臀无码一区二区| 一区黄二区黄| 亚洲色图超碰在线| 色五月激情网| 久插综合| 欧美精品,四区。五区| 偷拍导航视频网站| 亚洲脚交| 中文字幕人妻资源在线| 色逼综合| 亚洲美女30b| 欧美日韩在线视频网站| 久久久久久久精| 成人一区二区三区四区| 国产女人9999| 日产狠狠干| 很黄很色的视频在线观看| 中出在线视频| 国产怡红院| 丁香五月天激情网站| 被窝影院午夜看片无码| 91美女片在线| 久啪视频| 中文在线视频| caopeng97人妻| 国产亚洲精品美女久久久久久2021| 亚洲中文字幕一区二区| 欧美色道啊| 国产av美女被艹的乱叫| 制度丝袜99| 日韩欧无码一区二区三区免费不卡| 亚洲成人AB| 操死我了啊啊啊| 精品免费国产二区三区 | 久久国产免费激情视频| 国产中午字一暮区| 色制服丝袜夫妻av一区| 亚洲av热热色| 一区二区三区四区五区高清无码永久视频 | 99操| 国产免费永久精品无码| 国产v片在线免费观看| 97天堂| 男女国产精品| 中文字幕一二三| 欧美亚州色的图| 综合网久久| 欧美亚洲丝袜美女电影| 欧美激情总合网| 日韩一区二区精品视频| 美女黄频a美女大全免费皮| 玖玖爱在线视频免费观看| 久久二| 免费视频一二三区| 国产精品人妻无码久久久老鸭窝| 久草加勒比一区在线| 神马麻豆福利院| 青青青在线高清视频在线一二三四区| 蜜臀久久99精品久久久久久-DVD| 91综合站| 亚洲人妻中文在线视频| 亚洲精品白浆高清久久久久久 | www久久久| 欧美国产伊人久久久久| 久久性爱免费送| 免费强奸av| 国产呦精品一区二区三区下载| 熟女人妻一区二区三区| 99视频只有精品| 在线性黄高清免费视频| 婷婷色五月激情| 1024人妻| 久久超碰、| 欧美999999| 国产99999久久精品| 亚洲骚男同com| 狠狠爱夜夜| 天天看天天日| 一起草日韩| 国产精品亚洲免费| 97舔舔| 黄网站黄视频网站进入口| 中文字幕人乱码中文字的预防方法 | 久久免费精品视频免一| 日本三级日本三级99| 草草影院在线视频| 中文字幕55555| 亚洲天堂日本| 国产精品日日摸天天碰| www.亚洲黄色| 91 亚洲 欧美 日韩 国产 综合| 性爱av网站| 九九热免费国产视频婷婷伊人| 97这里都是精品| 二三四区精品| 欧美啪啪色吧在线| 性爱乱伦视频免费| 九九久久99| 熟妇熟女一区二三区| 精品中文日韩字幕视频| 欧美性夜| 国产精品懂色tv影视免费观看| 日本成人A片免费看| 久久久国产成人一区二区三区在线| 黄污污污污| 97超碰久| 91亚洲欧洲| 亚洲第一狼人丝袜美女另类| 在线观看成人性爱免费小视频| 日本成人A片免费看| www.久久久久| 亚州男人的天堂| 中日韓欧美高清| a v网站在线播放| 91AV老熟女视频| 99日视频在线免费| 亚洲图片日本AⅤ欧美在线| 久久精品国产亚洲AV成人直播| 色女女女导航| 亚洲久草AV色图| 黄片免费日韩| 欧美国产日韩清纯唯美| 成人一级二级| 亚洲成人性爱网站在线播放| 色欧美天天| 久久是精品| 日韩精品一区二区高清| 肉嘟嘟www视频在线观看高清| 麻豆2区1区天美| 欧美在线干| 久综合国内精品自在自线| 91neishe| 亚洲清纯综合| 日韩成人在线性爱视频| 亚洲AV资源| 天天综合中文字幕 91| 温婉少妇玩3p| 欧美激色| 亚州免费啪啪视频| 操学生天天| 蜜臀久久99精品久久久久电影| 亚洲码在线中文在线观看| 丁香六月激情综合| 97久久综合网| 精品在线观看视频在线| 少妇内射www在线观看视频| 欧美翘臀视频网站一区二区三区| 亚洲中文日韩精品| 人妻酒店出差被中出免费在线播放| 91狠狠综合| 成人婷婷丁香| 草草草视频| 五月丁香色情| 超碰在线免费一区二区三区| 亚洲高清在线| 亚洲激情在线| 99这里只有精品| 99热在线只有精品| 久/久精品99看9| 热热色综合网| 天天爽天天操| 外国91| 狠狠操狠狠| 亚洲高清91| 婷婷五月天成人网| 9久久久久| 志村玲子视频一区二区| 日日夜夜免费| 操九九九九九九| 一本大道青青| 亚洲成人免费在线| 日本道日本道中文字幕日本道最新日本道在线观看 | 亚洲国产欧美日韩人妻日中文| 日韩无码第3页| 久操热线| 国产久久久久久| 激情五月综合网| 亚洲欧美另类图片| 日少妇亚洲版| 熟女激情综合网| 亚洲精品一区中文字幕乱码| 精品91日日夜夜超清资源| 91美女视屏| 国产无马在线| …中文字幕亚洲乱,97人妻无码费视…| 无码人妻一区二区三区色欲aⅴ| 干b在线性社区| 乱论91| 爱丝福利| 狠狠色婷婷| 国产91精品在线免费| 啊啊啊用力在线观看| 不卡日本一区二区| 色网在线| 国内外色色色色色成人视频| 亚洲av噜噜噜噜噜噜| 性性欧美| 激情小说五月天| 婷婷色色五月天福利| 九九九九免费高| 亚洲欧美日韩综合在线尤物| 人妻精品视频一区二区三区| 亚 欧 美 综合| 精品久久久久久无码| 俞拍自拍| 国产天美欧美| 性久久| 亚洲自拍青操视频| 射 色综合| 国产精品无码久久久久2025| 91无码精品| 99超碰色| 免费A V在线播放| 人人妻人人爱人人玩| 亚洲综合影片| 97色色视频| 无码 黑人一区二区三区| 成人欧美日超碰| 综合网欧美在线| 欧美高清无码免费视频高清版| 久久国产999| 国产 码在线成人网站| 在线无码视频| 久久东京热久久| 超碰久久精品| 91在线综合网| 国产一区二区精品久久99| 亚洲丝袜综合| 少妇熟女视频一区二区三区| 久久亚洲熟妇在线视频| 亚洲色吧网| 无码逼| 91天天综合日韩欧美| 国桃视频产巨乳精品一区二区在线| 欧美日韩性感| 日韩午夜啪啪视频| 在线一道啪| 1769一区| 久久AV无码AV| 九九九九九精品视频| 91欧美巨乳| 欧美97日韩精品| 99re6久热只有精品6在线直播| 97最新在线播放视频| 波多野42部无码喷潮在线观看| 色哟哟 日韩精品| 亚洲91在线| 亚州黄站| 亚洲欧美激情小说| 9ⅰ久久久天天| m欧洲一级午老| 91色五月俺来也| 欧美日韩色图片| 九九99精品| 熟女人妇一区二区三区| 免费精品中文字幕| 五十路六十路七十路熟婆| 97在线免费观看| 九九无码| 欧美综合网| 免费观看一区| 人人妻人人玩人人澡人人爽| 色香天天| 欧美人体性爱互联网第一页婷婷日本| 九九九九精品精| 青女偷拍网| 日韩天天综合| 亚欧操逼片在线观看| 亚欧美色图| 十八禁电影伊人网| 中精品一区二区三区| 亚洲怡春院| 精品一区二区2| 国产蜜臀在线| 九九热精品视频六| 91人人| 精品无码久久久久久久久果冻糖心| 97国产精品| 日韩日本欧美在线观看| 7777奇米影视久久| 91成人久久| 国产九九九九九九九九| 日韩操人| 天天干2019| 久久精品老司| 试看60秒| 亚洲黄色电影| 欧美手机在线综合| 日韩兔费看黄片| 日本精品999| 色综合国产在线观看| se01国产在线视频| 成人怡红院| 久9re热视频这里只有精品| 看免费的黄片| 92人人操人人| 蜜桃久久综合视频| 嗯……啊…嗯嗯…啊…好舒服| 精久久久91| 加勒比综合a∨| 97超碰欧美手机| 一级毛片电影免费看| 日本三级A片网站com| 中文字幕乱在线伦视频中文字幕乱码在线| 毛片电影一区二区三区| 91人妻人人妻| 加勒比av中文| 国产9l 大屁股| 亚洲一区中文精品| 国产精品一区二区黄片| 亚洲 欧美 中文 日韩超碰| 大香蕉99热| 欧美偷| 国产精品成人AV片免费看网站| 亚洲精品xxx| 五月天色色色| 极品内射| 91色欧美| 国产www色在线观看| 五月激情天| 99色婷婷中文字幕乱色| 亚洲高潮影院| 精品人体无圣光凹凸| 另类视频在线| 97碰碰日本乱偷人妻中文的| 人人澡人人干| 久久婷婷综合国际产色怕| 欧美自拍偷拍免费观看| 亚洲色堂免费视频| 天天日熟妇| 亚洲国产丝袜熟女av| 黄色高清无码无码破解免费暗网| 欧洲综合视频| 91老熟女91老女人| 91亚洲色人| 99精品久久久久久久婷婷| 精品久久久无码| 91AV天美在线视频| 涩综合导航| 激情婷婷丁香| 欧亚韩国999| 国产精品99精品视频网站| 99热在线观看| 国产九九九九九九| 亚洲国产av中文字幕久久| 丁香五月影院| 欧美青青视频| 国产精品白领在线观看| 成人短视频在线观看| 小骚逼被操的爽不爽| 天天草天天日| 五月激情综合网| 国产精品午夜精品| 少妇一区二区三区高速| 99啪啪视频| 国产搭汕a级片| 久久久免费一级黄片| 青青操少妇| 青娱乐休闲视频在线观看| 丁香婷婷色五月| 四虎精品一区| 国产专区第一页| 欧美性,色九九| 日本性感人妻91| 日韩三级久久久| 不卡视频一区蜜桃视频| 成人精品在线| 九九九999久久久网站| 免费毛片在线播放| 熟妇高潮二区三区| 无码天天操| 91操人| 精品成人动漫一区二区| 熟女欧美日韩综合婷婷| 强奸乱伦 亚洲一区| 97爱爱爱综合| 蜜臀网 一区| 色婷婷五月天| 国产人妻久久精品一区二区三区| 伊人99热| 欧美 色 亚洲| 五月婷婷六月激情| 淫淫综合网| 欧美日韩99精品麻豆传媒| 欧美色视| 大鸡巴久久久| 欧美成年人性爱视频免费观看| 大香蕉 222| 日韩视频精品在线观看| 久久精品一区| 日本日逼高清| 免费国产| 亚洲乱熟女一区二区三区大香蕉| 久久久久久久久久久精| 五月丁香六月婷| 男人久久天堂| 亚洲中文人妻色| 翔田千里无码中出中文字幕| 樱花草社区www中国| 色欲无码人妻日韩欧美精品| 亚洲日韩东京热一区| 91强热人妻| 四季av一区二区凹凸精品小说| 国产亚洲在线观看| 色欧美综合| 亚洲男人天堂2012| 五月婷婷六月丁香网址| 国产丁香精品露脸视频| 人妻久久久久久| 91性高朝久久久久久久久| 色综和网| 亚洲Av无码成人精品国产| 97伊人超碰| 九月AV| 天天操夜夜嗨| 中文字幕一区二区无码成人| 亚洲综合成人网| 综合亚洲欧美精品日韩?v| 日本欧美色| 91超碰人人操| 国产JDAV无码视频在线观看| 亚洲熟女乱综合一区二区三区 | 亚洲精品男人的天堂| 国产综合在线视频网站| 色97综合中文字幕| 久久黄黄| 国产人伦a片信息免费片| 97久久超碰日韩精品| 久久侵犯人妻爽爽爽| 大香蕉黄色一级片免费看| 欧亚日本情色| 97综合日韩| 成人午夜视频免费播放| 亚洲无码com| 国产精品夜夜夜| 91人妻视频在线| 亚洲制服欧美另类内射| 三久久久四久久久久| 91日日夜夜| 夜夜狼人妻| 久久精品国产72国产精品福利 | 亚洲高清无码在线桃色| 97久久久| 97ai亚洲| 色www精品视频在线观看| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 精品一区二区久久| 久久理论字幕视频| 婷婷五月天成人| 亚洲暴力强奸AV| 日本影视久久免费| 97综合激情| 欧洲自拍色图gif在线| 禁片 高清 在线观看视频网站| 伊人久久青青草| 最新国产精品久久精品| 亚洲天在线| 精品国产av一区二区三区四区入口| 国产第25页在线观看| 天天摸天天插天天日| 青青草大香蕉视频| 国产粉嫩出水在线播放| 色五月激情AV在线| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 欧美午夜熟妇黑人精品91| 偷拍综合网| 97爱免费插| 亚洲极品| 亚洲国产精品有声| 在线黄页看毛片| 亚洲好色人妻| 日韩精品三区四区| 一本一道vs波多野结衣| 男人的天堂久久| 亚洲欧美日韩电影网站一区 | 黄色视频特级毛片| 日本精品网站在线中文| 69国产对白刺激| 麻豆AV一区二区天美传媒| 91网站18+| 国产精品久久久久久久久久久久久久久 | 99re在线视频| 国产精品suv一区| 嗯嗯啊中文字幕| 亚洲国产欧美中日韩成人综合视频| 一区不卡在线观看av| 另类天堂| 中文字幕99999| 久久久96| 欧美加勒比| 日韩有码中文字幕女同性恋 | 精品久久久一本一道| 99在线啪| 很狠操| 99这里都是精品| 亚洲天堂美臀在线| 97综合日韩| 久久9久9久99久9久9| 亚洲精品久| 日本久久久久久久久| 久久久久国产一区二| 欧美大香蕉专区网| 日韩不卡毛片Av免费高清| 亚洲免费人妻在| 婷婷中文网| 日本女人操逼| 日韩人妻无码专区| 丁香五月影院| 色九九综合| 婷婷丁香五月综合| 色嘟嘟人妻天堂网| 日韩另类色图| 加勒比在线视频| 九九九综合精品| 男人久久精品| 激情文学 亚洲图片| 九9热伊人| 国产外初女出血视频| 99精品在线| 精品一区二区三区蜜桃臀www| 中文字幕午夜精品久久久| 久久国产乱子伦精品免费女人| 精品一区二区三区蜜桃臀赵总 | 一级AV性爱| 中国乱伦一区二区| 人妻99p| 丁香九月婷婷| 亚州乱码中文字幕综合久久久| 欧美性爱一区二区三区四区 | 久久黄色视频一区二区三区| 国产熟女免费观看久久| 激情九月婷婷| 极品丝袜无码| 久久久∴| 亚洲老司机123专区| 久久大香蕉97| 午夜性生活av免费在线看| www.久久制服糖| 成人片在线播放| 久久婷婷色综合一区二区三区| 日本淫色网| 9 7超碰在线免费观看| 欧美极品少妇| 亚洲九九九| 亚洲欧美自拍偷拍| 91oumei| 97超级欧美| 96一区二区三区| 久久国产精品m码| 欧美日韩午夜精品一区二区三区| 亚洲成a人在线观看久| 成人综合色网| 日影院久久婷婷夜夜网| 91美女片在线| 精品国产人成在线| 青草视频在线看看看看看看看看看| 一区=区三区视频| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 久久蜜色情在线视频xxx免费观看| 台湾肥佬网一区二区三区| 天堂资源站| 欧美啪啪天堂| 欧州一区二区三区四区| 白嫩国模丰满一二三区| 中文高清一区二区的| 日韩精品影视| 日本一级真人黄色性爱视频| 日韩不卡在线一区二区| 日韩pv中文| 91久久久久久久| 9999久久久| 久久精品国产亚洲AV片多多| 大香蕉色十月| 亚洲情色 无码专区| 综合第一页| 久操不卡视频| 中文字幕97色| 校园春色五月天| 欧美,日韩,亚洲视频| 日韩二级| 自拍六区| 人妻日日干| 色五月69夫妻| 伊人骚琪琪亚洲天堂网站| 男人的天堂2019| 无遮挡h肉动漫在线观看| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | a人片中文字幕一区二区| 国产9l 大屁股| caoni国产亚洲av| 91女网站| 91天天综合在线观看| 亚洲欧美在线观看免费| 中文字幕在线观看第二页| 少妇99| 日韩高清黄片| 毛片17S| 人人操人人精品影片| 丁香五月综合| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 亚洲美腿丝袜香蕉影视欧美成人| 日韩欧美操逼xxx| 电影69乱码96| 中文字幕激情小说| 一区二区三区视频在线观看免费| 亚洲最大91网| 久久久性爱| 日本福利二区视频| 97视频新免费| 无码日韩人妻av一| 熟女在线视频| 26uuu久久| 久久精品免费| 亚洲男人天堂AV| 99精品在线观看| 新91视频.cmp| 99热久| 骚货操死你| 久久这里只精品99re66图| www.久久超碰| 中文字幕亚洲在线一区| 国产97综合| 99久久99久久综合| 午夜经典| 亚洲成av人片色午夜乱码| 色综合 加勒比| 精品国产www久久| yazhououmeizongya| 日韩欧美亚洲一区二区三区影院| 素颜老阿姨乱情色| 色色网91| 啊啊啊好舒服视频在线观看| 亚洲情色中文字幕一区| 操老熟女AV| 亚洲砖码砖专无区2023| 日本二区不卡| 美女淫穴| 国内毛片国产专区二| 日韩久久艹| 26uuu久久| 色 亚洲 91| 亚州免费啪啪视频| 亚洲清纯唯美| 精品日韩中文在线| 中国人高清www色视频免费| 伊人四虎综合| 国产av美女被艹的乱叫| 亚洲黄片免费在线播放| 品亲网欧美品亲网| 立川理惠加勒比无码| 91无码人妻精品一区二区三区蜜桃| 曰韩无码777| 9久精品视频在线观看| 操逼网站视频漫画国产| 日本女人久久久| 欧美成不卡网| 日韩一级特黄av毛片| 精品人妻久久久| 美女啊啊啊啊啊啊啊| 北约熟女超碰| 在线二区不卡| 91伊人影视综合| 99久久久无码国产精品性男| 午夜爽爽爽| 97se综合网| 在线视频日韩欧美国产| 99人妻| 干B| 日日操夜夜操天天操免费观看麻豆| 欧美色色人| 国产一级黄色片在线观看| 夜夜爽夜夜操| 国产精品一区在线播放| 欧美日韩亚洲五月天婷婷| 日韩中字av一区| 东京热男人的天堂网| 98一区二区精品| 黑人白女精品一区| 国产一区二区免费福利片| 国产日韩区| 亚洲男人天堂av| 国产女人高潮嗷嗷嗷叫小说| 国产精品久久久 | 国产精品视频在线观看| 清清一区二区三区四区不卡视频| 亚欧性爱无码| 精品一级| 欧美国产有色电影| 97色碰| 成人麻豆av电影网站| 欧美综合色,www| 97久久超碰国产网站| 亚洲免费看片| 午夜视频好爽啊| 男人的天堂1024| 97色插| 免费人成?大片在线播放| 日韩一级性爱无码| 91精品操美女| 久久久久久久久久黄色网| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 成全动漫视频观看免费下载| 中日韩久久久免费看| 色第一页| 97色色婷婷| 免费精品人妻一区二区三| 国产精品自拍视频| 超碰碰小说97| 吉田爱美AV在线| 长长久久88视频| 黄色av一区二区在线| 精品日韩中文在线| 欧美成年人性爱视频免费观看| 91亚洲黄色网| 国产视频第2页| 日本大香蕉| 99热综合| 人妻日日干| 精品国产一区二区三区在线播出| 爱逼综合| 婷婷丁香人妻| 日韩 女同 综合| 欧州色图区| 熟女乱伦A| 国产高清吃奶免费视频网站| 男人天堂东京热| 麻豆天天躁天天揉揉AV| 欧美性综合| 久草资源欧美在线视频| 亚洲一二三精品久久网| 久久一二三四五六七八九区区区| 免费亚洲黄色视频在线观看| 国产JDAV无码视频在线观看| 欧亚日韩中文在线| 超碰人妻久久| 精品一二三区女同| 黄色不卡视频| 日韩激情视频| 欧美色九九九| 99热99re超碰精品| 天天日天天色| 九九探花视频在线观看| 日本 色 导航| 91春色| 91熟女网| 色哟哟精品1精品2| 999熟女精品| 干b在线性社区| 天堂av2019| 久久手机好看网站| 日本美女性生活久久久久久久| 国产在线精品偷| 国产情侣自拍在线播放| 欧美精品日韩久久久九| 国产高清精品一区二区三区毛片 | 18禁久极品美女久久哦哟呀!| 午夜精品久久久99| 婷婷97| 五月婷婷色| 懂色AV一区二区三区| 精品人妻一区二区三区-国产精品| 丰满人妻一区二区三区四| AV一二区| 91麻豆天美传媒HD| 国产五码丝袜屁眼| 欧美影音在线| 少妇色欲综合网2| 国产精品久久久久久久久久久久久久| 亚洲 无码 有码 中文字幕| 素人伊尹大香蕉免费下载视频| 久久网亚洲| 欧美高清色| 亚洲欧美另类激情小说| 蜜乳中文字幕a在线| 国内毛片无遮挡国产| 1000部熟女视频在线观看| 精品视频在线观看| 岛国1区2区3区在线观看| 亚洲精品一二牛牛| 色综合一本| 精品日韩中文在线| a级理论午夜日本| 亚洲综合五月天婷婷丁香| 色噜噜综合在线| 91婷婷伊人狠人| 亚洲天堂,男人| 欧美三级一级| 亚洲青色欧美| 亚洲在线A| 亚洲久9| 中文字幕日韩专区精品系列| 97欧美性爱| 男人的天堂啪啪| 日韩熟女精品无码专区一区二区| SS久久| 欧美性爱一区二区三区| 少妇久久久| 屁屁影院一区二区三区国产| 91九九| 91在线限制级| 黄色一区三区| 狠狠操,使劲操| 看黄片视频免费| 97国产成人精品免费视频| 欧美久久九九| 亚洲aw毛茸茸在线| 无卡一区=区| 加勒比海色香蕉婷婷| 国产麻豆福利av在线播放| 久久性爱大全| 成人日本精品九区| 十八禁电影伊人网| 亚洲 欧美 精品专区 极品| 91艹B视频| 香蕉99秘 精品一区丁香| 超碰久久精品| 国产精品香蕉| 欧美大香蕉专区网| 色呦呦、国产精品| 久9爱经典视频| 国产精品96| 国产综合网站在线播放 | 91中文字幕制服丝袜免费视频| TS人妖另类精品视频系列| 精品伊人久久久大香线蕉小说| 欧美色图自拍| 色爱欲亚洲| 91嫩草欧美| 91日韩国产欧美亚洲另类精盘州至城都| 日韩熟女操逼| 91无码中出人妻视频| 97欧美日韩中文| a片 xxxx受爽视频| 一区二区娱乐网站| 伊人97色天使| 欧美日韩国产精品久久色婷婷| 日韩综合成人免费视频| 色色色综合网| a片亚洲一本通视频| 国产精品自拍视频| 强奸乱伦AV一天堂网| 色一情一乱一乱一区91Av| 欧美亚洲高清不卡| 婷婷在线视频在线观看| 开心激情站| 久久久久密臀视频| 成人羞羞视频国产| 人人色97| 欧美激情色婷婷花野真衣一区二区| 中文字幕欧美日韩三级| 久久久精品国产亚洲AV无码| 91美女視頻| 亚洲AV成人无码一二三久久 | 婷婷五月激情综合| 中文字幕精品亚洲熟女| 亚洲人妻中文在线视频|