99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

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

iOS與Unity混合開發(fā)中的通用指令化繪制工具設計 在實際 iOS 與 Unity 混合工程里所謂“iOS-Unity 通用繪制工具”通常并不是一個能自動把世界坐標換算成屏幕坐標的“黑盒”而是一套從繪制數(shù)據(jù)協(xié)議、Unity 側指令封裝、iOS 原生渲染到回寫鏈路一起協(xié)同的方案。之所以需要單獨抽一套通用層是因為大多數(shù)項目在 UI 動態(tài)畫線、涂鴉標記、軌跡預覽這些場景里都會遇到同一個問題Unity 側已經采集到了點序列iOS 原生側還需要再畫一份兩端如果各自寫一套坐標換算和樣式解析等到聯(lián)調時就會出現(xiàn)線條偏移、觸摸事件不同步、橫豎屏旋轉后錯位等問題。這篇文章會圍繞“動態(tài)畫線”這個最小場景介紹一套可落地的通用繪制工具結構。你會看到如何定義兩端都認的 JSON 繪制指令如何在 Unity 側生成噪聲曲線、折線和涂鴉數(shù)據(jù)如何在 iOS 側用 CAShapeLayer 渲染這些指令并通過橋接方法把原生觸摸事件回傳給 Unity。工程中不涉及平臺破解、抓包或其他灰產場景只討論正規(guī)游戲、渲染工具和原生輔助功能開發(fā)。1. 先確定主線這是一套指令化繪制橋接不是大而全的畫板 SDK1.1 這種工具通常會出現(xiàn)在哪些業(yè)務場景里游戲內玩法或輔助編輯器常見的繪制需求大致可以分成三類玩家用觸摸筆跡做涂鴉、簽名、關卡內標記。Unity 把業(yè)務生成的路徑、連擊軌跡、噪聲波形顯示在場景層或 UI 層。iOS 原生層需要在 Unity 渲染結果之上疊加一層批注例如截圖標注、AR 引導線、回放控制工具欄。第 1 種和第 2 種在純 Unity 工程中可以用 LineRenderer 或 UGUI 動態(tài)網(wǎng)格完成。真正麻煩的是第 3 種。Unity 的渲染結果和 iOS 原生視圖屬于兩個不同的渲染體系Unity 使用 OpenGL ES 或 Metal 渲染到自己的屏幕區(qū)域iOS 原生視圖則基于 UIKit、Core Animation。如果業(yè)務要求原生側動態(tài)畫線而 Unity 側又要同步同一份數(shù)據(jù)最穩(wěn)妥的做法不是截屏下發(fā)而是把繪制動作本身抽象成指令讓兩端執(zhí)行同一份指令集。1.2 通用繪制工具應該只管理繪制不應該直接管理游戲對象做這類工具時容易犯的最大錯誤是試圖讓一條線條直接對應一個 GameObject 或一個 UIView然后用很重的腳本去控制生命周期。真正的通用繪制工具應當更薄接收一個繪制動作集合。將動作轉換成統(tǒng)一數(shù)據(jù)格式。把數(shù)據(jù)提交給對應渲染端。渲染端只負責畫不負責業(yè)務邏輯。這里還有一個關鍵取舍數(shù)據(jù)協(xié)議才是核心渲染實現(xiàn)可以替換。Unity 編輯器里可以用 UGUI 頂點臨時預覽iOS 原生里可以用 CAShapeLayer 渲染未來如果切換到 Metal 自繪也只需要替換最底層的render(payload:)方法不需要改動上層業(yè)務代碼。2. 第一層基礎設施讓 iOS 和 Unity 都理解同一份繪制指令2.1 先用一個可以擴展的 JSON envelope 承載整批操作繪制數(shù)據(jù)不能只包含單個線條的點數(shù)組。實際場景里還包含畫布 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數(shù)組用于繪畫動作每個動作都是一條獨立可執(zhí)行指令。2.2 動作類型要按“可回放、可增量追加”設計繪制工具的動作類型不需要一開始就很多但每種動作的語義必須明確不能一個op里既畫線又處理手勢。建議從最小集開始op 類型用途必需字段說明stroke繪制一條折線或曲線pathId,style,points一條路徑只對應一個 CAShapeLayerclear清空畫布無可以搭配exceptPathIds實現(xiàn)部分清除layerVisible隱藏或顯示某一批路徑pathId,visible用于標記線的擦除和恢復enableTouch開啟或關閉原生觸摸采集enabled避免原生層誤接管手勢touchiOS 原生把觸摸點同步給 Unityphase,point,pointerId這是反向指令在真實工程中stroke不必高頻發(fā)送整條路徑。更合適的策略是 Unity 先在業(yè)務層累積點數(shù)據(jù)用手勢結束時再把整條路徑發(fā)給 iOS。如果確實需要實時預覽也可以按幀發(fā)送增量點但增量點仍要歸屬于同一個pathId。這種設計讓回放、回滾、撤銷都變得簡單因為每個操作都是可以重放的純指令。2.3 坐標系統(tǒng)一是兩端聯(lián)調的第一道門檻iOS 的 UIKit 坐標以左上角為原點x 向右增大y 向下增大。Unity UI 的默認坐標系在某些設置下 y 軸方向并不一致如果直接使用 Unity 的屏幕像素坐標很容易出現(xiàn)上下顛倒。在實際項目中更推薦使用“歸一化坐標”或“邏輯點坐標”。協(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è)務層只負責向緩沖器提交點數(shù)據(jù)和樣式。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() { // 這里可以做點數(shù)壓縮、抽稀和校驗 } public ListDrawingStrokeAction Flush() { var result _strokes; _strokes new ListDrawingStrokeAction(); return result; } }DrawingStrokeAction和DrawingPoint都是可序列化的 DTO不依賴 UnityEngine 的JsonUtility數(shù)組序列化限制實際工程可以結合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)的第二個參數(shù)寫固定值得到的是一條一維噪聲波形如果第二個參數(shù)也隨 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)畫線也不建議一開始就直接寫自定義網(wǎng)格。先用少量管理類把“路徑數(shù)據(jù)”保存下來再用LineRenderer或UGUI做編輯器預覽等到數(shù)據(jù)協(xié)議穩(wěn)定后再把真正發(fā)布到 iOS 的渲染實現(xiàn)切到原生層。編輯器預覽和 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ā)到不同處理函數(shù)。核心邏輯是把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 原生繪制線的常用組合。下面給出一個基礎實現(xiàn)思路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 函數(shù)。前提是原生側實現(xiàn)了同名導出函數(shù)并且 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函數(shù)否則會因為找不到入口導致崩潰。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 原生導出函數(shù)和回傳 Unity原生導出的 C 函數(shù)接收到字符串后要切換到主線程再交給繪制視圖。不要在回調函數(shù)里直接操作 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); // 根據(jù) touchData.phase 處理 down、move、up } }這個回路的價值在于Unity 只負責下發(fā)熱點指令原生側負責繪圖和手勢兩端不會互相阻塞。5.3 真機驗證怎樣的輸出才算鏈路打通搭建完橋接后不要只看畫面是否出現(xiàn)應該按下面的順序驗證在 Unity 場景里放一個“生成噪聲線”按鈕。點擊按鈕后Unity 組包并調用FlushToNative。iOS 原生 Xcode 控制臺應輸出收到 JSON 的日志。繪制視圖上出現(xiàn)藍色噪聲線。在 iOS 繪圖層用手指滑動Xcode 控制臺應輸出 touch 事件。Unity Console 中應該能收到OnNativeTouchEvent回調。排查鏈路可以按下表逐步查看驗證點預期現(xiàn)象如果失敗優(yōu)先檢查Unity 按鈕點擊日志出現(xiàn) payload 長度C# 里是否走了UNITY_IOS分支原生收到 JSONXcode 打印收到字符串導出函數(shù)名是否一致JSON 是否 NULL視圖繪制成功藍色噪聲線出現(xiàn)JSON 里coordinateSpace和坐標映射觸摸采集成功iOS 日志輸出觸摸點isTouchEnabled是否為 trueUnity 收到回傳Unity 日志顯示 touch phaseUnitySendMessage的對象名是否真實存在6. 這幾個坑最容易在 iOS-Unity 繪制鏈路里出現(xiàn)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 真機上出現(xiàn) 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 里復現(xiàn)所以要先確認你用 Xcode 構建的是真機包而不是模擬器包。跑一個只調用 slua 的極簡用例排除業(yè)務代碼干擾。如果輸入數(shù)據(jù)里還有 Lua 側動態(tài)生成的繪制點要注意點坐標在進入 C# 后仍然是 Lua 表里的數(shù)字必須先在 C# 側轉換成 DrawingPoint DTO再進行 JSON 序列化不能直接把 Lua 表格轉成 JSON 后混進 Native 繪制協(xié)議。6.4 渲染 API 或插件不統(tǒng)一導致構建期現(xiàn)象不可復現(xiàn)Unity 在導出 iOS Xcode 工程時渲染 API 可以在 Player Settings 里勾選。如果關閉 Auto Graphics API只留 iOS 支持的 Metal 渲染很多繪制相關的異常更容易復現(xiàn)??梢赃M入 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)化要從“減少指令和圖層數(shù)量”入手在開發(fā)環(huán)境跑通不代表能直接用于生產。上線或對外發(fā)布前至少要做一輪繪制性能檢查用幾百條動態(tài)線測一測 CAShapeLayer 數(shù)量對內存的影響。在性能面板統(tǒng)計 Unity 側 JSON 序列化耗時。在 iOS Instrument 里觀察 Core Animation 的 Commit 數(shù)量。如果使用小圖標、顏色點等貼圖資源Unity 側優(yōu)先考慮 Sprite Atlas 打包合圖減少小圖各自提交造成的多次內存拷貝和額外 Draw Call。下面這張表可以作為性能驗收清單項目開發(fā)環(huán)境關注點生產環(huán)境關注點JSON 格式可讀性好方便打印可壓縮頻率低于每幀多次指令數(shù)量越小越好按幀批量下發(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 引導等全部場景。建議按下面這個順序做增量驗證先實現(xiàn) Unity 到 iOS 的單向畫線只畫一條靜態(tài) Bezier 折線。再接入 PerlinNoise 生成動態(tài)波形驗證點序列變化。然后接入 iOS 原生觸摸回傳驗證 Unity 能收到手勢事件。最后再把顏色選擇器、線寬控制、清空、撤銷這些 UI 控件接入 UIStackView 工具欄。每一步都建立一個可運行版本再進入下一步。通用繪制工具真正要解決的不是“有沒有畫出來”而是當 Unity 側和 iOS 原生側都需要理解同一段用戶操作時能不能用同一種指令語言干凈地表達出來。只要協(xié)議穩(wěn)定、坐標系統(tǒng)一、圖層管理清晰后續(xù)再加曲線插值、橡皮擦、自定義筆刷、多端回放都是在同一個骨架上擴展而已。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
VfJxEwPH| 婷婷激情蜜桃玖玖丁香| 99热这里只有精品 搜| 色丁香五月婷婷| 婷婷婷婷婷婷婷婷| 99伊人性爱在线影院| 亚洲热综合| 欧美精品狠狠色丁香婷婷| 婷婷丁香亚洲五月天| 蜜臀久久99精品久久久久久酒店| 五月丁香花激情综合网| 任你日视频| 91人人网| 人妻久久久久久久久妻久久久久| 婷婷成人在线| 亚洲欧美成人在线| SS丁香五月婷婷| 亚洲第一成人AV| 五月涩涩网| 伊人超碰在线| 超碰在线人妻| 五月婷婷黄色| 久久 视频这里只有精总| AA片在线观看视频在线播放 | 665566 无码| 丁香五月电影| 996热re视频精品视频这里| 1024亚洲| 日本人妻伦在线中文字幕| 一本久久亚洲五月婷婷| 激情丁香久久久久久| 九九热最新视频| 极品色丁香| 激情综合五月开心狠狠| 色婷婷在线视频综合| 色婷婷AAA| 狠狠穞A片一區二區三區| 九色PORNY自拍成人精彩视频| 九九色影视| 国产成人在线精品| 性爱久久| 67194国产| 丁香久久五月婷综合| 青青久久91| 五月婷婷啪啪| 国产午夜精品久久久观看| 色播播婷婷| 久久A极片| 日韩操人| 色五月AV| 97碰碰碰免费公开在线视频| 五月丁香六月婷婷亚洲综合| 99操99| 国产肥白大熟妇BBBB视频| 六月婷婷网站| 五月丁香六月婷婷综合伊人| 91精品又长又大又粗又爽又猛| 欧美日韩aaa| 五月婷婷六月丁香首页| 99在线免费观看| 第2色五月婷| 五月丁香久久| 丁香五月婷婷激情尤物| 伊人网大香| 六月色婷婷| 午夜色丁香| 色婷婷五月天激情综合| 五月久久丁香| 五月天久久91| 亚洲六月色婷婷| 99这里有精品视频| 日本婷婷综合精品| 久热最新视频| 蜘蛛女免费观看完整版高清电影| 96精品久久久久久久久| 9月色婷婷| 婷婷香蕉精品| www,999日本色| 99热精品在线| 婷婷性爱视频在线| 亚洲中文丁香| 丁香五月婷婷乱| 婷婷五月天深爱| 五月婷婷 六月丁香| 丁香五月狠狠在线观看| 成人精品99| 丁香六月五月婷婷| AV色婷婷| 婷婷久久五月天| 国外亚洲成AV人片在线观看| 丁香五月婷婷激情蜜桃| 色综合激情| 伊人在线视频| www色综合亚洲92| 亚洲人妻电影| 激情小说五月天中文字幕| 五月天五月色| 中文AV在线播放| 丁香婷婷久久| 翔田千里 50岁 无码| 99热青青草| 色一情一乱一乱一区91Av| 色综合99| 久99热在线观看| 妇激情基地| 久久99大| 全亚洲最大的婷婷五月天网站COM| 丁香婷婷五月人体| 九九人人看| 丁J香六月首页| 大香蕉七区| 秋霞性爱AV| 丁香五月激情站| 五月天天爱| 99色干| 婷婷大香蕉| 99热九九九九| 五月综合激情网| 久9热在线免费观看| 97自拍99| 夜夜操天天爽| 五月丁香六月婷婷中文版| 亚洲精| 五月天激情网站| 色综合色色| 五月婷婷香蕉| 色婷婷精品视频| 五月天婷婷一起草| 亚洲欧美综合7777色婷婷| 无码 av电影| 日日操夜夜擼| 丁香五月在线视频| 在线中文字幕视频| 丁香五月大香蕉AV| 国产黄色av| 天天爽爽日日做做| 伊人日日干| 丁香五月婷婷五月| 五月天丁香欧美激情| 人妻操逼| 99热97| 婷婷五月丁香色综合| 天堂婷婷五月色| 五月综合激情| www、丁香五月天| 99精品爱| 182tv992tv人之初午夜免费观看| 少妇激情五月婷婷| 日欧一片内射VA在线影院| 五月天久久婷婷| 五月色婷婷中文字幕| 五月色丁香婷婷中文字幕| 日韩人妻在线观看| 亚洲综合色婷婷| 丁香五月婷婷色情综合| 五月婷婷黄| 26uuu国产精品| 亚洲综合激情五月久久| 色色色视频免费无码| 激情五婷精品网在线观看网址| www婷婷| 激情五月丁香五月色| 国产色色在线| 97丁香五月| 风流少妇A片一区二区蜜桃| 中文AV在线播放| 六月婷婷在线视频| 久婷婷五月综合欧美| 99热只有精品在线观看| 亚洲第一第二网站| 九九九九毛片| 九九热在线观看6| 九九AV在线| jiujiujiuwuyuetian| 可以观看的AV| 亚洲狠狠婷婷| 激情第四色| 久久久久久久久久婷婷| 欧美大香蕉视频| 久9免费视频| 夜夜操狠狠操| 色播六月| 欧美性猛交XXXX乱大交极品| 成人性爱无码| 伊人狠狠色婷婷综合丁香一区| 91精品又长又大又粗又爽又猛| 激情五月天婷婷视频| 夜夜嗨一区二区三区直播内容 | av在线资源| 丁香六月婷婷综合色| 五月激情站| 六月丁香视频网站| 99久热视频在线| 色婷婷五月综合网| 超碰二区| 天天操夜夜操| 五月天播播| 一本色道久久88加勒比—| 国产精品色婷婷99久久精品| 日韩抽插操逼| 七七久久婷婷| www.婷婷五月| 丁香五月婷婷欧美成人色图| 久久99网址| 性爱在线播放av| 午夜少妇在线观看视频| 99色视频在线| 婷婷伊人激情婷婷| 五月 成人 婷婷| 色五月天丁香婷婷| 九色视频这里只有精品| 六月久久婷婷| 日日夜夜天天| www.五月天色色.com| 人人澡天天色天天做| 久久综合久色欧美综合狠狠| 日本一级一片免费视频| 天天日人人爽| 久久色情| 超碰色女| 97色碰碰公开视频| 五月丁香影院| 五月天婷婷网站888| 天天干,天天舔| 天堂伊人干| 丁香六月婷婷| 激情小说五月欧美亚洲丁香| 五月丁六月香av| 香蕉伊人综合| av一区免费看| 99热在线观看| 日韩成人免费电影| 婷婷五月天奸女| 综合久久婷婷99| 婷婷99狠狠躁天天| 综合XX网| 99精品免费欧美小视频 | 婷婷中文在线| 大香蕉免费9| 国外亚洲成AV人片在线观看 | www.色婷婷| 五月婷婷综合久久| 久久96热| 婷婷免费无视频| 色欲九区| 色婷婷丁香综合中文字幕| 91人在线观看| 无码人妻少妇色欲AV一区二区| 五月丁香综合网| 狠狠色丁香婷婷综合久久97AV| 六月婷婷av| 亚洲永远av在线播放| 人妻久久久| 久re热视频| 天天爽天天摸| 天天摸色吧天天摸色吧| 五月丁香九九九综合| 99热精品在线在线| 五月婷婷香| 狠狠爱激情网| 色色五月婷婷| 人人爱人人草| 国产毛片欧美毛片久久久| 九九色综合| 久色| 久久丁香五月| 六月激情婷婷| 欧美日韩91| 碰97久久| 久久色情| 成人AV在线电影| 亚洲欧美一区二区三区爱爱动图| 狠色色狠网| 婷婷丁香人妻天久久| 久热天堂| 99热费观看| 成人αV视频免费观看| 深爱激情丁香| http:色情日本com| 久久久全国免费视频| 久久久婷婷五月天| 绿色小导航AV| 久操无码| 国产 A片 自拍| 开心六月丁香五月婷婷| 五月丁香婷婷五月色| 色综久久久| 激情五月激情综合网一级丸片| 国产亚洲精品人人| 亚洲精品性色| www.婷婷.com| 99综合免费视频| 亚洲操操操| 精品夜夜澡人妻无码AV| 久久久久久久久18久久| 五月天停婷基地| 日本WWW九九九| 强奸幻女毛片| 91欧美日韩综合| 色综合色五月| 久久人妻情侣| 久操97| 超碰9| 日本三级韩三级99久久| 国产精品 的国产| 九九综合| 婷婷射图五月天| 色播五月天激情| 国产67194| 9久精品| 97搞在线| 五月丁香A片| 五月在在观看| 中文字幕不卡+婷婷五月| 婷婷丁香97| 天天爽天天操| 日本色色网站| 热99视频| 五月花激情| 超碰在线观看三级片| 婷婷五月天最新网址| 日韩 中文 欧美| 玖玖99福利| 五月婷视屏在线观看| 91色色色| 色婷婷成人色网| 天堂久久婷婷| 99成人免费热视频| 91丨九色丨熟女高潮| 丁香五月天大香蕉啪啪| 五月天激情综合在线| 蜜臀嫩草| 欧美交换配乱吟粗大25P| 超碰69天堂| 亚洲六月婷婷| 久久婷婷六月综合综合色| 六月激情婷婷| 婷婷丁香亚洲色综合91| 激情色视频| 天天日夜夜拍| 色狠狠999综合| 日日操,天天操| 久久久激情视频| 激情网 久久| 99热综合在线| 丁香婷婷六月| 中文字幕+中文在线| 天天噜天天爱| 深爱激情五月网| 91日综合欧美| 天堂AV在线看| 粉嫩AV久久一区二区三区| 成人色图情色成人网 www.5b5b5bcom 五月天 | 综合丁香婷婷五月天| 久热只有精品| 五月天AV大香蕉| 五月天婷婷青青| 99热精品在这里| 丁香五月婷婷激情完整版| 五月天婷婷六月| 91成人性爱视频| 激情五月天啪啪| 五月婷视屏在线观看| 国产69久久久欧美黑人A片| 久久婷婷色| 五月婷婷激情网| 玖玖婷婷免费| 婷婷五月综合啪| 专区无日本视频高清8| 亚洲操逼片| 欧美狠狠色| 日韩成人无码片| 逼逼AV| 一起草AV| 色婷婷狠狠色| 91女人18毛片水多国产| 婷婷五月花西瓜| 天天综合网~91| 色五月丁香总合网| 一本大道嫩草AV无码专区| 天搞天天天天天| 五月丁香天堂网| 激情五月婷婷丁香六月| 久久综合九九| 天天夜夜操| 婷婷伊人综合| 久久久精品人妻| 狠狠综合区| 亚洲热综合| 久久久久久久五月| 99ri国产| 日本www五月婷婷| 亚洲黄网AV| 天堂婷婷丁香六月网| 9热成人在线视频| 久热只有这里精品| 天天综合久久| 丁香六月婷婷久久综合| 激情小说五月天中文字幕| 97干干干丁香| 色天五月天在线观看视频| www.久9| 久久五月天视频| 九九久久综合| 中国操逼99| 亚艹艹| 丁香五月电影院在线观看| 久久精品系列| AAAA亚洲| 亚洲无码九九九| 天堂综合久| 欧美 日韩 成人 在线| 噜噜噜狠狠色综合| 中文字幕性爱丰满| 99视频91| 免费看欧美成人A片无码| 久热这里只有精品66| 亚洲成人av在线观看| 狼人婷婷久久| 99久久综合精品五月天| 外国碰视频网站97| 色青青电影色五月| 婷婷涩五月| 狠狠色情婷婷| 久99久视频免费观看| 99自拍视频在线| 丁香五月天的网址。| 9l视频自拍9l视频自拍九色学生| 三人荫蒂添的好舒服A片| 天天高潮夜夜爽| 成人噜噜网| 丁香影院五月综合| 色五月网址| 婷婷狠狠干| 桃色Av色哟哟| 9久热在线视频精品| 97五月天| 99热老司机| site:ornaments52.com| 伊人婷婷青青cao| 久久久噜噜噜操操操| 99爱在线精品视频免费观看| 国产欧洲欧洲精品久久| 97婷婷丁香五月| 98色花堂98t.R| 五月丁香花成人社区| 国产成人av在线播放| 日日夜夜天天爽| 九九色精品| 9 大屁股在线视频精品| 少妇AB又爽又紧无码网站| 五月综合久久| 五月婷婷激情综合网| 丁香五月亭亭六月综合激情网| 超色欲天天| 国产毛片操B| 天天色天天操天天射| 日本五月婷婷| 伊人五月天在线| 91婷婷五月天综合视频| www.婷婷网| 激情图片婷婷| 9精品视频在线| 99福利视频导航| 国产成人精品一区二三区熟女在线 | 久久九九爽| 日本五月婷| 天天综合永久| 欧美性丁香色色五月天| 婷婷九月激情网| 《诡秘之主》在线观看| 99视频超级精品| 婷婷色网站| 亚洲六月色婷婷| 丁香五月婷婷激情完整版| 婷婷综合仓库中文| 91麻豆国产三级精品福利在线观看| 99热伊人| JAPANRCEP老熟妇乱子伦视频 | 婷婷激情五月天桃花网| 久热精彩视频98| 色色色色丁香| 热日韩欧美| AV中文网| 伊人激情网| 99精品丰满| 色色综合网。| 99热 在线播放| 亚洲欧洲小视频9| 丁香五月婷婷少妇| 操日本三片99| 丁香九月激情| 5月色亭亭视频| 99爱免费在线观看| 五月婷婷丁香五月婷婷| 五月丁香婷婷五月| 欧洲综合视频| 成人在线日韩| 国产日产亚洲系列最新| 色色色色色日韩午夜激情| 天天色五月婷婷91久久久久久久| 欧美激情久| 久久五月婷婷丁香| 人妻狠狠操| 久热2025无码| 五月天婷婷六月| 99精品视频在线| 色吧五月婷婷| 丁香五月久久| 亚洲激情四射色| 视频一区二区在线| 综合 蜜月 婷婷| 色 五月 天 婷婷 丁香 九月| 色婷婷a| 色婷婷成人丁香| 国产精品久久久60086| 国产VA亚洲VA96| 五月丁香无码| 人妻熟人中文字幕一区二区 | 人妻操逼| 狠狠干在线| 丁香婷婷色五月| 内射爽无广熟女亚洲| 97人人草| www,色综合| 99热99网| 色色色免费视频| 五月丁香婷婷色色| 婷婷丁香九色| 婷婷色丁香五月| 亚洲 小说 欧美 激情 另类| 色综合五月天| 亚洲情综合五月天| 久久久99免费视频| 午夜激情五月| 九九热99免费视频| 五月婷视频| 99爱99操| 六月婷婷久久| 99这里都是精品| 日本专区久久| 狠狠狠五月婷婷六月丁香| 亚洲碰碰碰| av大片在线| 激情综合无码| 五月丁香六月欧美综合网站| 欧洲色| 久久婷婷五| 开心久久五月天| 直接看的av| 国产精产国品一二三在观看| 猫咪伊人久久| 色五月中文网| 色五月丁香91| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 99久久精品国产色欲| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 狠狠草综合网| 亚洲乱码成人| h在线看免费版在线看| 婷婷五月丁香香蕉| 日本操逼九九九九58日本操逼| 久久久99久久| 婷婷婷久久久| 久久久性爱视频| 国产成人综合亚洲| 六月丁香婷| 丁香五月婷婷AV在线| av大片在线| 天天舔天天插天天爱| enecarbon-materials.com污K127封锁请涟系@wip1688 | 超碰成人在线免费观看| 天天爽曰日爽| 国产真实乱对白精彩| 久热这里只有精品性色AV| 激情五月激情综合网| 91在线人| 激情五月婷婷开心网| 日本操B视频| 天天爽日日搞| 97很鲁在线视频| 99精品视频在线免费观看| 99色免费观看全部| 日本久久99| 色五月婷婷久久| 九九综合九九| 激情五月天色播| 亚洲中文字幕AV| 91黄址| 久久久久久激情| 亚洲在线综合| 国产精品99久久久久久猫咪| 99热综合| www久久99| 色欲天天综合网| √天堂资源在线人妻熟女| 免费观看大片视频 丁香婷婷 六月欧美| 色综合色综合色综合| 亚洲看av的网站| 色色色色色色色色色影院| 色婷婷六月开心中文字| 4399在线观看免费高清毛片| 人妻久久久久久久| 日本久久婷| 欧美这里只有精品| 色五月婷婷开心| 九九成人电影婷婷| 色色射| 91丨九色丨白浆| 97在线精品| 另类五月婷婷| 岛国AAAV| 91综合色| 97视频.干com| 成人免费黄色短视频| 亚洲色色香蕉| 五月婷婷亚洲| 九九热精品在线| 久色中文| 婷婷丁香五月天影院| 伊人五月天在线| 婷婷五月欧美综合| 东北黄色一级| 色婷婷九月| 九九热视频思思| 亚洲视频国产一区| 天天干,天天日| 天天干天天操| 丁香五月天狠狠操| 六月婷婷综合| 婷婷五月六月丁香| 人人澡天天色天天做| 丁香五月婷婷社区| 五月天婷婷网站888| 五月丁香怕怕综合| 热九九九九| 99热免费| 五月天狠狠网| 9l视频自拍9l九色9l成人| 大香蕉综合| 国产综合网在线| 99er日韩| 婷婷欧美激情| 91九色PORNY肉丝在线| 黄网免费观看| 操日挥操日日| 欧洲亚洲免费视频区| 激情 婷婷| 极品人妻VIDEOSSS人妻| 色婷婷九月| 五月好婷婷| 九九精品热| 免费观看日韩成人av| 99色婷婷视频| 色色色热| 婷婷六月花| 亚洲第一色色色| 精品人妻在线| 午夜激情久久| 超碰在线观看三级片| 亚洲成人一区| 丁香五月婷婷综合精品素人| 亚洲激情五月丁香久久久久| 丁香婷婷五月天色综合| 五月婷婷激情| www.99精品视频| 在线五月婷| 久久性爱视频| 九九成人| 久久婷婷成人综合色怡春院| 久99久在线观看| 久久精品66| 激情综合网亚洲色图| 888精品福利地址| 天天肏夜夜肏| 欧美综合五月丁香六月婷| 狠狠综合久久综合| 91制片厂久久久国产电影| 99ri精品| 人人摸人人干| 五月丁香婷婷基地| 91操熟女| 婷婷丁香六月| 99久在线精品| 丁香婷婷网| 日韩综合久久| 色婷久久| 色婷婷丁香网| 99激情视频热| 久久av电影| 五月天激日本色情在线| 色五月xxx| 婷婷色五月婷婷姐妹| 色~性~乱~伦~噜| 91人人操人人| www色色色com| 人人爽在线视频综合网| www.99热国产| 中国AV性爱观看| 激情 婷婷 丁香五月天| www一区二区三区| 久久机热这里只有精品| 激情五月色在线播放| 中文在线视频久1| 亚洲日日日| 婷婷大乡焦噜噜| 99在线视频精品| 亚洲色在线观看| 日韩成人电影AV| 99这里有精品视频| 日日夜夜狠狠| 91蝌蚪窝视频在线| 色情成人五月天| 激情久久网 | 伊人五月久久| 狠狠狠狠狠操| 婷婷激情六月视频| 97五月久久丁香婷婷| 九九热超碰| 天天日夜夜拍| 久久九九激情五月天| 久久99热这里只有精品| 国产精品成人AV在线| 99久热| 国产欧美熟妇另类久久久| 丁香伍月婷电影全集| 丁香五月成人丝袜| 99在线观看视频免费| 婷婷综合欧美| 五月婷导航| 五月丁香婷草| 丰满少妇猛烈A片免费看观看 | 婷婷丁香五月亚洲| 天天色综网| 国产精品丝| 99热6这里只有精品6| 五月丁香婷婷在线综合蜜桃| 日本色婷婷五月天成人电影| 亚美欧色影院| 91碰碰碰| 五月丁香婷婷综合久久| 搡BBBB搡BBB搡18| 亚洲色区17| 激情五月天色色| 激情五月婷婷色播网| 日韩人妻无码精品| 中文字幕丰满孑伦无码专区| 激情五月综合第一页| 五月婷婷丁香深深爱| 无码色色| 色色色色综合网| 婷婷黄色五月| 色婷婷色久综| 婷婷精品免费久久| 九九九激情网| 婷丁香久综合| 99九九视频| 99这里都是精品| 奇米色大香蕉| 99re这里只有精品国产99| 精品色| 丰满少妇猛烈A片免费看观看 | 色五天综合| 天天久久狠狠色综合| 五月激情网络| 91要啪| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 天天成人综合视频| 五月丁香综合| 天天操B| 日本五月婷婷| 狠狠干.com| 色亚洲无码| 九九热re99re6在线精品| 日韩AV免费电影在线播放| 九久9精品| 99热这里只有精品9| 久久久久久99日本| 日日操夜夜爽天天天| 免费黄色片子| 午夜福利8055| 婷婷播播五月天| 亚洲五月天激情| 中文字幕在线免费观看视频| 日本成人噜噜噜| 激情综合网站| 开心激情网在线| 另类天堂| 九九热这里只有精品556| 五月丁香亭亭| 成人在线观看一区| 久久婷婷五月| 人人草碰| 丁香五月偷拍| 久久精品综合色| 色五月AV| 99日精品视频| 97极品在线| 噜噜狠狠色综合久| 久久免费婷婷视频| 91av色色乱视频| 丁香婷婷视频一区二区| 欧美一级a| 亭亭五月天成人| 白度黄视频| 丁香五月婷婷欧美成人色图| 操91综合网| 国产婷婷五月天| 7777久久亚洲中文字幕| 亚洲精品午夜国产va久久成人| WWW.亚洲无码| 久久偷拍综合五月天| 久久伊人婷| 人人综合久| 91久久| 99亚州综合精品成人网| 五月天婷婷久久日| 久久精品A片777777| 涩涩婷婷五月| 免费成片在线观看| 中文字幕AV网址| 婷婷爱爱蜜臀天天操| 五月综合色| 五月 丁香 欧美| 亚洲99精品九九在线| 亚洲日韩欧美综合VA| 中文字幕综合色| 婷婷丁香五月综合免费视频百花| 97色在线观看视频| 涩涩五月天| 久久99久久99精品免观看软件 | 第四色首页| 婷婷五月大香蕉| 色综合色| 丁香久久| 久久久久9999| 中文字幕婷婷9月天| www.9797国产| 天天操天天曰| 天天做天天爱天天摸| 亚洲经典三级| 五月丁香六月婷婷综合网缴情| 欧美婷婷九月| 人妻内射视频| 婷婷五月天在线综合| 久久婷婷五月综合色奶水99啪| 人妻人人操| 婷婷五月天亚洲丁香| 综合玖玖偷拍| 91丨九色丨大屁股| 亚洲成人电影aaaa| 任你搞网站| 国产欧美精品AAAAAA片| 五月激情综合美女久久| 熟女婷婷网站一婷婷五月一丁香婷婷一婷婷激情网| 久久在线视频免费观看| 狠狠色噜噜狠狠狠888| 精品婷婷五| 色五月婷婷影视| 99综合视频| 婷婷九月在线| 99热这里只有精品96| 久久精品五月天| 99丁香婷婷综合网| 狠狠干综合| 婷婷激情社区| 亚洲综合网区| 4399在线观看免费高清毛片| 久热这里只有| 五月婷婷婷婷| 五月婷婷co.m| 欧美极品999| 亚洲精品成人片在线播| 农村熟妇高潮精品A片| 五月婷婷激情性爱| 五月天婷婷在线播放免费| 五月天婷婷黄色视频| 久久五月天网| av五月天婷婷丁香| 性做久久久久久久免费看| 九九re精品视频在线观看 | 成人综合视频在线| 五月婷婷视频28| 综合99在线| 婷婷性爱网| 婷婷丁香五月视频| 激情婷婷| 一起草av| 色婷婷www| 婷婷五月天福利| 婷婷六月久久综合导航| 日日干日日s| 操逼六区| 淫荡A片| 激情五月瑟瑟| 五月婷婷综合成人| 欧美成人AAA片一区国产精品| 久久激情五月婷婷| 婷婷伊人综合中文字幕| 五月天偷拍| 激情小说视频图片网| 婷婷五月天a| 襙逼网| 综合网激情五月天| 五月开心六月婷婷在线播放网站| 99色干| 天天操婷婷| 91人操| 免费超碰在线| 五月婷免费视频| 大香久久综合网| 久久AV无码精品人妻系列试探| 丁香六月激情| 五月综合视频| 国产乱人偷精品人妻A片| 亚洲成人网站在线观看| 天天爽天天操| 久久er99热精品一区二区| 亚洲综合五月天| 97色色视频| 欧美日本日韩| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 99热6这里之有精品| 这里只有精9| 色婷丨日丨天丨综合久久| 五月婷婷影视| 五月花综合视频| 久久五月丁香| 高清不卡一区| 色婷婷狠狠18禁| 国产精品第一国产精品| 黄色热99| 免费看片在线观看| 超碰在线9| 久久婷婷五月综合97色一本| 99热这里只有精品一| 天天干天天操| 九九精品亚洲| 热99在线| 97超碰,人人舔,人人操,人人摸 | 亚洲综合色网站| 色了色综合| 99爱在线视频| 人人爱国产| 欧亚成人A片一区二区| 国产亚洲成AV人片在线观黄桃| 九九婷婷网五月天| 丰满少妇猛烈A片免费看观看| 蒲京久久无码视频| 色婷婷成人久久| 9久久久久久久久久久| 日本女天天爽| 日操五月婷| 五月天伊人网| 欧美激情综合色综合啪啪五月| 男人先锋久久| 五月天丁香婷婷社区| 五月丁香六月综合情在线观看| 激情五月婷婷啪啪| 天堂综合久| 五月天成人综合| 99在线精品免费视频| 人操91在线| 91视频精品99| 天天噪夜夜爽| 色九亚洲| 日韩精品AV一区二区三区| 嫩草视频。| 亚洲综合色婷婷| 五月婷婷欲色| 成人在线视频一区| 欧美S码亚洲码精品M码| 欧美日韩五月婷婷| 五月激情综合网| 婷婷综合五月色播| 九九九九国产| 色九月综合| 激情久久肏屄视频| 婷婷亚洲五月色综合| 第四色激情网| 中文字幕人妻AV| 天天色月| 丁香五月婷婷亚洲色图| 青草视频在线播放| 九九色图| 伊人婷婷激情| 综合久久9| 黄桃AV无码免费一区二区三区| 极品人妻VIDEOSSS人妻| 成人丁香色| 成人网丁香五月| 色色丁香| 无码yw| 中文不卡一二区| 五月天婷婷成人网| 五月丁香激情综合啪啪| 久久这里有精品在线观看| 超碰人人操人人干| 丁香激情五月天| 青青草六月丁香| 天天婷婷综合亚洲亚洲| 婷婷九月在线| 五月六月婷婷| 综合狠久久| 婷婷色综合| 超碰93在线观看| 婷婷色一二三区波多野结衣| 五月丁香六月合| 免费精品99| 午夜丁香婷婷| www.夜夜操.com| 人妻人人操| 大香av| 丰满熟女人妻一区二区三| 日韩黄在免| 第2色五月婷| 色婷另类| 久久综合网桃花| 九九这里精品| 国产婷婷色综合AV蜜臀AV| 久久香蕉影院| 97色在线| jiujiu热在线视频| 色婷婷久久| 激情五月丁香五月| 成人在线网| 97人人操com| 夜夜夜夜夜骑撸| www.玖玖婷婷在线| 日本五月婷婷| 五月丁香趴趴| 激情综合网色播五月| 日韩美一级毛卡片| 五月六月婷| 視频福利乱色| 成人免费高清在线播放| 久色大香蕉| 狠狠操狠狠操| 色五月综合97| 中文久久婷婷| 99热碰碰热| 亚洲五月婷婷| 开心久久五月天| 色色色99| 丁香五月婷婷激情蜜桃| 天天干天天爽天天操| 在线18av | 色丁香久综合在线久综合在线观看| 99亚洲精品| 中国AV性爱观看| AV片在线观看| 天天摸天天舔| 五月丁香成人| 六月丁香色色| 九九热在线观看6| 91丨九色丨43老版熟女| www.狠狠干| 色五月激情五月| 91dy.av| 色九九九综合| 色99色| 九九日本视频| 99精品偷自拍| 橾逼网| 色五月天丁香| 久久性爱视频| 亚洲天天综合| 亚洲情色一区| 婷婷五月天社区| 天天夜天天色天天| 综合五月丁香97| 综合啪啪| 手机激情网| 五月天开心色色网| 日韩在线一级| 丁香香五月激情免费视频| 婷婷中合| 这里只有精品1| 色很很96| 香港九九六区八区99| 思思 热 99| 色你久久| A片试看120分钟做受图片| 99视频这里有精品| 天天色天天色天天色天天色天天色天天色| 欧洲电影在线观看免费版英语版 | 五月天婷婷视频小说| 九九热色视频| 96色婷婷| 精品色色| 天天射夜夜骑| 五月婷婷激情综合在线| 五月婷婷亚洲综合在线| 国产在这里只有精品| 狠狠色噜噜色狠狠狠综合久久成人波| www.婷婷亚洲基地| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | 亚洲色久| 色5月婷婷| 婷婷综合在线| 亚洲 成人 电影av在线观看| 超碰人人射| 丁香色情五月综合网站| 久久婷婷激情久久| 日日夜夜狠狠| 无码色| 丁香婷婷色五月天| 五月总合激情网| 久久人五月| 涩综合婷婷| 99精彩视频| 99视频在线观看欧| BT综合在线视频观看| 久热A片| 99视频只有精品| 九九视频在线观看视频6 | 99人妻碰碰碰久久久久视| 九九99九九99偷拍视频免费看| 五月丁香婷婷人体| 婷婷九月色| 亚洲AV成人无码电影| 99久久国产宗和精品1上映| 五月丁香好婷婷A片网| 精品51XX| 天堂五月婷婷| 久久五月视频| 爽极品色| 久久久久久久久久久44| 免费观看全黄做爰的视频| 色五月婷婷中文字幕| 另类激情综合| 怡红院一二三| 天天夜夜六月丁香五月婷婷老师| 亚洲综合激| 欧美精品99久久久| 婷婷99中文字幕| 91超级碰人人操| 欧美肉大捧一进一出免费视频| 五月停停999| 丁香婷婷激情五月天无毒不卡蜜桃| 大香蕉院线| 欧美成人网婷婷综合在线| 99这里只有精品视频在线| 综合激情五月天| 免费观看亚洲AV片| 情色五月天网站| 影音先锋男人av资源站| 五月婷婷黄网站大全| 五月丁香本色在线观看| 中文字幕在线免费看线人| 天天日日夜夜| 亚洲精品又粗又大又爽A片| 五月丁香久久| 人妻丰满精品一区二区A片| 日本天天色| 99热播放| 丁香五月自拍| 深爱激情五月网| 五月天伊人网| 国产激情综合| 国产精品久久久久久久久久久久| 精品无码久久久久久久久| 天天干天天做| 另类视频在线| 欧美在线| 99丁香五月| 九九99视频精品| 区啪精品| 激情六月天婷婷| 日日噜噜夜夜狠狠久久丁香六月| 99热在线观看| 国产精品社区| 久久综合人妻| 八戒青柠影视剧在线观看| 99热在线观看| 日本nghangse中文字幕| 97久久久免费福利网址| 色狠狠999综合| 99精品久久| 久久视频婷婷视频| 色六月天| 人人色婷婷| 超碰人人色| 婷婷五月天综合网| 90色免费视频| 丁香九月色| 婷婷网影院| 91色涩| 婷婷九月激情| 丁香五月精品视频| 就爱操www com| 亚洲激情精品| 久久99热这里只频精品6学生| 五月天色婷婷激情| 激情五月影院| 欧美这里只有精品| 亚洲网在线观看| 大香蕉人人人| 爱爱色五月天| 色色哒五月婷婷六月丁香| 天天综合在线网| 97色碰| 五月婷婷伊| 丁香五月区| 丁香五月天激情小说| 伊人玖玖婷婷| 九九99久久| 色原狠狠综合| 99rewww| 538在线精品| 97色干| 欧美精品A片一区在线观看| 久热 91| cao久久| 综合xx网| 婷婷九月在线| 国产午夜成人免费看片无遮挡| 色婷成人狠干| 天天日日人| 超碰免费大香蕉| 五月婷婷黄色网址| 五月停亭六月,六月停亭的英语| 婷婷五月天激情综合深爱| 色婷婷www| 大地资源色婷婷视频在线| 国产中文字幕在线视频免费观看| 精品久久99| 狠狠色狠狠操| 五月婷婷香| 五月天大香蕉AV| 婷婷久久综合久| 开心五月网| 96精品久久久久久久久| 激情98色婷婷五| 涩五月婷婷| 天天干电影| 91九色欧美| 99免费成人网| 激情五月激情综合网| 大香蕉中文| 婷婷亚洲欧美丁香五月| 91热久| www五月天com| 色色色丁香| 天天操天天曰天天射| 九九热最新| 婷婷99丁香| 亚洲综合视频在线| 九九热这里只有精品9| 狠狠撸激情综合丁香五月天俺来啦| 欧美超级视频97| 香蕉久久国产AV一区二区| 久久这里只| 337p大胆噜噜噜噜噜91Av| 五月天播播中文字幕| 97啪在线观看视频| 日操夜撸| 色波激情五月天| 人人操99| 99re在线播放| 99久久精| 91精品久久久久久| 欧美啪啪五月天| 婷婷五月丁香基地| 五月婷婷色影院| 九九九九大香蕉|