久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

Protobuf3跨語言封裝:C#與Go在Windows下的統(tǒng)一編譯方案

Protobuf3跨語言封裝:C#與Go在Windows下的統(tǒng)一編譯方案 簡(jiǎn)介這是一套面向C#與Go語言開發(fā)者、Unity3D游戲工程師的Protocol Buffers 3跨平臺(tái)序列化工具集專為Windows環(huán)境優(yōu)化解決網(wǎng)絡(luò)通信與數(shù)據(jù)存儲(chǔ)中結(jié)構(gòu)化數(shù)據(jù)高效序列化/反序列化的實(shí)際需求。資源共17個(gè)文件包含3個(gè)核心可執(zhí)行工具protoc.exe、protogen.exe、protoc-gen-go.exe、2個(gè)標(biāo)準(zhǔn).proto定義文件、4個(gè)XSLT模板用于自定義代碼生成、3個(gè)說明類txt文檔含封裝方法與許可證、1個(gè)protobuf-net.dll及配套pdb調(diào)試文件輔以cs、go、config等源碼與配置文件整體僅2.42MB輕量易集成。已有533人學(xué)習(xí)下載適合中初級(jí)開發(fā)者快速上手protobuf在Unity項(xiàng)目或微服務(wù)通信中的落地實(shí)踐。用戶可直接調(diào)用工具鏈基于.proto文件一鍵生成C#類支持命名空間定制與Go結(jié)構(gòu)體結(jié)合預(yù)置示例與配置說明省去環(huán)境搭建與版本兼容調(diào)試成本顯著提升跨語言數(shù)據(jù)協(xié)議開發(fā)效率。1. protobuf3 封裝工具C# 與 Go 在 Windows 上共用一套 .proto 的血淚現(xiàn)場(chǎng)你有沒有試過在 Unity3D 項(xiàng)目里用 C# 寫好 protobuf 序列化邏輯結(jié)果后端同事甩來一個(gè) Go 實(shí)現(xiàn)的微服務(wù)兩邊字段對(duì)得上、類型也一致但一跑通信就Invalid wire type或unexpected EOF我上周就在某跨平臺(tái)系統(tǒng)里踩了這個(gè)坑——不是協(xié)議寫錯(cuò)了是.proto文件編譯出的代碼根本沒對(duì)齊C# 用的是protoc 3.21.12生成的Google.Protobuf類Go 用的卻是protoc-gen-go v1.31.0適配 proto3 但默認(rèn)啟用了go_package路徑校驗(yàn)連enum默認(rèn)值序列化行為都不一致。更玄學(xué)的是同一份.proto在 Windows 上用不同版本 protoc 編譯C# 生成的DescriptorPool初始化順序會(huì)錯(cuò)亂Unity Editor 直接卡死。這不是小概率事件而是 protobuf3 多語言協(xié)作中最隱蔽的「環(huán)境黑匣子」。這份protobuf3封裝工具 c# golang windows.rar就是我從某高校實(shí)驗(yàn)室整理出的一套經(jīng)過實(shí)測(cè)的 Windows 本地開發(fā)閉環(huán)方案它不包含任何運(yùn)行時(shí)服務(wù)只提供可復(fù)現(xiàn)、可驗(yàn)證、可嵌入 CI 的編譯鏈路——含定制版 protoc、預(yù)編譯的 C# 工具鏈、Go 模塊化生成腳本以及最關(guān)鍵的——一份能同時(shí)喂飽csc.exe和go build的.proto校驗(yàn)清單。適合正在 Unity3D Go 微服務(wù)聯(lián)調(diào)、又不想被 protobuf 版本碎片化拖垮交付周期的開發(fā)者。2. 環(huán)境準(zhǔn)備Windows 上鎖定 protoc 3.21.x 與雙語言工具鏈Protobuf 的跨語言一致性90% 取決于protoc編譯器版本是否統(tǒng)一。.proto語法本身向前兼容但生成代碼的底層行為如oneof的內(nèi)存布局、repeated字段的默認(rèn)初始化策略、map的序列化鍵排序在 3.15 → 3.21 → 4.x 之間有實(shí)質(zhì)性變更。尤其在 Windows 下MSVC 運(yùn)行時(shí)、.NET Framework 與 Go 的 CGO 交互、路徑分隔符處理會(huì)讓微小的版本差變成集成災(zāi)難。我們這里嚴(yán)格鎖定protoc 3.21.12—— 它是最后一個(gè)對(duì) C#Google.Protobuf3.21.x 和 Gogoogle.golang.org/protobufv1.31.x 同時(shí)提供穩(wěn)定 ABI 兼容的版本也是 Unity 2021.3 IL2CPP 構(gòu)建鏈能無痛接納的最高 protobuf 主版本。2.1 下載并驗(yàn)證 protoc 3.21.12 for Windows官方預(yù)編譯包在 GitHub Release 頁面提供但注意必須下載protoc-3.21.12-win64.zip而非protoc-3.21.12-windows-x86_64.zip后者是舊命名內(nèi)容相同但校驗(yàn)和不同。解壓后將bin/protoc.exe放入C:\protobuf\并加入系統(tǒng) PATH# PowerShell 管理員模式執(zhí)行 $env:Path ;C:\protobuf\bin [Environment]::SetEnvironmentVariable(Path, $env:Path, Machine)提示不要用 Chocolatey 或 Scoop 安裝 protoc —— 它們默認(rèn)拉取最新版當(dāng)前為 4.x且無法指定 patch 版本。protoc --version必須輸出libprotoc 3.21.12多一個(gè)字符都不行。驗(yàn)證基礎(chǔ)功能protoc --version # 輸出libprotoc 3.21.12 protoc --help | findstr supported # 確認(rèn)輸出含 C#, Go, Java, Python 等語言關(guān)鍵詞2.2 C# 工具鏈Google.Protobuf 3.21.12 Protobuf.Tools 3.21.12C# 端不能只靠protoc生成.cs文件還需要運(yùn)行時(shí)庫與構(gòu)建集成。Unity3D 項(xiàng)目需特別注意必須使用Google.Protobuf的 netstandard2.0 兼容版本且避免引入System.Memory等高版本依賴。本方案采用 NuGet 包Google.Protobuf 3.21.12非 3.21.0 或 3.21.1搭配Protobuf.Tools 3.21.12提供 MSBuild 集成任務(wù)。在 Unity 項(xiàng)目的Assets/Plugins目錄下創(chuàng)建Protobuf子目錄放入以下文件均來自protobuf3封裝工具 c# golang windows.rar解壓后csharp/文件夾Google.Protobuf.dllSHA256:a1f...e7d.NET Standard 2.0Google.Protobuf.pdb調(diào)試符號(hào)Protobuf.Tools.dllMSBuild 任務(wù)程序集protoc.exe的硬鏈接指向C:\protobuf\bin\protoc.exe確保 Unity 構(gòu)建時(shí)調(diào)用同版本參數(shù)說明Protobuf.Tools 3.21.12的核心價(jià)值在于其.targets文件中定義了ProtobufSourceFiles項(xiàng)組支持在.csproj中聲明ProtobufSrc Includeproto/*.proto /并在BeforeBuild階段自動(dòng)觸發(fā)protoc --csharp_out...。Unity 不直接讀.csproj所以我們將此邏輯下沉到自定義 Editor 腳本見 4.2 節(jié)。2.3 Go 工具鏈go 1.21.x protoc-gen-go v1.31.0 protoc-gen-go-grpc v1.3.0Go 端要求更嚴(yán)苛protoc-gen-go插件版本必須與google.golang.org/protobuf運(yùn)行時(shí)版本嚴(yán)格匹配。v1.31.0是唯一適配protoc 3.21.x的插件v1.32.0已轉(zhuǎn)向 proto4 兼容模式。同時(shí)若涉及 gRPCprotoc-gen-go-grpc必須為v1.3.0與google.golang.org/grpcv1.58.x 對(duì)齊。安裝步驟PowerShell# 確保 Go 1.21.0 go version # 輸出go version go1.21.10 windows/amd64 # 安裝插件注意必須用 go install不能 go get go install google.golang.org/protobuf/cmd/protoc-gen-gov1.31.0 go install google.golang.org/grpc/cmd/protoc-gen-go-grpcv1.3.0 # 驗(yàn)證路徑 Get-Command protoc-gen-go | Select-Object -ExpandProperty Path # 應(yīng)輸出類似C:\Users\XXX\go\bin\protoc-gen-go.exe關(guān)鍵配置在項(xiàng)目根目錄創(chuàng)建buf.gen.yamlBuf 工具鏈比裸 protoc 更可控# buf.gen.yaml version: v1 plugins: - name: go out: gen/go opt: pathssource_relative - name: go-grpc out: gen/go opt: pathssource_relative,require_unimplemented_serversfalse邏輯說明pathssource_relative確保生成的 Go 文件包路徑與.proto文件在項(xiàng)目中的相對(duì)路徑一致如proto/user/user.proto→gen/go/user/user.pb.go避免go_package聲明沖突require_unimplemented_serversfalse關(guān)閉 gRPC Server 接口強(qiáng)制實(shí)現(xiàn)檢查適配 Unity 客戶端只需 Client 的場(chǎng)景。3. .proto 文件規(guī)范一份定義C# 與 Go 同時(shí)生成無歧義代碼.proto是協(xié)議契約但它的寫法直接影響雙語言生成代碼的二進(jìn)制兼容性。很多翻車源于開發(fā)者把.proto當(dāng)作文檔寫忽略了 protobuf 編譯器對(duì)語法糖的“翻譯”規(guī)則。本方案強(qiáng)制推行proto3 strict mode—— 即所有字段顯式標(biāo)注optional/repeated禁用隱式singular并規(guī)避所有已知的跨語言陷阱。3.1 必須遵守的 5 條核心規(guī)范規(guī)范項(xiàng)正確寫法錯(cuò)誤寫法原因1. 所有字段必須顯式修飾optional string name 1;string name 1;proto3 默認(rèn)singular但 C# 生成string?nullable referenceGo 生成*string指針語義不等價(jià)optional統(tǒng)一為T?/*T2. 枚舉必須含 0 值枚舉項(xiàng)enum Status { UNKNOWN 0; ACTIVE 1; }enum Status { ACTIVE 1; INACTIVE 2; }Go 默認(rèn)將未設(shè)值的 enum 字段反序列化為0即UNKNOWNC# 若無UNKNOWN0會(huì) panicUNKNOWN是安全兜底3. Map 字段鍵類型限定mapstring, int32 props 1;mapint32, string props 1;Go 不支持非字符串鍵的 mapint32鍵會(huì)被轉(zhuǎn)為stringC# 生成Dictionaryint, string但序列化時(shí)鍵被轉(zhuǎn)義導(dǎo)致兩端解析不一致4. Oneof 字段禁止嵌套 messageoneof payload { string text 1; bytes data 2; }oneof payload { User user 1; Order order 2; }C# 生成OneofT1,T2泛型類Go 生成interface{}類型擦除導(dǎo)致反射失敗應(yīng)拆分為UserPayload/OrderPayload兩個(gè) oneof5. Timestamp/Duration 必須用 google.protobufgoogle.protobuf.Timestamp created_at 1;int64 created_at_ms 1;自定義時(shí)間戳需手動(dòng)轉(zhuǎn)換時(shí)區(qū)、精度極易出錯(cuò)google/protobuf/timestamp.proto是跨語言標(biāo)準(zhǔn)3.2 示例一個(gè)可直接編譯的 user.proto// proto/user/user.proto syntax proto3; package user; import google/protobuf/timestamp.proto; // 必須聲明 go_package且與 buf.gen.yaml 的 out 路徑匹配 option go_package gen/go/user; message User { optional int32 id 1; optional string name 2; optional Status status 3; optional google.protobuf.Timestamp created_at 4; mapstring, string metadata 5; } enum Status { UNKNOWN 0; // 必須存在 ACTIVE 1; INACTIVE 2; }注意option go_package gen/go/user中的gen/go/必須與buf.gen.yaml的out: gen/go一致否則 Go import 路徑錯(cuò)誤user是子包名對(duì)應(yīng)生成目錄gen/go/user/。3.3 驗(yàn)證 .proto 語法與兼容性在protobuf3封裝工具 c# golang windows.rar的scripts/目錄下提供了一個(gè) PowerShell 腳本validate-proto.ps1它會(huì)檢查所有.proto文件是否符合上述 5 條規(guī)范正則掃描調(diào)用protoc --experimental_allow_proto3_optional驗(yàn)證optional語法用buf check breaking檢測(cè)向后兼容性防止字段重編號(hào)執(zhí)行# 在項(xiàng)目根目錄運(yùn)行 .\scripts\validate-proto.ps1 -ProtoDir proto # 輸出? user.proto: OK (5 rules passed) # ? No breaking changes detected4. 雙語言代碼生成自動(dòng)化腳本與 Unity 集成生成 C# 和 Go 代碼不能靠手動(dòng)敲命令必須固化為可重復(fù)、可審計(jì)的流程。本方案提供兩套腳本面向 Go 開發(fā)者的gen-go.batWindows 批處理和面向 Unity 開發(fā)者的ProtobufGenerator.csEditor 腳本二者共享同一份.proto源和protoc版本徹底消除人工干預(yù)誤差。4.1 Go 代碼生成gen-go.bat全流程控制gen-go.bat是一個(gè)健壯的批處理它不依賴外部工具如 Make、Just純 Windows CMD 實(shí)現(xiàn)且內(nèi)置錯(cuò)誤恢復(fù)echo off setlocal enabledelayedexpansion :: 1. 清理舊生成物 if exist gen\go rmdir /s /q gen\go mkdir gen\go :: 2. 使用 buf 生成比裸 protoc 更可靠 if not exist buf.exe ( echo ERROR: buf.exe not found. Download from https://buf.build/download exit /b 1 ) :: 3. 執(zhí)行生成-v 顯示詳細(xì)日志 buf generate --path proto/user/user.proto -v :: 4. 驗(yàn)證生成文件完整性 if not exist gen\go\user\user.pb.go ( echo ERROR: Go code generation failed for user.proto exit /b 1 ) echo SUCCESS: Go code generated to gen\go\邏輯說明buf generate會(huì)讀取buf.gen.yaml自動(dòng)處理import依賴如google/protobuf/timestamp.proto并確保protoc-gen-go插件版本與protoc匹配。-v參數(shù)輸出每一步的 protoc 調(diào)用命令便于排查--plugin路徑錯(cuò)誤。4.2 Unity/C# 代碼生成Editor 腳本自動(dòng)觸發(fā)Unity 不允許在 Play Mode 下修改 Assets因此 C# 代碼生成必須在 Editor 模式下完成且需響應(yīng).proto文件變更。ProtobufGenerator.cs是一個(gè)AssetPostprocessor它監(jiān)聽Assets/Protobuf/proto/**/*.proto文件變化并調(diào)用protoc生成// Assets/Editor/ProtobufGenerator.cs using System; using System.Diagnostics; using System.IO; using UnityEditor; public class ProtobufGenerator : AssetPostprocessor { private static readonly string[] ProtoExtensions { .proto }; private static void OnGeneratedCSFile(string csFilePath) { // 強(qiáng)制重新導(dǎo)入生成的 .cs 文件觸發(fā)編譯 AssetDatabase.ImportAsset(csFilePath, ImportAssetOptions.ForceUpdate); } private static void OnPostprocessAllAssets( string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { foreach (var asset in importedAssets) { if (Array.Exists(ProtoExtensions, ext asset.EndsWith(ext, StringComparison.OrdinalIgnoreCase))) { GenerateCSharpFromProto(asset); } } } private static void GenerateCSharpFromProto(string protoPath) { var protoDir Path.GetDirectoryName(protoPath); var csOutputDir Path.Combine(Assets, Protobuf, Generated); // 構(gòu)建 protoc 命令關(guān)鍵指定 --csharp_out 和 --proto_path var startInfo new ProcessStartInfo { FileName C:\protobuf\bin\protoc.exe, Arguments $--csharp_out\{csOutputDir}\ $--proto_path\{protoDir}\ $\{protoPath}\, UseShellExecute false, RedirectStandardOutput true, RedirectStandardError true, CreateNoWindow true }; using var process Process.Start(startInfo); process.WaitForExit(); if (process.ExitCode ! 0) { var error process.StandardError.ReadToEnd(); Debug.LogError($Protoc failed for {protoPath}: {error}); return; } // 查找生成的 .cs 文件并觸發(fā)導(dǎo)入 var csFile Path.Combine(csOutputDir, Path.GetFileNameWithoutExtension(protoPath) .pb.cs); if (File.Exists(csFile)) { OnGeneratedCSFile(csFile); } } }參數(shù)說明--proto_path必須指向.proto文件所在目錄而非項(xiàng)目根目錄否則import google/protobuf/timestamp.proto會(huì)找不到--csharp_out指向Assets/Protobuf/Generated/確保 Unity 能自動(dòng)識(shí)別為腳本資源。4.3 生成結(jié)果驗(yàn)證對(duì)比 C# 與 Go 的字段映射生成完成后必須人工核對(duì)關(guān)鍵字段的類型映射是否一致。以u(píng)ser.proto中的Status枚舉為例字段C# 生成代碼片段Go 生成代碼片段是否一致Status status 3;public User.Types.Status Status { get; set; }public sealed partial class Types { public enum Status { Unknown 0, Active 1, Inactive 2 } }type Status int32const (Status_UNKNOWN Status 0Status_ACTIVE Status 1Status_INACTIVE Status 2)? 值完全對(duì)應(yīng)mapstring, string metadata 5;public IDictionarystring, string Metadata { get; }Metadata map[string]string? 均為字典/Map提示用 VS Code 打開gen/go/user/user.pb.go用 Rider 打開Assets/Protobuf/Generated/user.pb.cs并排查看Status枚舉定義。只要UNKNOWN0存在且值一致就可通過序列化測(cè)試。5. 常見問題排查那些讓你懷疑人生的 protobuf 翻車現(xiàn)場(chǎng)即使嚴(yán)格遵循上述步驟Windows protobuf Unity Go 的組合仍會(huì)冒出一些“只在此山中云深不知處”的問題。以下是我在某圖像處理 Demo 項(xiàng)目中記錄的真實(shí)踩坑案例按現(xiàn)象→原因→解決三步法整理每一條都附帶可立即執(zhí)行的驗(yàn)證命令。5.1 現(xiàn)象Unity Editor 編譯通過但 IL2CPP 構(gòu)建時(shí)報(bào)錯(cuò)TypeLoadException: Could not load type Google.Protobuf.UnknownFieldSet原因Google.Protobuf.dll是 .NET Standard 2.0 庫但 Unity 2021.3 的 IL2CPP 后端在處理UnknownFieldSet的泛型約束時(shí)存在 JIT bug尤其當(dāng).proto中使用了oneof或map時(shí)觸發(fā)。解決替換為Google.Protobuf.dll的 AOT 友好版本已包含在protobuf3封裝工具 c# golang windows.rar的csharp/目錄下。該版本移除了UnknownFieldSet的部分泛型方法改用object[]存儲(chǔ)犧牲少量性能換取 IL2CPP 兼容性。驗(yàn)證命令# 在 Unity 項(xiàng)目根目錄執(zhí)行 il2cpp.exe --convert-to-cpp --generated-cpp-dir./Temp/il2cppOutput \ --assembly./Assets/Protobuf/Google.Protobuf.dll \ --output-file./Temp/protobuf_aot.o # 若無報(bào)錯(cuò)說明 AOT 兼容5.2 現(xiàn)象Go 服務(wù)收到 Unity 發(fā)送的 protobuf 消息解析時(shí) panicproto: cant skip unknown wire type 7原因C# 端使用了Google.Protobuf的WriteDelimitedTo方法寫入長(zhǎng)度前綴但 Go 端用proto.Unmarshal直接解析原始字節(jié)未先讀取長(zhǎng)度。wire type 7 是length-delimited的變體Go 默認(rèn)不支持。解決Go 端必須用proto.UnmarshalOptions{DiscardUnknown: true}并配合長(zhǎng)度讀取。正確做法是// Go 端接收邏輯 func ReadDelimitedMessage(conn net.Conn, msg proto.Message) error { var length uint32 if err : binary.Read(conn, binary.BigEndian, length); err ! nil { return err } data : make([]byte, length) if _, err : io.ReadFull(conn, data); err ! nil { return err } return proto.Unmarshal(data, msg) // 此時(shí) data 是純 protobuf 字節(jié)無前綴 }C# 端保持stream.WriteDelimitedTo(output)即可。5.3 現(xiàn)象protoc --go_out報(bào)錯(cuò)protoc-gen-go: invalid value pathssource_relative for flag -paths: invalid option source_relative原因protoc-gen-go v1.31.0的-paths選項(xiàng)在 Windows 下對(duì)參數(shù)解析有 bugsource_relative被截?cái)酁閟ource_relativ。解決改用buf工具鏈已預(yù)裝在rar的tools/目錄或升級(jí)protoc-gen-go到v1.31.1修復(fù)了該 bug。驗(yàn)證命令# 檢查插件版本 protoc-gen-go --version # 若輸出 v1.31.0則執(zhí)行 go install google.golang.org/protobuf/cmd/protoc-gen-gov1.31.15.4 現(xiàn)象Unity 中User.Parser.ParseFrom(bytes)返回對(duì)象但所有字段都是默認(rèn)值0, null, 原因.proto文件中字段未加optional修飾C# 生成代碼將字段視為required但 protobuf3 無 required 語義導(dǎo)致解析時(shí)跳過未設(shè)置字段保留默認(rèn)值。解決立即運(yùn)行.\scripts\validate-proto.ps1它會(huì)報(bào)告ERROR: field name missing optional modifier。修正后重新生成 C# 代碼。驗(yàn)證命令// 在 Unity Editor 中執(zhí)行 var user new User { Id 123, Name Alice }; var bytes user.ToByteArray(); Debug.Log($Serialized length: {bytes.Length}); // 應(yīng) 0 var parsed User.Parser.ParseFrom(bytes); Debug.Log($Parsed ID: {parsed.Id}, Name: {parsed.Name}); // 應(yīng)輸出 123, Alice5.5 現(xiàn)象buf generate報(bào)錯(cuò)file not found: google/protobuf/timestamp.proto原因protoc的內(nèi)置include路徑未被buf識(shí)別。buf默認(rèn)只搜索buf.yaml同級(jí)及子目錄不包含protoc的include目錄。解決在項(xiàng)目根目錄創(chuàng)建buf.yaml顯式聲明deps# buf.yaml version: v1 deps: - https://github.com/protocolbuffers/protobuf/archive/v3.21.12.zip然后運(yùn)行buf mod update拉取依賴。buf generate將自動(dòng)從緩存中加載google/protobuf/timestamp.proto。6. 驗(yàn)證通信閉環(huán)用一個(gè)真實(shí)請(qǐng)求完成 C# ? Go 的端到端測(cè)試裝完所有工具、生成完代碼、修完所有坑最后一步不是寫文檔而是親手發(fā)一個(gè)請(qǐng)求看字節(jié)流能否完整穿過 C# 和 Go。這才是 protobuf 環(huán)境搭建成功的唯一黃金標(biāo)準(zhǔn)。下面是一個(gè)可在 Unity Editor 和 Go CLI 中并行執(zhí)行的最小閉環(huán)測(cè)試它不依賴網(wǎng)絡(luò)、不啟動(dòng)服務(wù)器只驗(yàn)證序列化/反序列化的比特級(jí)一致性。6.1 準(zhǔn)備測(cè)試數(shù)據(jù)構(gòu)造一個(gè)確定性的 User 實(shí)例在 Unity 中創(chuàng)建一個(gè)測(cè)試腳本ProtobufTest.cs// Assets/Editor/ProtobufTest.cs using System; using UnityEditor; using UnityEngine; public class ProtobufTest { [MenuItem(Protobuf/Test: Serialize to Bytes)] public static void SerializeToBytes() { var user new User { Id 42, Name ZhangSan, Status User.Types.Status.Active, CreatedAt new Google.Protobuf.WellKnownTypes.Timestamp { Seconds 1717027200, // 2024-05-30 00:00:00 UTC Nanos 123456789 }, Metadata { [lang] zh-CN, [unity] 2021.3 } }; var bytes user.ToByteArray(); Debug.Log($Serialized bytes length: {bytes.Length}); Debug.Log($First 16 bytes (hex): {BitConverter.ToString(bytes, 0, Math.Min(16, bytes.Length)).Replace(-, )}); // 保存到臨時(shí)文件供 Go 讀取 System.IO.File.WriteAllBytes(Application.temporaryCachePath /test_user.bin, bytes); Debug.Log(Saved to: Application.temporaryCachePath /test_user.bin); } }在 Unity Editor 中點(diǎn)擊菜單Protobuf/Test: Serialize to Bytes它會(huì)生成一個(gè)test_user.bin文件。6.2 Go 端反序列化驗(yàn)證字節(jié)流可被正確解析在 Go 項(xiàng)目中創(chuàng)建cmd/test/main.gopackage main import ( fmt io/ioutil log user/gen/go/user // 注意包路徑必須與 go_package 一致 google.golang.org/protobuf/types/known/timestamppb ) func main() { data, err : ioutil.ReadFile(C:/Users/YourName/AppData/LocalLow/DefaultCompany/YourGame/test_user.bin) if err ! nil { log.Fatal(err) } var u user.User if err : u.Unmarshal(data); err ! nil { log.Fatal(Unmarshal failed:, err) } fmt.Printf(ID: %d\n, u.Id) fmt.Printf(Name: %s\n, u.Name) fmt.Printf(Status: %v\n, u.Status) fmt.Printf(Created at: %v\n, u.CreatedAt.AsTime()) fmt.Printf(Metadata: %v\n, u.Metadata) }注意user/gen/go/user的導(dǎo)入路徑必須與user.proto中的option go_package gen/go/user完全一致且gen/go/目錄需在GOPATH/src或go.mod的replace規(guī)則中聲明。編譯并運(yùn)行cd cmd/test go build -o test.exe ./test.exe預(yù)期輸出ID: 42 Name: ZhangSan Status: STATUS_ACTIVE Created at: 2024-05-30 00:00:00 0000 UTC Metadata: map[lang:zh-CN unity:2021.3]6.3 雙向一致性驗(yàn)證C# 解析 Go 生成的字節(jié)為了徹底確認(rèn)雙向無損我們讓 Go 也生成一份字節(jié)再由 C# 解析// 在 cmd/test/main.go 中追加 func generateFromGo() { u : user.User{ Id: 42, Name: ZhangSan, Status: user.Status_STATUS_ACTIVE, CreatedAt: timestamppb.New(time.Unix(1717027200, 123456789)), Metadata: map[string]string{lang: zh-CN, unity: 2021.3}, } data, _ : u.Marshal() ioutil.WriteFile(C:/Users/YourName/AppData/LocalLow/DefaultCompany/YourGame/test_user_go.bin, data, 0644) }然后在 Unity 中添加反向測(cè)試[MenuItem(Protobuf/Test: Deserialize from Go)] public static void DeserializeFromGo() { var bytes System.IO.File.ReadAllBytes(Application.temporaryCachePath /test_user_go.bin); var user User.Parser.ParseFrom(bytes); Debug.Log($Go-generated: ID{user.Id}, Name{user.Name}); }如果兩次測(cè)試C#→Go 和 Go→C#全部通過說明你的 protobuf3 封裝工具鏈已在 Windows 上達(dá)成比特級(jí)通信閉環(huán)——此時(shí)你可以放心地把.proto交給前后端團(tuán)隊(duì)而不用再擔(dān)心“為什么我的字段是空的”。從那以后我每次新建 Unity Go 聯(lián)調(diào)項(xiàng)目都會(huì)先跑一遍這個(gè)Serialize to Bytes→Go Unmarshal→Go Marshal→C# Parse四步驗(yàn)證哪怕只是改了一行.proto。因?yàn)?protobuf 的坑不在編譯期而在運(yùn)行時(shí)字節(jié)流無聲無息的錯(cuò)位里。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99.色网| 亚洲蜜臀视频精品久久| 91美腿丝袜在线观看| 国产第11页| 男人天堂黄片| 看一级黄色视频| 激情综合二| 日本中文字幕在线电影| 91色女| 中国熟女91| 婷婷性网| 无码少妇精品一区二区60岁老人| 97 国产精品| 99色网| 婷婷丁香久久| 亚洲天堂男| 国产精品蜜乳AV| 人妻天天夜夜爽一区二区| 欧美性爱一区二区三区四区| 在线一道啪| 国产美脚女优尤物在线观看| 国内伊人久久久久久网站视频| 国产女生在线| av橘色网站| 激情啪啪拍91| 9久久久久久| 99综合| 97在线播放 | 久久久国产精品亚洲精品| 不卡视频一区蜜桃视频| 国内精品不卡无毒99999| 玖草在线视频| 东北女人操比视频| 国产视频小说| 天天躁日日躁成人字幕aⅴ| 一区二区三区四区久久视1| 亚洲色图欧美色图日韩色图| 91痴汉| 大香蕉九九| 蜜臀99久久国产| 亚洲综合春色| **一级毛片国产| 噜噜噜噜久久久精品免费| WWW4虎| 视频国产成人精品日本亚洲18| 欧美18禁91| 国产性爱在线视频一区二区| 男人的天堂日韩| 日日夜夜干| 国产成人 综合亚洲 天堂| 色九九九综合| 狠狠干,狠狠操| www.99色| 成人免费视瓶| 98久久超碰| 国产青青美女玩逼视频| 天堂蜜桃无码视频一区二区| 久久人人爽人人爽人人片Ⅴ| 日韩视频啪啪| 国产一级舔足在线观看| 欧美一级二级三级| 麻豆一区二区三区在线看| 鸥美精品一区二区久久婷婷| 黑操B| 黄网在线播放| 久久久久久亚洲Av无码精| 国产原创精品| 天天弄天天操| 无码区蜜乳| 久久精品国产AV一区二区三区| 97欧美在线| 亚洲色天堂九9| 欧美色日| 日本免费二区三区| 精品国产乱码久久久久久蜜臀| 日本999精品| 曰韩av中文字幕专区| 国产二区三区免费视频| 日韩熟女操逼| 色成人Www精品永久观看| 成人a v在线播放免费| 啊啊啊啊啊啊在线观看| 激情小说在线视频| 黄页视频网站野外| 久久久久久国产精品| 国产1769在线| 内射日韩大臀美女| 足交视频老司机| 999久久芭蕾| 国产在线激情| 综合色色网| 超碰av在线| 色婷婷丁香五月天| 久久超碰av在线| 一二三卡欧美日韩人妻免费精品| 伊人九九九| 一起草三级AV电影在线观看| av一区二区三区四区| 国产午夜福利电影免费在线观看 | 日韩精品人妻中文字幕有码午| 偷拍欧美激情| 天天操天天7| 国产精品免费久久久久久久久久| 91在线精品| 91亚洲不卡一区| 97超碰免费生活| 亚洲精品久久久久毛片A片拉屎| 国产白丝精品在线观看| 青青草天天亲夜夜操网| 国产免费久久精品99re韩国| 91亚州| 色色色999| 日韩紧密久久| 大香蕉乱级| 丰满人妻一区二区三区免费,| 老熟妇综合| 精品久久久久综合无码| 日本99久久| 久久精品一区二区三区蜜桃臀| wwwxxx日本爽| 91美女高潮| 亚洲中文一区二区三区| 亚洲超碰综合网| 欧美性爱综合,免费| 久久黄人人爽视频| 99激情| 欧美黑人168页欧美黑人167| 亚洲偷拍自拍在线视频| 欧美激情精品久久久| 999亚洲国产视频| 久久久久久久久久久久久久久乱码| 天天欲望网| 99热免费| 性爱边摸边日免费AV| 99蜜桃臀亚洲成人在线观看| www.久久最新地址| 国产精品丝袜在线| 天天摸夜夜操视频| 免費黃色視頻觀看一| 欧美高潮| 久操视频免费在线观看| 亚洲国产精品成人综合| 日本久久久精品电影| 日韩精品一区的| 亚洲色电影在线| 9/A片 | 五月天精品| 亚洲AV无码乱码| 欧美97日韩| 色五月丁香五月| 男女啪啪网站免费视频| 99re在线视频| 欧美在线天堂| 九九热免费在线国产视频伊人五月| 少妇熟女1区2区3区| 人人色人人射人人妻| 91在线色综合| 人妻色偷色噜| 秘书高跟黑色丝袜国产91在线| 天天做日日爱夜夜爽| 人妻9117c| 五月婷婷激情网| 午夜视频好爽啊| 插入粉嫩少妇视频| www.99热在线只有精品| 色色色色电影网| 国产又黄又爽又刺激久久久久久| 日韩有码专区| 亚洲在线a| 久久9免费视频| 国产美女91视频| 99自拍视频在线| 日韩欧美中文日韩欧美色| 亚洲天堂男人天堂网| 日韩干B| 成人老鸭窝人人在线视频| av婷婷色婷婷色六月| 91社操逼| 色情五月丁香| 激情综合亚洲| 亚洲 图片 综合91| 91 国产丝袜在线放观看| 无码9区| 久久久久13| 日韩丨制服丨中文|在线| 亚洲有码 视频一区| 五月丁香婷婷色| 日韩女模中文造逼| 一区二区三区精品黑丝白丝酒店对鸡| 超碰人人乐97| 亚洲国产一区二区三区在线| 91久久18禁| 国产乱弄免费在线视频。| 国产传媒1234区| 亚洲一二三精品久久网| 久久 久久国内精品亚洲 | 亚洲国产综合图区中文字幕| 日本不卡高清视频| 91狠| 国产精品乱码久久久久久| 欧美日韩中国x| 日韩一级二级三级免费看完整版| 日韩黄片影院| 9色在线| 玖玖人人爱| 久久大香蕉手机高清| 日夜干射色啊| 淫荡网址| 91九色在线| 亚洲不卡av在线| 亚洲人人夜夜澡人人爽| 久久精品国产亚洲5555| 人妻aa| 色噜噜狠狠色综无码久久合欧美| 99re6国产精品99re| 久久人| 无码视频黄色网战| 91男人综合| 777琪琪午夜免费A片| 欧美黄色片AAAAA| 九九成人精品| 高清在线不卡一区二区 视频| 久久艹逼视频| 高清肉丝中文无码| 免费a级毛片av无码久久精品中文字幕| 亚洲精品男人的天堂| 亚洲色91C| 亚洲在线网站| 91粉嫩萝控精品福利网站_精品影音先锋国 | 九九热超碰97亚洲最新香蕉| 亚洲欧美精品福利在线| 欧美大片天天看| 国产传媒av天美传媒在线| 免费看黄视频亚洲网站| 人人澡人人弄| 青娱乐国产精品| 蜜桃传媒一区二区亚洲| 男女啪啪网站免费视频| 日本天堂网| 天天上日日上日韩精品| 五月综合色| 乱人乱色一区二区三区免费| 婷婷99狠狠躁天天躁| 日韩欧美性爱电影在线观看| 一区二区三区四区五区高清无码永久视频 | 插欧洲美女欧美精品| 欧美综合 站| 国产精品久久伊人| 中文字幕欧美日韩三级| 亚洲成人色情五月天丁香花| 人人摸人人摸人人干| 九九热午夜欧亚国产视频| 日本一本道A级黄色毛片试看60分钟| 亚洲天堂日本| 久热久一区二区三区| 欧美性爱三区二区| 性色AV蜜色av色欲av| 久草新在线| 嗯啊不要在线观看嗯啊| 美日韩男女操屄视频| 人妻无码后入| 久久婷婷色| 日韩一级久久毛片| 色97干| 伊人久久久日韩一区| 91无码中出人妻视频| 欧美福利视频啊啊啊啊| 欧美高清第一页| 欧美第二页午夜| 丝袜无码a片| 9久久精品| 黄色片一区二区三区四区五区 | 亚洲视频小说| 嗯嗯嗯,草死我| 一级A啪啪啪啪| 亚洲无线码欧洲精品区别| 久久禁| 蜜桃臀一区二区三区久久| 久久天天摸| 激情五月天色色| 国产偷拍自拍在线视频| 色色香蕉| 黄色小视频日本txt| 国产男女边吃边摸视频网站| 内射小黄片| 欧美片第一页| 丝袜熟女一区二区三区| 国产亚洲综合欧美一区| 国产激情片在线观看| 可以免费观看的日韩av毛片| 男女打扑克高清网站| 婷婷深爱五月| 欧美在线官网| 屌妞视频久久久久久久久久久久| 久久m| 国产女人9999| 青青草好吊色| 日韩 国产 欧美自拍| 国产乱伦视频污| 97色伦97色伦国产欧美| 日本操BAV| 嗯嗯啊操我| 高清不卡国产| 欧美亚洲清纯| 国产久久久久久| 丝袜美腿亚洲| 欧日a| 96精品在线| 日本天天干天天搞一区| 欧美性爱超碰97| 内射老妇BBWX0C0CK| Sekablack无码一区| 久久久久久日韩| 狠狠色综合网| 青青草久久一区网| 国内一级精品| 中日亚韩免费视频| www鬼畜国产男人的天堂| 在线情色电影 91大| 爱爱啊啊啊| 日韩,欧美,中文在线| 中文字幕一区二区三区蜜臀| 日韩黄色小说| 影音先锋日本一区二区| 97色伦欧美| 青娱乐黄色录像| 日韩女优中文字幕| 天天性射网| 免费人成?大片在线播放| ,国产乱人伦精品一区二区三区| 亚洲十八禁止| 色色色色日本| av72网| 日韩成人精品| 神马午夜久久久| 亚洲性天堂| 色色色欧美| 精品人妻伦一区二区三区久久| 老熟女乱子伦中文字幕一区二区| 色综和网| 99综合视频一体| 欧亚日本情色| 91视频国品一二三区| 欧美精品激情| 黑丝少妇在线观看| 国产精品盗摄 偷窥盗摄| 九九九综合精品| 国产精品爱欲| 涩亚洲欧洲| 午夜福利成人免费视频| 色图综合| 美女让帅哥通她小鸡鸡| 91狠狠综合久久久久久| 在线视频亚洲无码| 九九国产热| 国产精品无码AV网站| 91久久久亚洲| 无码人妻精品一区二区三区九九 | 欧美 亚洲 另类 综合| 我要去看2个日本美女.com曹逼| 亚洲综合有玛| 亚洲欧美中文日韩视频中国语| 天天操天天舔| 精品无码一二三四区| 97色干| 欧美亚洲色图另类国产| 国产成人精品网站| 精品九九九九九九九| 国产欧美日韩在线不卡第一页| 清纯唯美综合| www被窝色com| 91丝袜在线视频| 欧亚乱色熟一区二区三四区| 国产成人+综合亚洲+天堂| 蜜臀AV秘一区翔田千里| 日本在线999| 国产欧洲精品亚洲午夜拍精品| 国产精品一区二区三区在线密挑| 女人 A一级| 国产毛片毛片4p懂色| 欧美色图综合网| 久久成人网站| 夜夜夜夜久久久久| 欧美春色| 欧姜老司机| 小电影欧美91| 国产欧美另类久久久精品课程| 试看福利| 亚洲午夜蜜臀| 天天欧美| 自慰白浆在线观看| 亚洲丨在线| 欧美日韩大陆黑人少妇99| 99热国产精品| 欧美精品一区二区少妇免费A片 | 嗯嗯啊啊的视频| 欧美激情综合| 日韩一区二区精品视频| 欧美亚洲首页| 2024人人操人人摸| 欧美激情一| 日韩欧美俄罗斯A片| 99re8超碰| 亚洲国产综合视频| 1区2区3区在线视频| 热G综合热G中文| 夜夜天天噜狠狠爱2021| 欧美 传媒 麻豆 日韩 偷拍| 狠狠色噜噜狠狠狠狠2018| 久妇网| 东北熟女91| 天天干天天插| 久草午夜| 欧美操逼视频二区| 久久受www免费人成| 欧美 综合 亚洲| 草草网站影院白丝内射| 亚洲综合另类色图| 五月丁香六月激情综合| a级免费在线观看| 天天碰操中国年青熟妇| 成人av影院在线观看| 亚洲污污网站| 人妻乱仑一区二区三区| 97综合激情| 偷拍欧美激情| 啊嗯嗯啊好大好爽| 久久草在线综合视频| 91精品国产91久久久久久久久久久久| 久热伊人| 亚洲最新Av| 99青青草国产视频| 乱伦熟女区| 极品另类| 亚洲偷拍欧美激情| 有码人妻系列| 四虎影院成年人片| 天天激情综合站| 黑人与人妻| 浪人综合网| 无码人妻1727| 91在线国产后入风骚翘臀美女素人| 国产夫妻性生活视频| 九九玖玖精品| 精品区国产区一区二区三区| av网站在线看| 蜜区区视频79 | 亚洲av强奸乱伦| 国产又黄又爽又刺激久久久久久| 1204人成网站色www| 抽插爽| 六月婷婷五月丁香| 国产超碰| 国产精品女生av| 97国产人人| 麻豆色99999| 欧美日韩精品久久| 伊人精品视频| 中文字幕人妻色偷偷久久皮| 怡红院视频在线| 日韩三级视频一区二区三区| 色小视频蜜乳| 久久综合av| 大香蕉伊人在线成人AV在线观看| 久久午夜伦| 成人免费在线网站| 国产精品呦一区二区三区| 久久久国产av美女私房| 欧亚无码视频| 久草尤物| 欧美性爱免费短视频| 久久久久久久九九九九九九| 九九精品无码专区免费| 国产成人99久久亚洲综合| 91美女视频| 思思久热在线精品66| 国产麻豆91欧美一区二区久久婷婷国产精品 | 97人人超| 日本高清一区二区在线| 黄色香蕉视频网站一区| 欧亚韩国999| 97色97好| 激情文学 亚洲图片| 久久久久久久久久久久黄色 | 欧美不卡二区| 性爱乱伦一区| 成人情色一区二区| 九九九九九九亚洲| 中文字幕人妻色偷偷久久皮| 欧美在线综合| 九九碰九九爱97超| 国产亚洲精品农村妇女| 亚欧无码在线| 97超碰国产精品| 久久久久ab| 亚洲丝袜二区在线| 久久伊人亚洲AV无码网站| 国产 热久久久久国产精品| 这里都是精品在线观看| 看看小穴| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | AⅤ片水多多| 乱伦AVxx| 久久AV无码1区2区3区| 91精品国| 一级特黄aaa大片在线观看成人一级片在线观看 | 任我爽在线视频免费观看| 免费在线视频97| 亚洲成人精品在线一区| 九九综合色| 久久久久无码一妻区| 91久久久亚洲| www.99热| 亚春色色| 亚洲丝袜99| 日韩人妻无码不卡网站| 无码逼| 夜夜高潮夜夜爽高清视频一 | 91日韩网站| www.色操逼| 色大香蕉97N| 在线欧美69V免费观看视频| 夜夜狼人妻| 久久 国产 无码| 国产天天骚| 中国熟女老妇仑乱一区二区三区| 日韩乱码av| 天天网综合| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 国产中文字幕在线点播| 91新在线欧美| 精品欧美А∨无码黑人大荫蒂 | 日韩97超碰中文字幕| 欧美成人精品一区| 激激五月| 电家庭影院午夜69久久夜色精品国产69乱| 精品一区二区三区蜜桃臀赵总 | 日本999精品| 蜜乳性色无码专日粉嫩骚逼AV| 欧美与日韩97| 欧美v亚洲v日韩v最新在线二区| 五月天精品| 丁香久久| 亚洲日韩精品久久久久一区壹牛 | 在线视频一区二区传媒| 久久精品国产亚洲AV无码做| 亚州五月| 青青草原狼av| 国产精品制服丝袜清纯唯美| 91美女视频电影| 丁香九月婷婷| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 欧美经典一区二区三区| 欧美人妻一区二区| 爱射综合| 操比国产| 亚洲欧洲成人在线电影| 国产丰满少妇久久久精品影院| 中文字幕交换人妻| 夜草网站| 超碰97日韩| 熟女一区二区| 五月香婷婷| 国产乱伦亚洲| 久久中文字幕在线观看| 久久99精品九九久久久婷婷| 熟女丰满人妻一区| 岛国在线一区二区三区| 被窝影院午夜看片无码| 欧美劲爆第一页| 中文字幕人乱码中文字的预防方法| 啪啪啪大香蕉| 日本操色导航| 成人26uuu| 网友自拍第一页| 91天天综合在线观看| 日韩 欧美 国产 麻豆| 91久青| 亚洲精品日日夜夜52| 岛国激情视频软件| 青娱乐二区免费| 久久69| 中韩中文字幕在线观看| 久久久精品一区二区| 欧洲Au麻豆| www老逼91| 99热这里只有精品99| 成年女人18级毛片毛片免费观看| 亚洲 日韩 丝袜 熟女 变态| 黄片视频,下载| 91精品无码久久久久久久| 大逼色网站| 91亚洲综合在线| 神马麻豆福利院| 精品无码一区二区三区| 97在线观看免费| 九九这里只有精品| 亚洲欧美电影| WWW操逼| 成人无码在线超碰网| 澳门黄片一香蕉视频| 国产无码高清操逼视频| 欧美日韩亚洲一区二区在线观看| 综合久久久久久久综合网| 亚洲欧洲无码bt精品合集| 操逼大黄片| av天堂手机版追回| 神马久久久久眼| 亚洲第91页 | 青青草在线视频美女| 亚州色图欧美色图| 国产女同在线观看视频| 亚洲图片激情综合另类| 99这里有精品视频| 久久做97| 蜜臀久久99精品久久久久电影| 青青色在线观看| 少妇3P性爱自拍| 婷婷综合五月天| 国产精品高潮久久AV| 噜噜噜噜天天狠狠| 欧美亚洲一级在线观看| 久久九九网| 91亚州欧美| 欧美 亚洲| 一级特级aaaa毛片免费观看| 亚洲天天艹| 99re在线精品78| 99中文字幕| 免费在线黄片视频| 九九九久千久久激情蜜桃在线看| 死我十八禁| 日本1区2区不卡视频| 91丝袜美女国产| 操逼999| 2024年最新色情网站在线观看| 黄页视频网站野外| www.高清无码诱惑一区.com | 日本少妇va7777| 青草一区二区| 91狼人| 亚欧美无遮挡| 久久性爱城| 日本新免费二区三区| 91高潮| 97色色视频| yazhouzaixian| 日韩av一级黄片| 亚洲天堂日本| 91精品女厕偷拍视频| 亚洲AV高潮| 蜜臀视频网站| 在线女人91| 丰满人妻一区二区三区免费| 亚洲丁香花色| 日韩有码专区| 国产人伦精品一区二区三区| 欧美黄色手机在线观看| 国产亚洲欧洲在线观看| 手机在线视频国内精品| 91爰爱欧美| 性videos欧美熟妇hdx| 九九九九日本| 欧美午夜一区二区三区| 四虎影视国产精品| 欧美日韩成人| 亚洲欧美成人网站AAA| 国产精品九9| 午夜寂寞欧美| 国产精品国产精品国产| 不卡一区视频| 爱干爱射网啊啊啊| 大香蕉黄色一区| 操一区| 开心激情婷婷| 天天综合网~69| 有码免费观看| 欧美日韩在线国产在线| 日韩 欧美 国产 麻豆| 国产激情av女片自拍| 人人妻人人爽一区二区三区| 青青草白白色| 男人的天堂亚洲| www.av在线视频| 91综合网在线| 一本久久精品中文字| 精品亚洲国产成人AV制服丝袜| 91丝袜视频在线观看| 色五月第四色| 久久麻豆一区二区| 伦激情人妻另类人妻| 欧美日韩中国x| 天天干2区3区| 五月激情在线| 思思热免费视频观看| 国产精品女aA片爽爽视频| 亚洲淫乱骚妇AV| 狠狠穞A片一區二區三區| 粉嫩av平台| 久热网| 韩国毛片一区二区三区| 大香蕉在线免| 嗯……啊…嗯嗯…啊…好舒服| 国产成人自拍视频在线| 天天干干天天干干| 亚洲AV成人精品网站在AV| 91色插| 日韩欧美三级| 天天干18禁| 色网亚洲人| 日韩精品影视| 亚洲男人综合网| 亚射在线| AV99热18这里只有精品| 大香蕉中文aV在线| 欧美亚洲第1页| 99热色这里只有精品| 久久久久骚| 亚洲色鬼| 欧美午夜精品久久久久久超碰| 国产成人无码久久精品| 热九九精品| 色婷视频| 人妻熟女一区二区| 97天堂| 内射日韩大臀美女| 中文字幕狠狠玩| 久久久久9999| 天操天操夜操夜月操月年年操| 久插综合| 3P丝袜熟女 色综合| 中文字幕国产在线天堂| 在线综合色| 99热在线观看| 综合av影片| 91天天| 精品v日韩欧美国产| 一本正道久久熟女| 国产嫩草精品A88AV| 偷拍偷窥与盗摄视频专区| h无码动漫在线观看| 久久色激情一区二区三区| 中字一区| 中国少妇XXXX做受| 欧美|91色综合| 色欧美色交综合| 蜜臀AV秘一区翔田千里| 丰满人妻-区二区三区免费| 另类视频在线| 欧美日韩性爱电影在线| 亚洲色五月| 黑白配性爱AV成| 亚洲 自拍偷拍 欧美| 手机不卡视频不卡在线一二三区| 东北女人性交| 国产麻豆一级精品视频| 日韩精品怡红院| 人妻啪| 国产精品制服丝袜中文字幕日韩一区二区三区| 欧美偷| 日韩不卡a级视频专区| 男人的天堂2000| 大香蕉视频一二三区| 亚洲欧洲无码97久久精品| 天天影视色香欲综合网小说| 狠狠操夜夜操蜜桃视频三区| 欧美精品庄| 色性综合| 超碰97人妻在线| 丰满少妇一区二区三区四区观看| 亚洲欧美首页| 99999精品视频| 亚洲一区二区三区在线激情| 日韩伦理久 久久 清纯| 亚洲最新Av| 色超碰综合| 久久久免费的精品| 午夜亚洲| 中文字幕91综合| 日韩免费福利在线观看| 午夜综合在线| 任你爽视频| 最新日本中文字幕| 超碰碰激情97+久| 成人性爱电影网| 91A欧美电影网站| 精品少妇人妻| 久久久久国产一区二| 性色乱AV一区二区| 人妻91少妇| 亚洲性综合9| 中国人高清www色视频免费| 天综合网| 久久精品国产亚洲AV清纯| 午夜性| 国产精品视频一区二区三区八戒| 欧美日韩亚洲五月天婷婷| 黄色人人| 午夜噜噜噜| 中文伊人大香蕉视频| 999久久久免费精品国产牛牛| 中国黑人三级片网站上区| 熟女五十路一区二区三| 91中文字幕在线观看| 超碰超碰欧美| 亚洲无码?第一页| 天躁夜夜躁2021| 中美日韩毛片| 亚洲第一免费视频| 国产人妻久久精品一区二区三区| 久久99国产综合精品女同| 欧美大波激情xxxx| 亚春色色| 中国熟女91| 99久久无色码| 99久久综合网| 国产精品久久久久久久AV大片| nuu12国产麻豆精品| 人人手机欧洲亚洲国产人妻| 欧美不卡二区| 精品无码久久久久久久杏吧| 欧美高清在线| 色综合20p| 中文字幕亚洲欧美在线不卡| 色五月婷婷色| 国产精品自在自拍视频| 岛国黄片网站| 亚洲精品久久久久毛片A片拉屎| 另类专区加勒比| 久久一区,青青青青草视频在线播放| 精品亚洲国产成人AV制服丝袜| 日韩激情毛片一级久久久| 亚洲 暴爽 AV人人爽日日碰| 亚洲成人帖图| 欧美玖玖爱免费玖玖| 日本大香蕉综合网红本杳社区| 性色一线| 婷婷激情五月| www久| 激情丁香婷婷| 国产精品国产拍高清AV| 睡产熟女乱伦| 日韩人成网站在线播放| 欧美少妇性爱网站| 一个色导综合| 国产最火爆久久国产网站网站 | 欧美1727免费观看视频| 狠狠狠狠狠干| 综合网,亚洲,欧美| 精品久久久久9999| 日韩精品熟妇| 91亚洲丝袜| 天天躁夜夜躁狠狠躁AV| 爱丝福利| 色臀AV| 91精品国产91久久福利| 操www| 九月丁香综合网| 国产精品亚洲免费| 精品亚洲国产成人AV制服丝袜 | 亚洲 中文字幕 精品| 日韩A优精品在线观看| 国产视频一区二区免费| 欧美图片偷拍| 在线视频五十市| 97欧美色综合| 清纯唯美亚洲综合| 精品高清一区二区三区三州| 97国产成人精品免费视频| 青青网三级视频| 九九九九九九九九九九九九九九九女| 情色五月天网| 亚洲视频精选| 国产精品麻豆视频网站| 天天日天天插| 亚洲熟女乱色一区二区三区久久久| 天天射夜夜| 四虎影视精品| 日韩AV无码中文一区二区| 国产原创自拍| 久久精品人妻一区二区三区| 精品视频在线观看精品| 国产97色在线| 躁躁日曰躁2020| 国产97av| 成人免费福利在线观看| 亚洲精品天天影视综合网 | 乱操9999| 久操凹凸视频| 欧美激情一区二区| 99re免费| 亚洲天堂区| 天堂精品| A 天堂在线观看视频| 爽爽爽免费视频| 深夜国产福利| 老女人老91妇女老热女| 欧美色图91| 色婷婷久久| 97伊人超碰| 欧美激情中文字幕另类小说| 小骚逼被操的爽不爽| 张柏芝国产一区在线观看| 超踫中文字幕| 网友自拍第一页| 大香蕉碰碰| 国产精品片| 丁香五月成人| 日韩av在线精品观看| 91 国产丝袜在线放观看| 国产精品熟女一区二区三区| 熟妇在线视频一区二区| 欧美日韩中文字幕人妻| 玖色AV| 国产乱伦亚洲色图高清无码| 亚洲97P| 精品亚洲国产成人精品| 91路www| 亚洲成人网站在线观看| 久久亚洲AV无码白度| 亚洲图片欧美制度| 99这里只有精品国产| 啊灬啊灬啊灬啊灬高潮奶出了免费视| 在线可观看的黄色网址| 97美日韩视频| 五月天婷婷欧美三区| 亚洲熟妇一,二,三期| 日夜久久久九九九久| xxx0国产在线播放| 欧美精品97| 99综合自拍| 91欧美| 精品久久久久久无码| chaopen97久久| 精品视频日日夜夜| 无码WWW免费视频网站| 国产精品96久久久久久| 成 人 影视 一区 二区 三区 四区| 日本一区二区三区免费观看| 亚州国产成人精品女人久久 | 精品少妇人妻av久久免费| 久久精品电影在线| 亚洲男人的天堂网| 北条麻妃99精品青青久久| 女同性恋久久| 男女日B国产| 老妇女91| 欧美日韩欧美| 亚洲系列欧美| 欧美情色贴图| 蜜色网色哟哟| 99色| 国产又爽又黄| 日本操逼视频导航| 日韩免费在线视频观看| 视频不卡中文字幕| 亚洲第一男人天堂| 亚洲综合一| 亚爽爽爽爽爽爽爽爽| www超碰| 狠狠色狠狠色狠狠五月| 日韩免费三级黄片电影| 日本高清视频在线观看黄已三辽| 日本一天色道久久久精品视频| 男人的天堂2010| 五月天大香蕉| 91粉嫩萝控精品福利网站_精品影音先锋国 | 人妻少妇久久| 91爱看| 九九九九九九九九九九精品视频| 久久99国产综合精品女同| 激激五月| 一道本东京热加勒比一区二区三区| 久草成人福利导航| 岛国小电影| 九九成人精品| 日韩精品电影| 天天色综合影视网| 欧美性性性| 国产强奸乱伦欧美| 97在线观看播放视频| 操逼大黄片| 激情久久av一区av二区av| 粉嫩不卡一区二区性爱| 亚欧韩av| 成人无码专区精品视频| 超碰夫妻97| 久久婷婷苹果| 超碰在线人妻中文字幕| AV和黑人在线播放| 九九RE视频在线精品| 日本人妻一区二区| 天天内射| 亚洲国产97| 国产精品久久久久久照片| 日本性爱不卡视频| 97超碰jingpin| 亚洲自拍欧美色综合| 男人的天堂1024| 中文字幕,人妻,日韩| 狠狠操综合| 欧美日韩少妇色情| 麻豆视频一区二区| 欧美少妇性爱网站| 欧美色棕合| 大香蕉一人| 一级黄色视频网| 久久激情综合| 亚洲精品白丝| 1769国内精品视频| 久久女婷| 日韩成人人妻网站| 天天操天天射天天日| 动漫爆乳3D奶水一区在线观看| 精品176精品2| 色99999| 五月婷婷激情综合| 成人日本片久久久蜜桃| 黄色AAAAA欧美| www.一本大99| 中日韩一区二区三区欧美| 99精品视频在线观看| 久9爱经典视频| 国产AV毛片| 丝袜狠狠草尤物 91| 操逼视频国产无套| 蜜臀av中字字幕网站| 亚洲高清视频在线免费观看| 亚洲激情AV| 久久久青青草| 久久一二三四五六七八九区区区 | 日韩人成网站在线播放| 亚洲资源网| 中文字幕亚洲永久精品| 免费农村成人少妇人妻Aa一区二区视频| 色臀AV| 久热精品色情| 强奸国产精品视频| 制服诱惑亚洲一区二区三区在线观看| 日韩性爱人人爱人人操| 精品国产72| Av色五月| 欧亚成人| 色综合1991| 婷婷色五月激情| 狠狠操狠狠操操| 99re69| 免费啪啪一级视频| 综合久久99| 超碰97最新人妻| 中文字幕狠狠玩| 九九九九精品精| 污污污8888| 色吧五月| 日韩免费福利在线观看| 91熟女少妇| av在线浏览| 亚洲综合一区二区| 国产辣妈在线视频福利| 国产热av| 欧亚洲精品有视频| 亚洲国产成人福利在线观看| 91精品人妻一区二区三区蜜桃| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 丝袜美腿丝袜| 日逼五月天| 欧美日韩夜夜| 日韩探花精品在线视频| 欧美性天天| 清纯唯美综合| 高清肉丝中文无码| 日韩99神马视频播放片在线播放| www网站黄| 亚洲国产尤物yw在线观看| 射久久| AV女资源| 5252色欧美在线男人的天堂| 极品内射| 伊人97色天使| WWW4虎| 日本天天吊| 欧亚免费视频| 免费操逼视频下载| 神马久久久久久伦理片| 久久中文字幕不卡人妻| 东北女人无套内谢视频| 午夜男人的天堂| 91美女片在线| 久久精品女同亚洲女同13| 夜夜操中文字幕| 久久精品99久久久久久| 亚洲精品欧美专业| 国产精品 午夜福利| 国产午夜视频| 亚拍在线| 老司机久久| 在线中文AV| 九九九成人| 免费视频一二三区| 淫荡网址| 亚洲国产成人7777| 18禁免费视频| 永久免费发布性爱网| 日本一区二区不卡精品| 国产欧美一区激情交| 另类综合另类| 91亚洲青青草原精品1区| 国产精品色哟哟| 国产精品乱码久久久久久| 性高潮久久久久久久久久久| 亚洲另类春色| 免费观看性欧美一级| 色爱三区| 超碰97爽| 无码视频一区二区| 国内毛片四区| 大香蕉黄色一级片免费看| 欧美强奸一区二区诱惑| 96精品在线| 国产精品69久久久久孕妇欧美| 日韩一二三区| 亚洲精品一二区| 日本免费中文一区二区三区四区| 麻豆AV短剧| 国产精品96久久久久久| 亚洲无码超碰免费| 日韩无码专区| 国产丸一视频| 操操逼视频| 久热9| 941超碰| 亚洲中文字幕久久人妻| 殴美性色a级欧美| 亚洲熟女乱综合一区二区三区| 久久这里只| 国产精品亚洲美女久久久久| 久久久久久91香蕉国产| av天堂加勒比| 国产精品探花视频| 国产熟女精品区| 亚洲av国产av综合av卡| 婷婷综合| 人妻人久久精品中文字幕| 黑人狂躁日本妞一区二区三区| 九九九久千久久激情蜜桃在线看 | 国产第11页| 女性喷水高潮在线观看| 亚洲九九夜夜| 欧美日韩色| 日韩素人无码一区二区三区三州| 揉揉揉夜夜| 亚洲av乱伦色图网站| 超碰精品人妻狠狠干| 婷婷丁香五月天综合东京热| 夜夜福利| 欧美Ⅴ性爱| 亚洲av热热色| 很黄很色的视频在线观看| 使劲用力艹少妇视频一区二区| 成人av福利在线观看|