国产无遮挡免费视频_热久久99这里有精品_无码内射中文字幕岛国片_4hu四虎永久在线影院成人_国产精品麻豆一区_欧美成人亚洲成人_亚洲黄色在线免费观看_精品久久久久久中文字幕动漫_中文字幕久久午夜不卡_日韩中文字幕在线视频播放_五月激情五月婷婷_日本美女视频一区二区

領(lǐng)克EM-P超電雙子星累計(jì)交付突破20萬臺(tái)1.5 億大單背后,看智谷天廚如何“玩轉(zhuǎn)”炒菜機(jī)器人旭化成微電子攜手美國初創(chuàng)公司Aizip提供AI賦能的創(chuàng)新傳感解決方案海辰儲(chǔ)能重磅推出全球首個(gè)原生8小時(shí)長時(shí)儲(chǔ)能方案,引領(lǐng)全天候綠電新變革英特爾®至強(qiáng)® D處理器:賦能智能網(wǎng)卡,破解算力-網(wǎng)絡(luò)協(xié)同瓶頸已滿產(chǎn)!面板大廠LG Display正擴(kuò)產(chǎn)、改線9999元!號(hào)稱業(yè)界主機(jī)最小的激光電視來了,它出自“誰”手?從“消費(fèi)平權(quán)”到“生活精算”,看TCL真省電Pro二代定義年輕人空調(diào)洞見2025:AI驅(qū)動(dòng)的新家電時(shí)代LightCounting:2025年光模塊市場規(guī)模將突破230億美元第二屆“興智杯”全國人工智能創(chuàng)新應(yīng)用大賽總決賽暨人工智能賦能應(yīng)用與創(chuàng)新生態(tài)活動(dòng)在深圳成功舉辦胡潤研究院發(fā)布《2025胡潤全球高質(zhì)量企業(yè)TOP1000》 騰訊 字節(jié)跳動(dòng) 阿里巴巴入選中國企業(yè)前十名3D AIGC 迎來架構(gòu)級(jí)重構(gòu):Neural4D-2.5首創(chuàng)“原生貼圖與感知一體化”RingConn智能戒指出海深析:如何在巨頭環(huán)伺中拿下全球類目第二?國產(chǎn)雪具賣爆了!超3成冰雪裝備相關(guān)企業(yè)在華東小米發(fā)布新模型MiMo-V2-Flash:媲美 DeepSeek-V3.2排骨羽絨服爆火成今年冬天頂流,今年羽絨相關(guān)企業(yè)注冊(cè)量已超10萬老板公開成本的透明蛋糕店火了!今年已注冊(cè)2.4萬家蛋糕相關(guān)企業(yè)首批L3級(jí)自動(dòng)駕駛車型獲準(zhǔn)入許可!智能駕駛相關(guān)企業(yè)多分布在華東小米等友商“抱團(tuán)”,董明珠拒絕“隨大流”?
  • 首頁 > 產(chǎn)經(jīng)新聞?lì)l道 > 業(yè)界新聞

    環(huán)信IM Unity SDK 2.0正式發(fā)布,大大提升開發(fā)效率

    2021年08月25日 10:33:39 來源:中文科技資訊

      引言

      Untiy作為游戲引擎和內(nèi)容開發(fā)平臺(tái),吸引了眾多游戲開發(fā)者,基于其開發(fā)的游戲更是不勝其數(shù)。具體請(qǐng)參見1。

    1.jpg

      環(huán)信作為領(lǐng)先的即時(shí)通訊云服務(wù)商,在游戲行業(yè)也進(jìn)行了持續(xù)的探索和研發(fā)投入。在產(chǎn)品發(fā)布的早期(2015年)就推出了Unity SDK,幫助游戲開發(fā)者快速實(shí)現(xiàn)游戲場景下諸如世界頻道,游戲公會(huì)、組隊(duì)群聊,1對(duì)1私聊等功能,安全穩(wěn)定的服務(wù)也為游戲玩家?guī)砹藰O佳的實(shí)時(shí)溝通體驗(yàn)。

      2021年第二季度,環(huán)信IM Unity SDK進(jìn)行了重構(gòu)改版,環(huán)信IM Unity SDK 2.0正式發(fā)布,主要改進(jìn)包括如下:

      1、迭代更新,更加實(shí)用的API接口

      2、IM+Push增強(qiáng)功能的補(bǔ)全

      3、C#語言層面引入了版本7.0 – 9.0之后的一些新語法改進(jìn)

      4、特別的,增加了PC端Unity Editor環(huán)境下編譯調(diào)試支持,大大提升了開發(fā)效率

      在過去的一段時(shí)間里,筆者也參與了相應(yīng)的研發(fā)工作。在整個(gè)過程中,為了解決各種問題,不僅要到處翻閱資料,還要嘗試各種方法和參數(shù)組合。其間也經(jīng)歷了各種程序崩潰甚至系統(tǒng)崩潰,詭異的程序表現(xiàn)一次次讓開發(fā)人員束手無策,四處碰壁,當(dāng)真像深夜里行走在迷宮之中,手里還拿著一個(gè)待破解的魔方。“此路不通,請(qǐng)繞行!”,是在一次次的嘗試后無奈的慨嘆和難舍的放棄。而一旦問題最后得到圓滿解決,又宛如飛入云端,以上帝視角俯瞰一片片迷宮,一切又顯得那么理所當(dāng)然,繁復(fù)瑣細(xì)但又絲絲入扣,這樣的苦盡甘來也算是做程序員能享受到的巨大喜悅和滿足。

      不敢獨(dú)享,特記錄下一些心得供大家參考,也歡迎.NET平臺(tái)資深玩家批評(píng)指正。以下,Enjoy!

      開發(fā)概覽:非托管插件開發(fā)(Native/Unmanaged Plugin)

      Unity是基于Microsoft .Net Framework開發(fā)的游戲引擎2,它采用了開源的.NET Platform,并依賴此框架來實(shí)現(xiàn)跨硬件設(shè)備和運(yùn)行時(shí)(操作系統(tǒng))的目標(biāo),也是所謂的”Write once, run anywhere”。在語言方面,Unity選擇C#作為主要的腳本編程語言,雖然.NET平臺(tái)本身支持的語言有很多種。

      進(jìn)一步,Unity支持Mono和ILC2PP兩種腳本框架(Scripting Backends)。特別的,Unity Editor采用的是Mono腳本框架。

      一般的,游戲類庫開發(fā)者可以選擇直接用C#語言開發(fā),目標(biāo)類庫可以實(shí)現(xiàn)基于.NET Framework基礎(chǔ)功能之上的高級(jí)功能,這類插件稱之為Managed Plugin(托管插件)。由于環(huán)信IM核心SDK已經(jīng)基于C++開發(fā),因此我們選擇另一種Native Plugin(本地插件)的方式,正是它把我們引向了迷宮之旅。兩種類型的Plugin介紹,參見3。

      不幸的是,Unity網(wǎng)站上關(guān)于Native Plugin的相關(guān)介紹少只又少,想要了解它的具體細(xì)節(jié)還要去參考Microsoft MSDN文檔。作為中規(guī)中矩的文檔介紹,微軟的文檔是合格的,但是,當(dāng)你真正上手編程時(shí)就會(huì)發(fā)現(xiàn),這些遠(yuǎn)遠(yuǎn)不夠:下面記錄的一些坑點(diǎn)就很難在相應(yīng)的文檔中得到直接的提示;而要通過Google大法,結(jié)合其他程序員留下的蛛絲馬跡,再加上自己不斷的調(diào)試來最終確認(rèn)。

      在微軟文檔上下文中,Unity Native Plugin有個(gè)另外的名字:Unmanaged Plugin,即非托管插件。簡單來講,Managed Plugin生存在.NET Framework的運(yùn)行時(shí)環(huán)境(類似于Java的JVM),而Unmanaged Plugin則生存在這個(gè)運(yùn)行時(shí)環(huán)境之外,也即和運(yùn)行時(shí)環(huán)境是兄弟的關(guān)系。如果你原本的類庫實(shí)現(xiàn)滿足微軟的COM(Component Object Model)規(guī)范,那自然最好是使用COM Interop4的互操作方式;而環(huán)信IM SDK本身是純C++實(shí)現(xiàn),因此采用了Platform Invoke5(簡稱P/Invoke)方式,本文剩下的內(nèi)容均是基于P/Invoke。

      下圖則概要描述了Managed和Unmanaged區(qū)域代碼之間互相操作的方式:

      更具體的,為了實(shí)現(xiàn)對(duì)于Unmanaged DLL function的調(diào)用,只需要簡單的4步6:

      1、確認(rèn)DLL類庫中需要被操作的函數(shù);

      2、創(chuàng)建一個(gè)C#類來關(guān)聯(lián)被操作的這些函數(shù)(給函數(shù)穿上一個(gè)馬甲,以便集中管理和反復(fù)調(diào)用);

      3、使用DllImport標(biāo)志在受管側(cè)(C#)定義函數(shù)原型;

      4、在受管側(cè)隨意調(diào)用相關(guān)非托管區(qū)域函數(shù)。

      上圖中,Standard marshalling service即負(fù)責(zé)將數(shù)據(jù)在兩個(gè)區(qū)域進(jìn)行封裝/解封裝傳送(marshall/unmarshall),它主要定義了數(shù)據(jù)在兩個(gè)不同內(nèi)存區(qū)域進(jìn)行拷貝(Copy)和引用(Reference)的規(guī)則7,而迷宮中的坑主要是和這些具體規(guī)則有關(guān)。

      坑王駕到之封送(Marshall/Unmarshall)中的那些坑

      坑一:sizeof(bool) = ?

      絕大多數(shù)的基本類型屬于Blittable Types8:如System.Byte, System.Single等。System.Boolean雖然不屬于Blittable types,但是Standard Marshalling Service默認(rèn)將其轉(zhuǎn)換為1,2,4字節(jié)的內(nèi)存存儲(chǔ),當(dāng)其值為true時(shí),其對(duì)應(yīng)的值為1。如果你想當(dāng)然的直接將System.Boolean映射到Unmanaged側(cè)的bool類型而不做特別處理的話,你并一定會(huì)理解碰到編譯或者運(yùn)行時(shí)錯(cuò)誤,但是如果你嚴(yán)格的測試每個(gè)字段是,會(huì)驚訝的發(fā)現(xiàn)這些bool值跟你想象的不盡相同:有時(shí)正確,有時(shí)錯(cuò)誤。

      經(jīng)過調(diào)試跟蹤,動(dòng)態(tài)打印sizeof(bool)來確認(rèn)Unmanaged側(cè)bool類型數(shù)據(jù)長度后,你會(huì)發(fā)現(xiàn)System.Boolean默認(rèn)會(huì)被保存為4個(gè)字節(jié)長度,而在macOS環(huán)境下(對(duì)于其它環(huán)境,需要自行認(rèn)證),C++定義的bool其實(shí)只有一個(gè)字節(jié)。因此當(dāng)你在Unmanaged側(cè)取bool值的時(shí)候,其實(shí)只讀取了System.Boolean的1/4個(gè)字節(jié)而已。而當(dāng)你聲明了多個(gè)連續(xù)的System.Boolean/bool值時(shí),可能在Unmanaged側(cè)讀取的這幾個(gè)bool值僅僅是第一個(gè)System.Boolean值的不同偏移字節(jié)而已。

      知道了原因,解決方案自然就出來了,在Managed側(cè)強(qiáng)制聲明System.Boolean字段封送到Unmanaged側(cè)時(shí)僅使用一個(gè)字節(jié):

      [MarshallAs(UnmanagedType.U1)]public bool TrueOrFalse;

      坑二:字節(jié)對(duì)齊

      對(duì)于C++開發(fā)者來說,可能知道當(dāng)一個(gè)數(shù)據(jù)結(jié)構(gòu)(class or struct)中的各字段在內(nèi)存中進(jìn)行排列時(shí),會(huì)按照一個(gè)設(shè)定的裝箱長度進(jìn)行字節(jié)對(duì)齊,例如:

      struct MyStruct {

      int one;

      short two;

      int three;

      bool four;

      }

      假設(shè)在我們的平臺(tái)上,sizeof(int)=4, sizeof(short)=2, sizeof(bool)=1, 如果問你sizeof(MyStruct)=?,你可能會(huì)馬上做個(gè)加法得到答案,但是答案不一定對(duì)。It depends! 假設(shè)我們是按照4個(gè)字節(jié)對(duì)齊,這上面的結(jié)構(gòu)體在內(nèi)存中實(shí)際排列如下圖:

      了解這個(gè)對(duì)于我們編碼有兩個(gè)意義:

      1、通過合理排列字段聲明順序來優(yōu)化存儲(chǔ)效率,內(nèi)存布局中不留空洞;

      2、MarshalAsAttribute支持Layout.Explicit來進(jìn)行絕對(duì)定位,懂得了字節(jié)對(duì)齊可以配合Unmanaged側(cè)的內(nèi)存排列規(guī)則以保證字段長度映射正確,不然同樣會(huì)發(fā)生字段長度不一致帶來的困擾。

      坑三:如何避免Double Free

      Standard Marshalling Service/Interop marshaller總是試圖釋放Unmanaged側(cè)代碼分配的內(nèi)存9,這會(huì)帶來Double Free的問題,如果碰到這種問題,程序就會(huì)直接崩潰。

      引用資料中舉了以下例子:

      BSTR MethodOne (BSTR b) {

      return b;

      }

      如果這段代碼直接從Unmanaged側(cè)DLL中直接執(zhí)行,不會(huì)發(fā)生任何額外的內(nèi)存釋放;但是當(dāng)你從Managed側(cè)調(diào)用這個(gè)方法時(shí),b會(huì)被釋放兩次。

      而更讓人抓狂的是,并沒有相應(yīng)的信息提示究竟是哪個(gè)指針,哪個(gè)字段被Double Free了,你唯一能做的就是一點(diǎn)點(diǎn)加代碼來驗(yàn)證自己猜測。所以,嚴(yán)格來說,并沒有一個(gè)萬無一失的方案來避免Double Free,你唯一能做的就是通過測試來驗(yàn)證結(jié)果(有點(diǎn)盲擰魔方的味道了)。

      有兩個(gè)基本的方法來解決Double Free的問題:

      1、按照官方文檔建議,在Unmanaged側(cè)通過使用CoTaskMemAlloc來分配內(nèi)存,通過此種方法分配的內(nèi)存,除非顯式調(diào)用了CoTaskMemFree方法(在Unmanaged側(cè)或者M(jìn)anaged側(cè)均可以調(diào)用),Interop Marshaller會(huì)嚴(yán)格保證不去釋放該內(nèi)存。使用這種方法可以靈活的在任意一側(cè)分配內(nèi)存,并在合適的時(shí)候在另一側(cè)釋放內(nèi)存。

      2、但上面這種方法貌似僅適用于Windows平臺(tái),在macOS下沒有辦法使用(需要引用win32base.dll相關(guān)實(shí)現(xiàn))。在macOS下僅能通過在Mananged側(cè)調(diào)用Marshal.AllocCoTaskMem()方法分配內(nèi)存,并通過Marshal.FreeCoTaskMem()來在同一側(cè)進(jìn)行釋放(按照此方法分配的內(nèi)存指針傳入U(xiǎn)nmanaged側(cè)后,不要進(jìn)行任何釋放即可)。另外有一個(gè)不太可靠的workaround是:在Unmanaged一側(cè)創(chuàng)建的內(nèi)存指針盡量通過IntPtr傳遞,并在可能的時(shí)候?qū)?duì)象中一些指針類型的屬性值置空,以避免Double Free的發(fā)生。

      坑四:virtual函數(shù)帶來的內(nèi)存布局變化

      vptr和vtable是C++的一個(gè)概念:當(dāng)你定義的類型中有虛函數(shù)存在時(shí),內(nèi)存對(duì)象的第一個(gè)位置會(huì)存放一個(gè)vptr指針,該指針指向vtable(虛函數(shù)表)。因此當(dāng)你開始創(chuàng)建的自定義類型一開始沒有虛函數(shù)時(shí)(包括虛析構(gòu)函數(shù)virtual ~MyClass()),一切運(yùn)行正常。有一天你重構(gòu)此類型,增加了一些虛函數(shù):DUANG,一切都崩塌了!原因就在于Unmanaged側(cè)內(nèi)存對(duì)象的排列規(guī)則變了,原有的對(duì)象字段都被新加入的vptr往后面移位了。此時(shí)可能你唯一能做的就是通過Layout.Explicit來手工對(duì)齊每一個(gè)字段新的位置。

      其它坑

      坑一:針對(duì)M1芯片編譯

      對(duì)于M1芯片的macOS系統(tǒng),編譯環(huán)信IM Unity SDK時(shí)候需要注意幾個(gè)問題:

      1、XCode編譯時(shí)需要Excluded Architecture中排除arm64架構(gòu)(很奇葩的設(shè)置,不是應(yīng)該排除x86嗎?)

      2、類庫的依賴解決:通過otool -L命令來確認(rèn)相應(yīng)的plugin依賴的類庫位置都正確(文件路徑下文件確實(shí)存在),如果相應(yīng)文件不存在要手工拷貝文件到指定目錄:而新的macOS安全架構(gòu)限制了往系統(tǒng)目錄下(如/usr/lib)進(jìn)行任何改動(dòng),一個(gè)臨時(shí)的解決方法是通過install_name_tool工具主動(dòng)修改類庫依賴路徑到另一個(gè)可以放置新文件的位置(如home目錄)。

      坑二:Delegate的正確使用姿勢

      如果Managed側(cè)的編程語言是C#,則Delegate是實(shí)現(xiàn)回調(diào)的重要手段。在Unmanaged側(cè)完成期望工作時(shí)回調(diào)一個(gè)FunctionPtr即可實(shí)現(xiàn)通用的回調(diào)模式,而此FunctionPtr正是對(duì)應(yīng)到Managed側(cè)的Delegate。當(dāng)你的Delegate綁定到一個(gè)類對(duì)象上時(shí),你有兩種選擇:

      namespace ChatSDK {

      //delegate definition

      public void delegate OnMessageReceived(EMMessage message);

      public class MyDelegate {

      //Option 1: field

      public OnMessageReceived MyMessageReceived;

      //Option 2: instance method

      public void OnMessageReceived(EMMessage message)

      {

      ...

      }

      }

      //send delegate method to unmanaged side

      MyDelegate md = new();

      NativeMethods.SetOnMessageReceivedCallback(md.MyMessageReceived); //option 1

      NativeMethods.SetOnMessageReceivedCallback(md.OnMessageReceived); //option 2

      }

      看起來兩個(gè)方式都沒有問題,并且第二個(gè)方式看起來更順眼。但是這里隱藏著一個(gè)很深的坑,就是你選擇第二個(gè)方式的時(shí)候,如果你在回調(diào)方法實(shí)現(xiàn)中采用this.xxx方式引用時(shí),你會(huì)發(fā)現(xiàn)this = null!這是因?yàn)楫?dāng)你使用這種方式傳遞一個(gè)對(duì)象的方法作為回調(diào)方法指針時(shí),其實(shí)已經(jīng)丟失了Delegate.Target(也就是this)屬性。而通過第一種方式傳遞的是一個(gè)對(duì)象的屬性/字段,它和對(duì)象本身的綁定是不會(huì)在傳遞過程中丟失的。

      至于該Delegate字段的定義可以在此類的構(gòu)造函數(shù)中通過以下方式實(shí)現(xiàn):

      ...

      public MyDelegate() {

      MyMessageReceived = (EMMessage message) => { ... }

      }

      ...

      參考資料

      1、List of Unity Games: https://en.wikipedia.org/wiki/List_of_Unity_games

      2、Unity and .NET: https://docs.unity3d.com/Manual/overview-of-dot-net-in-unity.html

      3、Unity Scripting-Plugins: https://docs.unity3d.com/Manual/Plugins.html

      4、COM Interop: https://docs.microsoft.com/en-us/dotnet/standard/native-interop/cominterop

      5、Platform Invoke: https://docs.microsoft.com/en-us/dotnet/standard/native-interop/pinvoke

      6、如何調(diào)用Unmanaged DLL Functions:https://docs.microsoft.com/en-us/dotnet/framework/interop/consuming-unmanaged-dll-functions

      7、Interop Marshalling:https://docs.microsoft.com/en-us/dotnet/framework/interop/interop-marshaling

      8、Blittable Types: https://docs.microsoft.com/en-us/dotnet/framework/interop/blittable-and-non-blittable-types

      9、Double Free: https://docs.microsoft.com/en-us/dotnet/framework/interop/default-marshaling-behavior

      文章內(nèi)容僅供閱讀,不構(gòu)成投資建議,請(qǐng)謹(jǐn)慎對(duì)待。投資者據(jù)此操作,風(fēng)險(xiǎn)自擔(dān)。

    海報(bào)生成中...

    [No.X016-1]

    最新新聞

    熱門新聞

    即時(shí)

    全球頂級(jí)AI創(chuàng)作社區(qū)回歸!海藝AI國內(nèi)首發(fā)“全民娛樂化創(chuàng)作

    海藝AI的模型系統(tǒng)在國際市場上廣受好評(píng),目前站內(nèi)累計(jì)模型數(shù)超過80萬個(gè),涵蓋寫實(shí)、二次元、插畫、設(shè)計(jì)、攝影、風(fēng)格化圖像等多類型應(yīng)用場景,基本覆蓋所有主流創(chuàng)作風(fēng)格。

    新聞

    市場占比高達(dá)35.8%,阿里云引領(lǐng)中國AI云增長

    9月9日,國際權(quán)威市場調(diào)研機(jī)構(gòu)英富曼(Omdia)發(fā)布了《中國AI云市場,1H25》報(bào)告。中國AI云市場阿里云占比8%位列第一。

    企業(yè)IT

    華為坤靈發(fā)布IdeaHub千行百業(yè)體驗(yàn)官計(jì)劃,助力中小企

    9月24日,華為坤靈召開“智能體驗(yàn),一屏到位”華為IdeaHub千行百業(yè)體驗(yàn)官計(jì)劃發(fā)布會(huì)。

    3C消費(fèi)

    雅馬哈推出兩款高端頭戴耳機(jī)YH-4000與YH-C3000

    雅馬哈昨日宣布推出兩款頭戴式耳機(jī),分別是平板振膜的YH-4000和動(dòng)圈原理的YH-C3000。

    研究

    IDC:2025上半年全球智能家居清潔機(jī)器人出貨量同比暴

    IDC今日發(fā)布的《全球智能家居清潔機(jī)器人設(shè)備市場季度跟蹤報(bào)告,2025年第二季度》顯示,上半年全球智能家居清潔機(jī)器人市場出貨1,2萬臺(tái),同比增長33%,顯示出品類強(qiáng)勁的市場需求。

    国产精品久久激情| 久久综合久久网| 色综合色综合色综合 | 日日摸夜夜添夜夜添精品视频| 美女一区二区三区视频| 18久久久久久| 欧美高清视频在线播放| 亚洲第一色中文字幕| 一区二区三区日韩| 美美哒免费高清在线观看视频一区二区| 国产精品日本一区二区| 欧美一区二区三区在线视频| 国产九色精品成人porny | 国产免费a级片| 女同性恋一区二区| 91原创国产| 欧美年轻男男videosbes| 美腿丝袜在线亚洲一区| 久久国产精品精品国产色婷婷| 精品久久久久久中文字幕| 亚州精品国产精品乱码不99按摩| 国产乱淫av免费| 中文字幕av影视| 国产九色在线播放九色| 亚洲av无码成人精品国产| 92国产精品久久久久首页| 欧美综合视频在线观看| 久久99久国产精品黄毛片色诱| 亚洲熟女一区二区三区| 欧美人与物videos| 一区二区三区四区不卡在线| 亚洲v日本v欧美v久久精品| 污视频网站免费观看| 日本猛少妇色xxxxx免费网站| 亚洲一区 在线播放| 日韩欧美国产一区二区| 国产亚洲视频系列| 免费观看日韩电影| 成人美女在线视频| 久久久91精品国产一区二区精品| 成人动漫一区二区在线| 久久中文字幕电影| 亚洲av无码一区二区三区性色| 性生活免费在线观看| 成人一区二区电影| 久久这里有精品| 成人午夜电影小说| 精品无码免费视频| 国产福利精品一区二区三区| 成人性做爰aaa片免费看不忠| 国产精品一区二区不卡视频| 久久91亚洲人成电影网站| 国产欧美1区2区3区| 最近国语视频在线观看免费播放| 黄免费在线观看| 日韩av成人在线观看| 中文字幕一区在线| www.久久久久久久| 三年中国中文在线观看免费播放 | 在线成人一区二区| 国产午夜精品一区二区三区四区| 国产美女永久免费无遮挡| 久久人91精品久久久久久不卡| 国产黄a三级三级三级| 影音先锋欧美在线| 精品亚洲va在线va天堂资源站| 水野朝阳av一区二区三区| 欧美性久久久久| 91精品国产精品| 国产欧美日韩不卡免费| 久久精品www| 欧美精品一区二区三区四区五区 | 日本精品视频网站| 国产精品久久久久久久午夜片| 天天操天天摸天天舔| 精品一区久久久| 日韩欧美国产一区二区三区| 国产精品中文字幕一区二区三区| 九九精品视频免费| 国产欧美精品xxxx另类| 亚洲自拍偷拍麻豆| 在线观看免费黄色网址| 久久999免费视频| 亚洲视频一二三| 亚洲av综合一区| 欧美成人乱码一二三四区免费| 欧美福利在线观看| 亚洲老司机在线| 97超视频在线观看| 蜜臀av免费观看| 国产精品中文久久久久久久| 欧美日韩亚洲综合| 国产91对白在线观看九色| 国产精品第九页| 狠狠热免费视频| 成人精品在线观看| 精品国产伦一区二区三区观看方式| 国产一区二区女| 精品国产乱码久久久久久鸭王1| 国产又粗又猛又爽又黄的网站| 色www精品视频在线观看| 国产麻豆一精品一男同| 成人在线观看www| 青青草精品毛片| 亚洲精品在线观看视频| 亚洲免费在线观看视频| 蜜桃视频第一区免费观看| 四虎免费在线视频| av影片在线播放| 蜜桃视频在线观看成人| 久久福利视频网| 欧美三级中文字| 97se亚洲国产综合自在线观| 国模私拍一区二区| 亚洲午夜久久久久久久久| 奇米视频888战线精品播放| 青青草一区二区| 日韩电影在线观看中文字幕 | 日韩欧美中文字幕在线观看| 亚洲一区二区三区高清视频| 一级国产黄色片| 欧美,日韩,国产在线| 成人羞羞国产免费| 久久精品国产欧美亚洲人人爽| 欧美亚一区二区| 136国产福利精品导航| 美女视频黄a大片欧美| 国产一级片免费视频| 人妻少妇无码精品视频区| 欧美日韩在线免费播放| 亚洲一区二区三区精品视频| 亚洲影院污污.| 9.1国产丝袜在线观看 | 波多野结衣a v在线| 日韩欧美一区二| 自拍视频一区二区三区| 亚洲一区不卡在线| 欧美精品videossex性护士| 亚洲精选视频免费看| 亚洲成a人片77777精品| 免费观看成人毛片| 免费一级片视频| 美女福利视频网| 久久久久国产精品区片区无码| 日韩一区二区三区久久| 福利视频一区二区三区四区| 欧美精品七区| 成人免费福利视频| 国产精品夫妻激情| 成人av中文| 91精品黄色| 成人黄色在线免费| 国产精品专区h在线观看| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲欧美国产高清| 91在线高清观看| 国产在线播放一区二区三区 | 亚洲精品v日韩精品| 老熟妇高潮一区二区高清视频| 国产剧情在线视频| 91精品视频免费在线观看| 在线观看亚洲黄色| 7799精品视频天天看| 少妇一级淫片免费放中国 | 日韩 欧美 视频| 中文字幕日韩一区二区三区| 亚洲无玛一区| 毛片av在线播放| 超碰在线播放91| 91成人在线观看喷潮蘑菇| 亚洲午夜久久久久久久久| 国产二级一片内射视频播放| 一级二级黄色片| 欧美bbbbbbbbbbbb精品| 国产乡下妇女三片| www日本高清视频| 国产一区二区在线视频| 麻豆高清免费国产一区| 欧美日韩在线观看成人| brazzers精品成人一区| 99久久99久久精品免费看小说.| 女人18毛片毛片毛片毛片区二| 玖玖爱免费视频| 国产精品爽爽久久久久久| 亚洲欧美国产高清va在线播放| 成人精品一区二区三区四区| 日韩电影大片中文字幕| 亚洲美女自拍视频| 国产精品国产福利国产秒拍| 国产精品综合不卡av| 国产男女无遮挡| 不卡一区二区在线观看| 国产女18毛片多18精品| 理论片日本一区| 欧美午夜视频一区二区| 91精品国产综合久久精品| 中文字幕成人在线| 国产一区视频在线播放| 国产人妻互换一区二区| 久久久久亚洲无码| 久久久久久久9999| 视频一区中文字幕| 久久麻豆一区二区| 在线免费观看日本欧美| 国产性猛交xxxx免费看久久| 国产精品久久久久久久久男 | 亚洲人成在线一二| 国产成人在线一区| 一级特黄性色生活片| 扒开jk护士狂揉免费| 日韩免费视频一区二区视频在线观看| 国产又粗又黄又爽的视频| 麻豆视频一区二区| 亚洲色欲色欲www| 日韩经典一区二区三区| 1卡2卡3卡精品视频| 北条麻妃在线一区| 日本少妇bbwbbw精品| 国产精品资源站在线| 丁香五六月婷婷久久激情| 欧美激情视频网站| 精品无码av无码免费专区| 手机av免费看| 在线天堂中文字幕| 狠狠狠色丁香婷婷综合激情| 久久久久国产一区二区三区四区 | 亚洲欧洲日韩国产| 成人福利网站在线观看11| 无码人妻aⅴ一区二区三区69岛| 中文字幕永久在线观看| 粉嫩嫩av羞羞动漫久久久| 亚洲一区二区黄色| 亚洲黄色av网站| 国产在线一区二| 亚洲无人区码一码二码三码的含义| 日韩三级一区二区三区| 亚洲第一黄色片| 久久久久综合网| 欧美性做爰猛烈叫床潮| 久久精品在线视频| 国产一区二区免费电影| 少妇高潮大叫好爽喷水| 中文字幕有码在线播放| 国内精品视频666| 欧美一卡2卡三卡4卡5免费| 国产97在线|日韩| 免费一级特黄特色毛片久久看| 免费观看国产视频| 久久久久久久影院| 天美星空大象mv在线观看视频| av网站免费播放| 最近2019中文字幕mv免费看| 欧美日韩午夜视频| 欧美激情一区不卡| 一级做a爰片久久毛片美女图片| 久久久一二三四| 波多野结衣在线观看视频| 中文字幕一区二区不卡| 国产欧美精品xxxx另类| 国产精品伦子伦| 国产精一品亚洲二区在线视频| 91麻豆精品国产91久久久更新时间| 国产九色91| 久久国产高清视频| 中文字幕在线观看一区| 2019中文在线观看| 国模大尺度视频| 精东粉嫩av免费一区二区三区| 国产视频一区在线| 日本www.色| 少妇精品视频一区二区| 亚洲аv电影天堂网| 国产精品美女在线播放| 亚洲欧美丝袜中文综合| 91精品国产综合久久精品| 中文字幕中文字幕99| 草视频在线观看| 成人小视频免费观看| 久久亚洲国产精品成人av秋霞| av直播在线观看| 欧美成人在线直播| 亚洲字幕av一区二区三区四区| 国产一区二区高清不卡| 国产精品久久久久久久久久免费看| 99精品免费在线观看| 久久青草国产手机看片福利盒子| 成人免费观看a| 国产黄色网址在线观看| 国产精品免费看片| 国产精品欧美久久| 久久在线视频精品| 欧美日韩精品久久久| 亚洲无玛一区| 日韩成人一级大片| 国产69精品久久久久久| 日韩女优一区二区| 91精品国产乱| 婷婷六月天在线| 99免费精品在线| 国产精品亚发布| 人妻中文字幕一区二区三区| 亚洲激情 国产| 日本中文字幕二区| 欧美韩国日本综合| 麻豆av一区二区三区久久| 粉嫩av一区二区夜夜嗨| 欧美国产极速在线| 五月天婷婷网站| 欧美成在线视频| 日本高清www| 日韩欧美中文一区二区| 日韩视频第二页| 日韩高清欧美激情| 日韩美女av在线免费观看| 无码人妻av一区二区三区波多野| 欧美成人中文字幕在线| 日本一区二区三区四区| 中文字幕 视频一区| 久久久久久综合网| 精品国产福利| 伊人久久综合97精品| 国产精品久久久久久久久免费樱桃 | 欧美亚洲另类视频| 国产婷婷色一区二区在线观看| 亚洲欧洲午夜一线一品| 国产黄色小视频网站| 99精品视频在线播放观看| 欧美精彩一区二区三区| 蜜臀99久久精品久久久久久软件| 国产在线高清精品| 日批视频免费播放| 国产精品视频在线播放| 日韩在线视频第一页| 春色成人在线视频| 国产一区二区三区av电影| 欧美高清性xxxxhdvideosex| 久久国产三级精品| 日韩精品国内| 国产精品乱码一区二区三区软件 | 久久国产精品亚洲| 99精品在线播放| 欧美专区在线播放| 99国产一区二区三精品乱码| 欧洲亚洲一区二区三区四区五区| 不卡的av电影在线观看| 大荫蒂性生交片| 日韩欧美在线视频日韩欧美在线视频| 131美女爱做视频| 亚洲国产一二三| 91九色蝌蚪porny| 亚洲欧美资源在线| 97人妻精品视频一区| 成人精品视频99在线观看免费| 韩国三级电影一区二区| 欧美 日韩 国产在线| 国产欧美日韩精品一区| 国产自偷自偷免费一区 | 日韩在线视频免费| 久久综合狠狠综合久久综青草| 婷婷夜色潮精品综合在线| 欧美96一区二区免费视频| 日韩av无码中文字幕| 爱爱免费小视频| 福利视频一区二区三区四区| 成人免费自拍视频| 久久精品一区中文字幕| 欧美久久高跟鞋激| 日韩精品成人一区二区三区| 国产伦精品一区二区免费| 欧美亚洲另类在线| 欧美午夜电影网| 男人的天堂久久精品| 色撸撸在线视频| 91精品国产毛片武则天| 高清在线视频日韩欧美| 性做久久久久久免费观看| 五月天婷婷网站| 成人性做爰片免费视频| 一区二区中文字幕| 97精品国产97久久久久久久久久久久| 大吊一区二区三区| 一区二区三区av在线| 中文字幕日韩在线播放| 亚洲影院理伦片| 国内精品视频一区二区三区八戒| 久久久黄色大片| 久久久久久久久久久福利| 国产成人小视频在线观看| 日韩欧美国产成人一区二区| 国产一区二区三区不卡在线观看| 亚洲乱熟女一区二区| 福利网址在线观看| 日本熟妇毛茸茸丰满| 成人免费播放视频| 天堂va欧美va亚洲va老司机| 日韩精品视频久久| 日日碰狠狠添天天爽超碰97| 欧美一区1区三区3区公司 | 亚洲精品免费在线看| 一个人www欧美| 日韩欧美中文第一页| 成人国产精品免费观看| www香蕉视频| 在线免费观看日韩视频| 成人h动漫精品一区| 日韩午夜视频在线观看| 午夜精品久久久久久久99热浪潮| 色综合激情五月| 99精品偷自拍| 色偷偷在线观看|