久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2022年Unity 面试题 |五萬字 二佰道| Unity面试题大全,面试题总结【全网最全,收藏一篇足够面试】

發布時間:2023/12/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2022年Unity 面试题 |五萬字 二佰道| Unity面试题大全,面试题总结【全网最全,收藏一篇足够面试】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

      • 📢前言
  • 🎬Unity面試題大全
    • ??C#基礎
        • 1. 重載和重寫的區別
        • 2.面向對象的三大特點
        • 3.簡述值類型和引用類型有什么區別
        • 4.請簡述private,public,protected,internal的區別
        • 5.C#中所有引用類型的基類是什么
        • 6.請簡述ArrayList和 List的主要區別
        • 7.請簡述GC(垃圾回收)產生的原因,并描述如何避免?
        • 8. 請描述Interface與抽象類之間的不同
        • 9.請簡述關鍵字Sealed用在類聲明和函數聲明時的作用
        • 10. 反射的實現原理?
        • 11. .Net與 Mono 的關系?
        • 12. 在類的構造函數前加上static會報什么錯?為什么?
        • 13.C# String類型比 stringBuilder 類型的優勢是什么?
        • 14.C#函數 Func(string a, string b)用 Lambda 表達式怎么寫?
        • 15. 數列1,1,2,3,5,8,13...第 n 位數是多少?用 C#遞歸算法實現
        • 16. 冒泡排序(手寫代碼)
        • 17. C#中有哪些常用的容器類,各有什么特點。
        • 18. C#中常規容器和泛型容器有什么區別,哪種效率高?
        • 19. 有哪些常見的數值類?
        • 20. C#中委托 和 接口有什么區別?各用在什么場合?
        • 21. C#中unsafe關鍵字是用來做什么的?什么場合下使用?
        • 22. C#中ref和out關鍵字有什么區別?
        • 23. For,foreach,Enumerator.MoveNext的使用,與內存消耗情況
        • 24. 函數中多次使用string的+=處理,會產生大量內存垃圾(垃圾碎片),有什么好的方法可以解決。
        • 25. 當需要頻繁創建使用某個對象時,有什么好的程序設計方案來節省內存?
        • 26. JIT和AOT區別
        • 27. 給定一個存放參數的數組,重新排列數組
        • 28. Foreach循環迭代時,若把其中的某個元素刪除,程序報錯,怎么找到那個元素?以及具體怎么處理這種情況?(注:Try.....Catch捕捉異常,發送信息不可行)
        • 29. GameObject a=new GameObject() GameObject b=a 實例化出來了A,將A賦給B,現在將B刪除,問A還存在嗎?
        • 30. C#中 委托和事件的區別
        • 31. 結構體和類有何區別?
        • 32. C#的委托是什么?有何用處?
        • 33. foreach迭代器遍歷和for循環遍歷的區別
        • 34. C#和C++的區別?
        • 35. C#引用和C++指針的區別
        • 36. 堆和棧的區別?
        • 37. Heap與Stack有何區別?
        • 38. Mock和Stub有何區別?
        • 39. 為什么dynamic font 在 unicode環境下優于 staticfont(字符串編碼)
        • 40. 簡述StringBuilder和String的區別?(字符串處理)
        • 41. string、stringBuilder、stringBuffer
        • 42. 字典Dictionary的內部實現原理
        • 43. 泛型是什么
        • 44. Mathf.Round和Mathf.Clamp和Mathf.Lerp含義?
        • 45. 能用foreach遍歷訪問的對象需要實現______接?或聲明_________?法的類型(C#遍歷)
        • 46. 什么是里氏替換原則?(C#多態)
        • 47. 反射的實現原理?
        • 48. 概述c#中代理和事件?
        • 49. 哈希表與字典對比
        • 50. C#中四種訪問修飾符是哪些?各有什么區別?
        • 51. 下列代碼在運行中會發生什么問題?如何避免?
        • 52. 什么是裝箱拆箱,怎樣減少操作
        • 53. MVC
    • 🧡Unity基礎知識
        • 1. Image和RawImage的區別
        • 2. Unity3D中的碰撞器和觸發器的區別?
        • 3. 物體發生碰撞的必要條件?
        • 4. 簡述四元數Quaternion的作用,四元數對歐拉角的優點?
        • 5. 如何安全的在不同工程間安全地遷移asset數據?三種方法
        • 6. OnEnable、Awake、Start運行時的發生順序?哪些可能在同一個對象周期中反復的發生?
        • 7. MeshRender中material和sharedmaterial的區別?
        • 8. TCP/IP協議棧各個層次及分別的功能?
        • 9. Unity提供了幾種光源,分別是什么?
        • 10. 簡述一下對象池,你覺得在FPS里哪些東西適合使用對象池?
        • 11. CharacterController和Rigidbody的區別?
        • 12. 移動相機動作在哪個函數里,為什么在這個函數里?
        • 13. 簡述prefab的用處
        • 14. GPU的工作原理?
        • 15. 什么是渲染管道?
        • 16. 如何優化內存?
        • 18. 動態加載資源的方式?
        • 19. 使用Unity3d實現2d游戲,有幾種方式?
        • 20. 在物體發生碰撞的整個過程中,有幾個階段,分別列出對應的函數 三個階段
        • 21. Unity3d的物理引擎中,有幾種施加力的方式,分別描述出來
        • 22. 什么叫做鏈條關節?
        • 23. 物體自身旋轉使用的函數?
        • 24. Unity3d提供了一個用于保存和讀取數據的類(PlayerPrefs),請列出保存和讀取整形數據的函數
        • 25. Unity3d腳本從喚醒到銷毀有著一套比較完整的生命周期,請列出系統自帶的幾個重要的方法。
        • 26. 物理更新一般放在哪個系統函數里?
        • 27. 在場景中放置多個Camera并同時處于活動狀態會發生什么?
        • 28. 如何銷毀一個UnityEngine.Object及其子類?
        • 29. 請描述游戲動畫有哪幾種,以及其原理?
        • 30. 請描述為什么Unity3d中會發生在組件上出現數據丟失的情況
        • 31. alpha blend工作原理?
        • 32. 寫出光照計算中的diffuse的計算公式?
        • 33. LOD是什么,優缺點是什么?
        • 33. 兩種陰影判斷的方法、工作原理?
        • 34. Vertex Shader是什么,怎么計算?
        • 35. MipMap是什么,作用?
        • 36. 請描述Interface與抽象類之間的不同
        • 37. .Net與Mono的關系?
        • 38. 簡述Unity3D支持的作為腳本的語言的名稱?
        • 39. Unity3D是否支持寫成多線程程序?如果支持的話需要注意什么?
        • 40. 如何讓已經存在的GameObject在LoadLevel后不被卸載掉?
        • 41. U3D中用于記錄節點空間幾何信息的組件名稱,及其父類名稱
        • 42. 向量的點乘、叉乘以及歸一化的意義?
        • 43. 矩陣相乘的意義及注意點?
        • 44. 當一個細小的高速物體撞向另一個較大的物體時,會出現什么情況?如何避免?
        • 45. 為何大家都在移動設備上尋求U3D原生GUI的替代方案
        • 46. 請簡述如何在不同分辨率下保持UI的一致性
        • 47. 請簡述OnBecameVisible及OnBecameInvisible的發生時機,以及這一對回調函數的意義?
        • 48. 什么叫動態合批?跟靜態合批有什么區別?
        • 49. Unity提供了幾種光源,分別是什么?
        • 50. 什么是LightMap?
        • 51. Unity和cocos2d的區別
        • 52. Unity3D Shader分哪幾種,有什么區別?
        • 53. 獲取、增加、刪除組件的命令分別是什么?
        • 54. Unity中,照相機的Clipping Planes的作用是什么?調整 Near、Far兩個值時,應該注意什么?
        • 55. 簡述prefab的用處
        • 56. 請描述為什么Unity3d中會發生 在組件上出現數據丟失的情況
        • 57. 如何在Unity3D中查看場景的面數,頂點數和Draw Call數?如何降低Draw Call數?
        • 58. 請問alpha test在何時使用?能達到什么效果?
        • 60. 四元數有什么作用?
        • 61. 將Camera組件的ClearFlags選項選成Depth only是什么意思?有何用處?
        • 62. 如何讓已經存在的GameObject在LoadLevel后不被卸載掉?
        • 63. 在編輯場景時將GameObject設置為Static有何作用?
        • 64. 有A和B兩組物體,有什么辦法能夠保證A組物體永遠比B組物體先渲染?
        • 65. 將圖片的TextureType選項分別選為Texture和Sprite有什么區別
        • 66. 問一個Terrain,分別貼3張,4張,5張地表貼圖,渲染速度有什么區別?為什么?
        • 67. 什么是DrawCall?DrawCall高了又什么影響?如何降低DrawCall?
        • 68. 實時點光源的優缺點是什么?
        • 69. 簡述四元數的作用,四元數對歐拉?的優點?
        • 70. Addcomponent后哪個生命周期函數會被調用
        • 72. 層剔除
        • 73. 分別解釋頂點著色器和像素著色器是什么
        • 74. 畫布的三種模式.縮放模式
        • 75. FSM有限狀態機
        • 76. 使用過哪些Unity插件
    • 💛物理系統
        • 1. CharacterController和Rigidbody的區別
        • 2. 射線檢測碰撞物的原理是?
        • 3. 什么叫做鏈條關節?
        • 4. 物體發生碰撞的必要條件?
        • 5. 在物體發生碰撞的整個過程 中,有幾個階段,分別列出對 應的函數 三個階段
        • 6. Unity3d中的碰撞器和觸發器的 區別?
        • 7. 射線檢測碰撞物的原理是?
        • 8. Unity3d的物理引擎中,有幾種 施加力的方式,分別描述出來
        • 9. 當一個細小的高速物體撞向另一個較大的物體時,會出現什么情況?如何避免?
        • 10. 射線Raycast原理
    • 💚UI & 2D 部分
        • 1. UGUI 合批的一些問題
        • 2. Image和RawImage的區別
        • 3. 使用Unity3d實現2d游戲,有幾種方式?
        • 4. 將圖片的TextureType選項分別選為Texture和Sprite有什么區別
        • 5. 請簡述如何在不同分辨率下保 持UI的一致性
    • 💙動畫系統
        • 1. 請描述游戲動畫有哪幾種,以及其原理?
        • 2. Avator的作用
        • 3. 反向旋轉動畫的方法是什么?
        • 4. Animation.CrossFade 是什么?
        • 5. 寫出 Animation 的五個方法
        • 6. 簡述 SkinnedMesh 的實現原理
        • 7. 動畫層(Animation Layers)的作用是什么?
    • 💜協程
        • 1. Unity 協程 Coroutine 的作用
        • 2. 什么是協同程序?
        • 3. Unity3D的協程和C#線程 之間的區別是什么?
        • 4. 協同程序的執行代碼是什么?有何用處,有何缺點?
    • 🤎數據持久化 & 資源管理
        • 1. unity常用資源路徑有哪些
        • 2. 如何安全的在不同工程間安全 地遷移asset數據?三種方法
        • 3. unity 提供了一個用于保存讀取數據的類,(playerPrefs),請列出保存讀取整形數據的函數
        • 4. 動態加載資源的方式?
        • 5. AssetsBundle 打包
        • 6. AssetBundle加載
        • 7. AssetBundle卸載流程
    • 🖤Lua語言和Xlua熱更
        • 1. Lua如何調用C#
        • 2. 資源如何打包?依賴項列表如何生成?
        • 3. 如何解析版本文件?如何加載AB包資源?具體流程是怎么樣的?
        • 4. 熱更新方案有哪些?以及具體熱更流程
        • 5. 簡述Lua實現面向對象的原理
        • 6. 簡述Lua有哪8個類型?簡述用途
    • 🤍網絡
        • 1. 客戶端與服務器交互方式有幾種?
        • 2. 概述序列化
        • 3. UDP/TCP含義,區別
        • 4. TCP/IP協議棧各個層次及分別的功能?
        • 5. 寫出WWW的幾個方法
        • 6. Socket粘包
        • 7. Socket的封包、拆包
        • 8. Socket 客戶端 隊列 的問題
    • 💖渲染 & Shader
        • 1. 什么是LightMap?
        • 2. MipMap是什么,作用?
        • 3. 請問alpha test在何時使用?能達到什么效果?
        • 4. 一個Terrain,分別貼3張,4張,5張地表貼圖,渲染速度有什么區別?為什么?
        • 5. 實時點光源的優缺點是什么?
        • 6. 簡述水面倒影的渲染原理?
        • 7. MeshRender中material和 sharedmaterial的區別?
        • 8. 什么是渲染管道?
        • 9. 如何在Unity3D中查看場景的面數,頂點數和DrawCall數?如何降低DrawCall數?
        • 10. 寫出光照計算中的diffuse的計算公式
        • 11. 兩種陰影判斷的方法、工作原理。
        • 12. 有A和B兩組物體,有什么辦法能夠保證A組物體永遠比B組物體先渲染?
        • 13. Unity的Shader中,Blend SrcAlpha OneMinusSrcAlpha這句話是什么意思?
        • 14. Vertex Shader是什么,怎么計算?
        • 15. Unity3D Shader分哪?種,有什么區別?
    • 💘優化部分
        • 1. 簡述?下對象池,你覺得在FPS里哪些東西適合使用對象池?
        • 2. 什么是DrawCall?DrawCall高了又什么影響?如何降低DrawCall?
        • 3. UI優化小知識
        • 4. LOD是什么,優缺點是什么?
        • 5. 什么叫動態合批?跟靜態合批有什么區別?
        • 6. 如何優化內存?
        • 7. 請簡述GC(垃圾回收)產生的原因,并描述如何避免?
        • 8. 貼圖透明通道分離,壓縮格式設為ETC/PVRTC
        • 9. 關閉貼圖的讀寫選項
        • 10. Unity 在移動設備上的?些優化資源的方法
        • 11. CPU端性能優化小知識點
        • 12. GPU端性能優化小知識點
        • 13. 內存優化小知識點
    • 💞算法
        • 1. 請寫出求斐波那契數列任意一位的值得算法
        • 2. 下列代碼在運行中會產生幾個臨時對象?
        • 3. 冒泡排序(手寫代碼)
  • 👥總結


📢前言

  • 正所謂 金三銀四 ,又到了找工作的大好時機了,不知道大家有沒有意向找一份更好的工作呢~
  • 之前寫了很多Unity的學習和實例文章,但是面試題部分還沒有一個系統的整理。
  • 那本篇文章就來整理一下Unity中一些常見的面試題,說不準就會面試的時候就會遇到!
  • 本篇文章會將Unity所有方面的面試資料都融會貫通,絕對是2022年Unity面試領域最實用的文章啦!
  • 為了方便大家可以重點復習某個方面,所以大致分為下面幾個模塊方便學習
  • 看完記得 點贊 + 收藏 一波哦,過了這村可就找不到這家店了!
  • 勵志做2022Unity最全的面試題整理!

本文將整理的面試題大致分為以下幾個模塊,方便針對性學習和背題!
由于大部分常用的面試題在網上基本上已經有比較標準的答案了,所以說面試題類的文章基本上大同小異。
所以本篇文章中的部分內容也是直接從網上摘選來的
如果有不對的地方也歡迎指正(盡力不會出現這種情況),某個模塊的內容不夠也歡迎在評論區指出,我去重新添加上。

  • C#基礎
  • 計算機基礎
  • Unity基礎
  • 物理系統
  • UI部分 & 2D
  • 協程
  • 動畫系統
  • 數據持久化 & 資源管理
  • Lua語言和Xlua熱更
  • 網絡
  • 渲染 & Shader
  • 優化部分
  • 算法

本文部分內容參考文章如下:
https://blog.csdn.net/u014361280/article/details/100135129
https://blog.csdn.net/u014361280/article/details/121499143
https://blog.csdn.net/u014361280/article/details/121534764
https://blog.csdn.net/qq_21407523/article/details/108814300


🎬Unity面試題大全

??C#基礎

1. 重載和重寫的區別

  • 封裝、繼承、多態所處位置不同,重載在同類中,重寫在父子類中。
  • 定義方式不同,重載方法名相同參數列表不同,重寫方法名和參數列表都相同。
  • 調用方式不同,重載使用相同對象以不同參數調用,重寫用不同對象以相同參數調用。
  • 多態時機不同,重載時編譯時多態,重寫是運行時多態。
  • 2.面向對象的三大特點

  • 繼承: 提高代碼重用度,增強軟件可維護性的重要手段,符合開閉原則。繼承最主要的作用就是把子類的公共屬性集合起來,便與共同管理,使用起來也更加方便。你既然使用了繼承,那代表著你認同子類都有一些共同的特性,所以你把這些共同的特性提取出來設置為父類。繼承的傳遞性:傳遞機制 a?b; b?c; c具有a的特性 。繼承的單根性:在C#中一個類只能繼承一個類,不能有多個父類。
  • 封裝: 封裝是將數據和行為相結合,通過行為約束代碼修改數據的程度,增強數據的安全性,屬性是C#封裝實現的最好體現。就是將一些復雜的邏輯經過包裝之后給別人使用就很方便,別人不需要了解里面是如何實現的,只要傳入所需要的參數就可以得到想要的結果。封裝的意義在于保護或者防止代碼(數據)被我們無意中破壞。
  • 多態性: 多態性是指同名的方法在不同環境下,自適應的反應出不同得表現,是方法動態展示的重要手段。多態就是一個對象多種狀態,子類對象可以賦值給父類型的變量。
  • 3.簡述值類型和引用類型有什么區別

    值類型:包含了所有簡單類型(整數、浮點、bool、char)、struct、enum。
    繼承自System.ValueTyoe
    引用類型包含了string,object,class,interface,delegate,array
    繼承自System.Object

  • 值類型存儲在內存棧中,引用類型數據存儲在內存堆中,而內存單元中存放的是堆中存放的地址。
  • 值類型存取快,引用類型存取慢。
  • 值類型表示實際數據,引用類型表示指向存儲在內存堆中的數據的指針和引用。
  • 棧的內存是自動釋放的,堆內存是.NET 中會由 GC 來自動釋放。
  • 值類型繼承自 System.ValueType,引用類型繼承自 System.Object。
  • 值類型的變?直接存放實際的數據,?引?類型的
    變?存放的則是數據的地址,即對象的引?。
  • 值類型變量直接把變量的值保存在堆棧中,引?類
    型的變量把實際數據的地址保存在堆棧中。
  • 4.請簡述private,public,protected,internal的區別

    • public:對任何類和成員都公開,無限制訪問
    • private:僅對該類公開
    • protected:對該類和其派生類公開
    • internal:只能在包含該類的程序集中訪問該類
    • protected internal:protected + internal

    5.C#中所有引用類型的基類是什么

    引用類型的基類是System.Object值類型的基類是 System.ValueType

    同時,值類型也隱式繼承自System.Object

    6.請簡述ArrayList和 List的主要區別

    • ArrayList 不帶泛型 數據類型丟失
    • List 帶泛型 數據類型不丟失
    • ArrayList 需要裝箱拆箱 List不需要

    ArrayList存在不安全類型(ArrayList會把所有插 ?其中的數據都當做Object來處理)裝箱拆箱的 操作(費時)IList是接?,ArrayList是?個實現了 該接?的類,可以被實例化

    List類是ArrayList類的泛型等效類。它的大部分用法都與ArrayList相似,因為List類也繼承了IList接口。最關鍵的區別在于,在聲明List集合時,我們同時需要為其聲明List集合內數據的對象類型。

    7.請簡述GC(垃圾回收)產生的原因,并描述如何避免?

    GC為了避免內存溢出而產生的回收機制

    避免:
    1)減少 new 產生對象的次數
    2)使用公用的對象(靜態成員)
    3)將 String 換為 StringBuilder

    8. 請描述Interface與抽象類之間的不同

  • 接口不是類 不能實例化 抽象類可以間接實例化
  • 接口是完全抽象 抽象類為部分抽象
  • 接口可以多繼承 抽象類是單繼承
  • 9.請簡述關鍵字Sealed用在類聲明和函數聲明時的作用

    類聲明時可防止其他類繼承此類,在方法中聲明則可防止派生類重寫此方法。

    10. 反射的實現原理?

    可以在加載程序運行時,動態獲取和加載程序集,并且可以獲取到程序集的信息反射即在運行期動態獲取類、對象、方法、對象數據等的一種重要手段

    主要使用的類庫:System.Reflection

    核心類:

  • Assembly描述了程序集
  • Type描述了類這種類型
  • ConstructorInfo描述了構造函數
  • MethodInfo描述了所有的方法
  • FieldInfo描述了類的字段
  • PropertyInfo描述類的屬性
  • 通過以上核心類可在運行時動態獲取程序集中的類,并執行類構造產生類對象,動態獲取對象的字段或屬性值,更可以動態執行類方法和實例方法等。

    11. .Net與 Mono 的關系?

    .Net是一個語言平臺,Mono為.Net提供集成開發環境,集成并實現了.NET的編譯器、CLR 和基礎類庫,使得.Net既可以運行在windows也可以運行于 linux,Unix,Mac OS 等。

    12. 在類的構造函數前加上static會報什么錯?為什么?

    構造函數格式為public+類名如果加上 static 會報錯(靜態構造函數不能有訪問、型的對象,靜態構造函數只執行一次;
    運行庫創建類實例或者首次訪問靜態成員之前,運行庫調用靜態構造函數;
    靜態構造函數執行先于任何實例級別的構造函數;
    顯然也就無法使用this和 base 來調用構造函數。
    一個類只能有一個靜態函數,如果有靜態變量,系統也會自動生成靜態函數

    13.C# String類型比 stringBuilder 類型的優勢是什么?

    如果是處理字符串的話,用string中的方法每次都需要創建一個新的字符串對象并且分配新的內存地址,而 stringBuilder 是在原來的內存里對字符串進行修改,所以在字符串處理

    方面還是建議用stringBuilder這樣比較節約內存。但是 string 類的方法和功能仍然還是比 stringBuilder 類要強。

    string類由于具有不可變性(即對一個 string 對象進行任何更改時,其實都是創建另外一個 string 類的對象),所以當需要頻繁的對一個 string 類對象進行更改的時候,建議使用StringBuilder 類,StringBuilder 類的原理是首先在內存中開辟一定大小的內存空間,當對此 StringBuilder 類對象進行更改時, 如果內存空間大小不夠, 會對此內存空間進行擴充,而不是重新創建一個對象,這樣如果對一個字符串對象進行頻繁操作的時候,不會造成過多的內存浪費,其實本質上并沒有很大區別,都是用來存儲和操作字符串的,唯一的區別就在于性能上。

    String主要用于公共 API,通用性好、用途廣泛、讀取性能高、占用內存小。

    StringBuilder主要用于拼接 String,修改性能好。

    不過現在的編譯器已經把String的 + 操作優化成 StringBuilder 了, 所以一般用String 就可以了

    String是不可變的,所以天然線程同步。

    StringBuilder可變,非線程同步。

    14.C#函數 Func(string a, string b)用 Lambda 表達式怎么寫?

    (a,b) => {};

    15. 數列1,1,2,3,5,8,13…第 n 位數是多少?用 C#遞歸算法實現

    public int CountNumber(int num) {if (num == 1 || num == 2) {return 1;} else {return CountNumber(num -1) + CountNumber(num-2);}}

    16. 冒泡排序(手寫代碼)

    public static void BubblingSort(int[]array) {for (int i = 0; i < array.Length; i++){for (int j = array.Length - 1; j > 0; j--){if (array[j] < array[i]) {int temp = array[j];array[j] = array[j-1];array[j - 1] = temp;}}}}

    17. C#中有哪些常用的容器類,各有什么特點。

    List,HashTable,Dictionary,Stack,Queue

    • Stack棧:先進后出,入棧和出棧,底層泛型數組實現,入棧動態擴容2倍
    • Queue隊列:先進先出,入隊和出隊,底層泛型數組實現,表頭表尾指針,判空還是滿通過size比較
      Queue和Stack主要是用來存儲臨時信息的
    • Array數組:需要聲明長度,不安全
    • ArrayList數組列表:動態增加數組,不安全,實現了IList接口(表示可按照索引進行訪問的非泛型集合對象),Object數組實現
    • List列表:底層實現是泛型數組,特性,動態擴容,泛型安全
      將泛型數據(對值類型來說就是數據本身,對引用類型來說就是引用)存儲在一個泛型數組中,添加元素時若超過當前泛型數組容量,則以2倍擴容,進而實現List大小動態可變。(注:大小指容量,不是Count)
    • LinkList鏈表
      1、數組和List、ArrayList集合都有一個重大的缺陷,就是從數組的中間位置刪除或插入一個元素需要付出很大的代價,其原因是數組中處于被刪除元素之后的所有元素都要向數組的前端移動。
      2、LinkedList(底層是由鏈表實現的)基于鏈表的數據結構,很好的解決了數組刪除插入效率低的問題,且不用動態的擴充數組的長度。
      3、LinkedList的優點:插入、刪除元素效率比較高;缺點:訪問效率比較低。
    • HashTable哈希表(散列表)
      概念:不定長的二進制數據通過哈希函數映射到一個較短的二進制數據集,即Key通過HashFunction函數獲得HashCode
      裝填因子:α=n/m=0.72 ,存儲的數據N和空間大小M
      然后通過哈希桶算法,HashCode分段,每一段都是一個桶結構,一般是HashCode直接取余。
      桶結構會加劇沖突,解決沖突使用拉鏈法,將產生沖突的元素建立一個單鏈表,并將頭指針地址存儲至Hash表對應桶的位置。這樣定位到Hash表桶的位置后可通過遍歷單鏈表的形式來查找元素。
      1、Key—Value形式存取,無序,類型Object,需要類型轉換。
      2、Hashtable查詢速度快,而添加速度相對慢
      3、Hashtable中的數據實際存儲在內部的一個數據桶里(bucket結構體數組),容量固定,根據數組索引獲取值。
    //哈希表結構體 private struct bucket {public Object key;//鍵public Object val;//值public int hash_col;//哈希碼 } //字典結構體 private struct Entry {public int hashCode; // 除符號位以外的31位hashCode值, 如果該Entry沒有被使用,那么為-1public int next; // 下一個元素的下標索引,如果沒有下一個就為-1public TKey key; // 存放元素的鍵public TValue value; // 存放元素的值 }private int[] buckets; // Hash桶 private Entry[] entries; // Entry數組,存放元素 private int count; // 當前entries的index位置 private int version; // 當前版本,防止迭代過程中集合被更改 private int freeList; // 被刪除Entry在entries中的下標index,這個位置是空閑的 private int freeCount; // 有多少個被刪除的Entry,有多少個空閑的位置 private IEqualityComparer<TKey> comparer; // 比較器 private KeyCollection keys; // 存放Key的集合 private ValueCollection values; // 存放Value的集合

    性能排序:

    • 插入性能: LinkedList > Dictionary > HashTable > List
    • 遍歷性能:List > LinkedList > Dictionary > HashTable
    • 刪除性能: Dictionary > LinkedList > HashTable > List

    18. C#中常規容器和泛型容器有什么區別,哪種效率高?

    不帶泛型的容器需要裝箱和拆箱操作速度慢所以泛型容器效率更高數據類型更安全

    19. 有哪些常見的數值類?

    簡單值類型:包括 整數類型、實數類型、字符類型、布爾類型

    復合值類型:包括 結構類型、枚舉類型

    20. C#中委托 和 接口有什么區別?各用在什么場合?

    **接口(interface)**是約束類應該具備的功能集合,約束了類應該具備的功能,使類從千變萬化的具體邏輯中解脫出來,便于類的管理和擴展,同時又合理解決了類的單繼承問題。

    C#中的委托 是約束方法集合的一個類,可以便捷的使用委托對這個方法集合進行操作。

    在以下情況中使用接口:

    1.無法使用繼承的場合
    2.完全抽象的場合
    3.多人協作的場合

    以上等等

    在以下情況中使用委托:多用于事件處理中

    21. C#中unsafe關鍵字是用來做什么的?什么場合下使用?

    非托管代碼才需要這個關鍵字一般用在帶指針操作的場合。
    項目背包系統的任務裝備欄使用到

    22. C#中ref和out關鍵字有什么區別?

    ref修飾引用參數。參數必須賦值,帶回返回值,又進又出
    out修飾輸出參數。參數可以不賦值,帶回返回值之前必須明確賦值,
    引用參數和輸出參數不會創建新的存儲位置

    如果ref參數是值類型,原先的值類型數據,會隨著方法里的數據改變而改變,
    如果ref參數值引用類型,方法里重新賦值后,原對象堆中數據會改變,如果對引用類型再次創建新對象并賦值給ref參數,引用地址會重新指向新對象堆數據。方法結束后形參和新對象都會消失。實參還是指向原始對象,值不夠數據改變了

    23. For,foreach,Enumerator.MoveNext的使用,與內存消耗情況

    for循環可以通過索引依次進行遍歷,foreach和Enumerator.MoveNext通過迭代的方式進行遍歷。
    內存消耗上本質上并沒有太大的區別。
    但是在Unity中的Update中,一般不推薦使用foreach 因為會遺留內存垃圾。

    24. 函數中多次使用string的+=處理,會產生大量內存垃圾(垃圾碎片),有什么好的方法可以解決。

    通過StringBuilder那進行append,這樣可以減少內存垃圾

    25. 當需要頻繁創建使用某個對象時,有什么好的程序設計方案來節省內存?

    設計單例模式進行創建對象或者使用對象池

    26. JIT和AOT區別

    Just-In-Time -實時編譯

    執行慢安裝快占空間小一點

    Ahead-Of-Time -預先編譯

    執行快安裝慢占內存占外存大

    27. 給定一個存放參數的數組,重新排列數組

    void SortArray(Array arr){Array.Sort(arr);}

    28. Foreach循環迭代時,若把其中的某個元素刪除,程序報錯,怎么找到那個元素?以及具體怎么處理這種情況?(注:Try…Catch捕捉異常,發送信息不可行)

    foreach不能進行元素的刪除,因為迭代器會鎖定迭代的集合,解決方法:記錄找到索引或者key值,迭代結束后再進行刪除。

    29. GameObject a=new GameObject() GameObject b=a 實例化出來了A,將A賦給B,現在將B刪除,問A還存在嗎?

    存在,b刪除只是將它在棧中的內存刪除,而A對象本身是在堆中,所以A還存在

    30. C#中 委托和事件的區別

    大致來說,委托是一個類,該類內部維護著一個字段,指向一個方法。事件可以被看作一個委托類型的變量,通過事件注冊、取消多個委托或方法。

    ○ 委托就是一個類,也可以實例化,通過委托的構造函數來把方法賦值給委托實例
    ○ 觸發委托有2種方式: 委托實例.Invoke(參數列表),委托實例(參數列表)
    ○ 事件可以看作是一個委托類型的變量
    ○ 通過+=為事件注冊多個委托實例或多個方法
    ○ 通過-=為事件注銷多個委托實例或多個方法
    ○ EventHandler就是一個委托

    31. 結構體和類有何區別?

    結構體是一種值類型,而類是引用類型。(值類型、引用類型是根據數據存儲的?度來分的)就是值類型用于存儲數據的值,引用類型用于存儲對實際數據的引用。

    那么結構體就是當成值來使用的,類則通過引用來對實際數據操作

    32. C#的委托是什么?有何用處?

    委托類似于一種安全的指針引用,在使用它時是 當做類來看待而不是一個方法,相當于對一組方 法的列表的引用。

    用處:使用委托使程序員可以將方法引用封裝在 委托對象內。然后可以將該委托對象傳遞給可調 用所引用方法的代碼,而不必在編譯時知道將調 用哪個方法。與C或C++中的函數指針不同,委托 是面向對象,而且是類型安全的。

    33. foreach迭代器遍歷和for循環遍歷的區別

    如果集合需要foreach遍歷,是否可行,存在一定問題
    foreach中的迭代變量item是的只讀,不能對其進行修改,比如list.Remove(item)操作
    foreach只讀的時候記錄下來,在對記錄做操作,或者直接用for循環遍歷
    foreach對int[]數組循環已經不產生GC,避免對ArrayList進行遍歷

    for語句中初始化變量i的作用域,循環體內部可見。
    通過索引進行遍歷,可以根據索引對所遍歷集合進行修改
    unity中for循環使用lambda表達式注意閉包問題

    foreach遍歷原理
    任何集合類(Array)對象都有一個GetEnumerator()方法,該方法可以返回一個實現了 IEnumerator接口的對象。
    這個返回的IEnumerator對象既不是集合類對象,也不是集合的元素類對象,它是一個獨立的類對象。
    通過這個實現了 IEnumerator接口對象A,可以遍歷訪問集合類對象中的每一個元素對象
    對象A訪問MoveNext方法,方法為真,就可以訪問Current方法,讀取到集合的元素。

    List<string> list = new List<string>() { "25", "哈3", "26", "花朵" };IEnumerator listEnumerator = list.GetEnumerator();while (listEnumerator.MoveNext()){Console.WriteLine(listEnumerator.Current);}

    34. C#和C++的區別?

    簡單的說:C# 與C++ 比較的話,最重要的特性 就是C# 是一種完全面向對象的語言,而C++ 不 是,另外C# 是基于IL 中間語言
    和.NET Framework CLR 的,在可移植性,可維 護性和強壯性都比C++ 有很大的改進。C# 的設 計目標是用來開發快速穩定可擴展的應用程序, 當然也可以通過Interop和Pinvoke 完成一些底層操作

    具體對比

  • 繼承:C++支持多繼承,C#類只能繼承一個基類中的實現但可以實現多個接口。
  • 數組:聲明 C# 數組和聲明 C++ 數組的語法不同。在 C# 中,“[]”標記出現在數組類型的后面。
  • 數據類型:在C++中bool類可以與整型轉換,但C#中bool 類型和其他類型(特別是 int)之間沒有轉換。long 類型:在 C# 中,long 數據類型為 64 位,而在 C++ 中為 32 位。
  • struct 類型:在 C# 中,類和結構在語義上不同。struct 是值類型,而 class 是引用類型。
  • switch 語句:與 C++ 中的 switch 語句不同,C# 不支持從一個 case 標簽貫穿到另一個 case 標簽。
  • delegate 類型:委托與 C++ 中的函數指針基本相似,但前者具有類型安全,是安全的。
  • 從派生類調用重寫基類成員。 base
  • 使用 new 修飾符顯式隱藏繼承成員。
  • 重寫方法需要父類方法中用virtual聲名,子類方法用override 關鍵字。
  • 預處理器指令用于條件編譯。C# 中不使用頭文件。 C# 預處理器指令
  • 異常處理:C#中引入了 finally 語句,這是C++沒有的。
  • C# 運算符:C# 支持其他運算符,如 is 和 typeof。它還引入了某些邏輯運算符的不同功能。
  • static 的使用,static方法只能由類名調用,改變static變量。
  • 在構造基類上替代 C++ 初始化列表的方法。
  • Main 方法和 C++ 及Java中的 main 函數的聲明方式不同,Main而不能用main
  • 方法參數:C# 支持 ref 和 out 參數,這兩個參數取代指針通過引用傳遞參數。
  • 在 C# 中只能在unsafe不安全模式下才使用指針。
  • 在 C# 中以不同的方式執行重載運算符。
  • 字符串:C# 字符串不同于 C++ 字符串。
  • foreach:C#從VB中引入了foreach關鍵字使得以循環訪問數組和集合。
  • C# 中沒有全局方法和全局變量:方法和變量必須包含在類型聲明(如 class 或 struct)中。
  • C# 中沒有頭文件和 #include 指令:using 指令用于引用其他未完全限定類型名的命名空間中的類型。
  • C# 中的局部變量在初始化前不能使用。
  • 析構函數:在 C# 中,不能控制析構函數的調用時間,原因是析構函數由垃圾回收器自動調用。 析構函數
  • 構造函數:與 C++ 類似,如果在 C# 中沒有提供類構造函數,則為您自動生成默認構造函數。該默認構造函數將所有字段初始化為它們的默認值。
  • 在 C# 中,方法參數不能有默認值。如果要獲得同樣的效果,需使用方法重載。
  • 35. C#引用和C++指針的區別

    C#不支持指針,但可以使用Unsafe,不安全模式,CLR不檢測
    C#可以定義指針的類型、整數型、實數型、struct結構體
    C#指針操作符、C#指針定義
    使用fixed,可以操作類中的值類型
    相同點:都是地址
    指針指向一塊內存,它的內容是所指內存的地址;而引用則是某塊內存的別名。

    不同點
    指針是個實體,引用是個別名。
    sizeof 引用”得到的是所指向的變量(對象)的大小,而“sizeof 指針”得到的是指針本身的大小;
    引用是類型安全的,而指針在不安全模式下

    36. 堆和棧的區別?

    通常保存著我們代碼執行的步驟,如在代碼段1中 AddFive()方法,int pValue變量,int result變量等等。 而堆上存放的則多是對象,數據等。(譯者注:忽略編 譯器優化)我們可以把棧想象成一個接著一個疊放在 一起的盒子。當我們使用的時候,每次從最頂部取走 一個盒子。棧也是如此,當一個方法(或類型)被調 用完成的時候,就從棧頂取走(called a Frame,譯 注:調用幀),接著下一個。堆則不然,像是一個倉 庫,儲存著我們使用的各種對象等信息,跟棧不同的 是他們被調用完畢不會立即被清理掉。

    37. Heap與Stack有何區別?

  • heap是堆,stack是棧。
  • stack的空間由操作系統自 動分配和釋放,heap的空間是手動申請和釋放的, heap常用new關鍵字來分配。
  • stack空間有限,heap 的空間是很大的自由區。
  • 38. Mock和Stub有何區別?

    Mock與Stub的區別:Mock:關注行為驗證。細粒度的 測試,即代碼的邏輯,多數情況下用于單元測試。 Stub:關注狀態驗證。粗粒度的測試,在某個依賴系 統不存在或者還沒實現或者難以測試的情況下使用, 例如訪問文件系統,數據庫連接,遠程協議等。

    39. 為什么dynamic font 在 unicode環境下優于 staticfont(字符串編碼)

    Unicode是國際組織制定的可以容納世界上所有?字和符號的字符編碼?案。
    使?動態字體時,Unity將不會預先?成?個與所有字體的字符紋理。
    當需要?持亞洲語?或者較?的字體的時候,若使?正常紋理,則字體的紋理將?常?。

    40. 簡述StringBuilder和String的區別?(字符串處理)

    String是字符串常量。StringBuffer是字符串變量 ,線程安全。StringBuilder是字符串變量,線程不安全。

    String類型是個不可變的對象,當每次對String進?改變時都需要?成?個新的String對象,然后將指針指向?個新的對象,如果在?個循環??,不斷的改變?個對象,就要不斷的?成新的對象,所以效率很低,建議在不斷更改String對象的地?不要使?String類型。

    StringBuilder對象在做字符串連接操作時是在原來的字符串上進?修改,改善了性能。這?點我們平時使?中也許都知道,連接操作頻繁的時候,使?StringBuilder對象。

    41. string、stringBuilder、stringBuffer

    • String不變性,字符序列不可變,對原管理中實例對象賦值,會重新開一個新的實例對象賦值,新開的實例對象會等待被GC。
      string拼接要重新開辟空間,因為string原值不會改變,導致GC頻繁,性能消耗大

    • StringBuffer是字符串可變對象,可通過自帶的StringBuffer.方法來改變并生成想要的字符串。對原實例對象做拼接的實例,不會生成新的實例對象。
      拼接使用StringBuilder和StringBuffer,只開辟一個內存空間,這是性能優化的點。

    • StringBuilder是字符串可變對象,基本和StringBuilder相同。
      唯一的區別是StringBuffer是線程安全,相關方法前帶synchronized關鍵字,一般用于多線程
      StringBuilder是非線程安全,所以性能略好,一般用于單線程

    三者性能比較 StringBuilder>StringBuffer>String

  • 如果要操作少量的數據 =string
  • 單線程操作字符串緩沖區 下操作大量數據 = StringBuilder
  • 多線程操作字符串緩沖區 下操作大量數據 = StringBuffer
  • 42. 字典Dictionary的內部實現原理

    泛型集合命名空間using System.Collections.Generic;
    任何鍵都必須是唯一

    該類最大的優點就是它查找元素的時間復雜度接近O(1),實際項目中常被用來做一些數據的本地緩存,提升整體效率。

    實現原理

  • 哈希算法:將不定長度的二進制數據集給映射到一個較短的二進制長度數據集一個Key通過HashFunc得到HashCode
  • Hash桶算法:對HashCode進行分段顯示,常用方法是對HashCode直接取余
  • 解決碰撞沖突算法(拉鏈法):分段會導致key對應的桶會相同,拉鏈法的思想就像對沖突的元素,建立一個單鏈表,頭指針存儲到對應的哈希桶位置。反之就是通過確定hash桶位置后,遍歷單鏈表,獲取對應的value
  • 43. 泛型是什么

    多個代碼對 【不同數據類型】 執行 【相同指令】的情況
    泛型:多個類型共享一組代碼
    泛型允許類型參數化,泛型類型是類型的模板
    5種泛型:類、結構、接口、委托、方法
    類型占位符 T 來表示泛型

    泛型類不是實際的類,而是類的模板
    從泛型類型創建實例
    聲明泛型類型》通過提供【真實類型】創建構造函數類型》從構造類型創建實例
    類<T1,T2> 泛型類型參數

    性能:泛型不會強行對值類型進行裝箱和拆箱,或對引用類型進行向下強制類型轉換,所以性能得到提高

    安全:通過知道使用泛型定義的變量的類型限制,編譯器可以在一定程度上驗證類型假設,所以泛型提高了程序的類型安全。

    44. Mathf.Round和Mathf.Clamp和Mathf.Lerp含義?

    • Mathf.Round:四舍五入
    • Mathf.Clamp:左右限值
    • Mathf.Lerp:插值

    45. 能用foreach遍歷訪問的對象需要實現______接?或聲明_________?法的類型(C#遍歷)

    IEnumerable;GetEnumerator

    List和Dictionary類型可以用foreach遍歷,他們都實現了IEnumerable接口,申明了GetEnumerator方法。

    46. 什么是里氏替換原則?(C#多態)

    里氏替換原則(Liskov Substitution Principle LSP)?向對象設計的基本原則之?。

    • 里氏替換原則中說,任何基類可以出現的地?,?類?定可以出現,作??便擴展功能能
    • 子類可以實現父類的抽象方法,但是不能覆蓋父類的非抽象方法。
    • 子類中可以增加自己特有的方法。
    • 當子類覆蓋或實現父類的方法時,方法的前置條件(即方法的形參)要比父類方法的輸入參數更寬松。
    • 當子類的方法實現父類的抽象方法時,方法的后置條件(即方法的返回值)要比父類更嚴格。

    47. 反射的實現原理?

    可以在加載程序運行時,動態獲取和加載程序集,并且可以獲取到程序集的信息反射即在運行期動態獲取類、對象、方法、對象數據等的一種重要手段

    主要使用的類庫:System.Reflection

    核心類:

  • Assembly描述了程序集
  • Type描述了類這種類型
  • ConstructorInfo描述了構造函數
  • MethodInfo描述了所有的方法
  • FieldInfo描述了類的字段
  • PropertyInfo描述類的屬性
  • 通過以上核心類可在運行時動態獲取程序集中的類,并執行類構造產生類對象,動態獲取對象的字段或屬性值,更可以動態執行類方法和實例方法等。

    審查元數據并收集關于它的類型信息的能?。

    實現步驟: 1. 導?using System.Reflection; 2. Assembly.Load("程序集")加載程序集,返回類型是 ?個Assembly 3. foreach (Type type in assembly.GetTypes()){string t = type.Name;} 得到程序集中所有類的名稱 4. Type type = assembly.GetType("程序集.類名");獲取 當前類的類型 5. Activator.CreateInstance(type); 創建此類型實例 6. MethodInfo mInfo = type.GetMethod("?法名");獲取 當前?法 7. mInfo.Invoke(null,?法參數);

    48. 概述c#中代理和事件?

    代理就是?來定義指向?法的引?。
    C#事件本質就是對消息的封裝,?作對象之間的通信;發送?叫事件發送器,接收?叫事件接收器;

    49. 哈希表與字典對比

    字典:內部用了Hashtable作為存儲結構

    • 如果我們試圖找到一個不存在的鍵,它將返回 / 拋出異常。
    • 它比哈希表更快,因為沒有裝箱和拆箱,尤其是值類型。
    • 僅公共靜態成員是線程安全的。
    • 字典是一種通用類型,這意味著我們可以將其與任何數據類型一起使用(創建時,必須同時指定鍵和值的數據類型)。
    • Dictionay 是 Hashtable 的類型安全實現, Keys和Values是強類型的。
    • Dictionary遍歷輸出的順序,就是加入的順序

    哈希表

    • 如果我們嘗試查找不存在的鍵,則返回 null。
    • 它比字典慢,因為它需要裝箱和拆箱。
    • 哈希表中的所有成員都是線程安全的,
    • 哈希表不是通用類型,
    • Hashtable 是松散類型的數據結構,我們可以添加任何類型的鍵和值。
    • HashTable是經過優化的,訪問下標的對象先散列過,所以內部是無序散列的

    50. C#中四種訪問修飾符是哪些?各有什么區別?

  • 屬性修飾符
  • 存取修飾符
  • 類修飾符
  • 成員修飾符
  • 屬性修飾符:
    Serializable:按值將對象封送到遠程服務器。
    STATread:是單線程套間的意思,是?種線程模型。
    MATAThread:是多線程套間的意思,也是?種線程模
    型。

    存取修飾符:
    public:存取不受限制。
    private:只有包含該成員的類可以存取。
    internal:只有當前?程可以存取。
    protected:只有包含該成員的類以及派?類可以存
    取。

    類修飾符:
    abstract:抽象類。指示?個類只能作為其它類的基
    類。
    sealed:密封類。指示?個類不能被繼承。理所當
    然,密封類不能同時?是抽象類,因為抽象總是希望
    被繼承的。

    成員修飾符:
    abstract:指示該?法或屬性沒有實現。
    sealed:密封?法。可以防?在派?類中對該?法的
    override(?載)。不是類的每個成員?法都可以作為
    密封?法密封?法,必須對基類的虛?法進??載,
    提供具體的實現?法。所以,在?法的聲明中,
    sealed修飾符總是和override修飾符同時使?。
    delegate:委托。?來定義?個函數指針。C#中的事
    件驅動是基于delegate + event的。
    const:指定該成員的值只讀不允許修改。
    event:聲明?個事件。
    extern:指示?法在外部實現。
    override:?寫。對由基類繼承成員的新實現。
    readonly:指示?個域只能在聲明時以及相同類的內
    部被賦值。
    static:指示?個成員屬于類型本身,?不是屬于特定
    的對象。即在定義后可不經實例化,就可使?。
    virtual:指示?個?法或存取器的實現可以在繼承類中
    被覆蓋。
    new:在派?類中隱藏指定的基類成員,從?實現?
    寫的功能。 若要隱藏繼承類的成員,請使?相同名稱
    在派?類中聲明該成員,并? new 修飾符修飾它。

    51. 下列代碼在運行中會發生什么問題?如何避免?

    List<int> ls = new List<int>(new int[]{ 1, 2, 3, 4, 5 });foreach (int item in ls){Console.WriteLine(item * item);ls.Remove(item);}

    會產?運?時錯誤,因為foreach是只讀的。不能?邊遍歷?邊修改。

    使用For循環遍歷可以解決。

    52. 什么是裝箱拆箱,怎樣減少操作

    C#裝箱是將值類型轉換為引用類型;
    拆箱是將引用類型轉換為值類型。
    牽扯到裝箱和拆箱操作比較多的就是在集合中,例如:ArrayList或者HashTable之類。

    53. MVC

    MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典范。

    用一種業務邏輯、數據、界面顯示分離的方法,將業務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用于映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。

    • Model(模型)是應用程序中用于處理應用程序數據邏輯的部分。
        通常模型對象負責在數據庫中存取數據。
    • View(視圖)是應用程序中處理數據顯示的部分。
        通常視圖是依據模型數據創建的。
    • Controller(控制器)是應用程序中處理用戶交互的部分。
        通常控制器負責從視圖讀取數據,控制用戶輸入,并向模型發送數據

    🧡Unity基礎知識

    微信搜索:呆呆敲代碼的小Y 后臺回復:白嫖 免費獲取很多的編程資料哦!

    1. Image和RawImage的區別

    • Imgae比RawImage更消耗性能
    • Image只能使用Sprite屬性的圖片,但是RawImage什么樣的都可以使用
    • Image適合放一些有操作的圖片,裁剪平鋪旋轉什么的,針對Image Type屬性
    • RawImage就放單獨展示的圖片就可以,性能會比Image好很多

    2. Unity3D中的碰撞器和觸發器的區別?

    答:碰撞器是觸發器的載體,而觸發器只是碰撞器身上的一個屬性。

    當Is Trigger=false時,碰撞器根據物理引擎引發碰撞,產生碰撞的效果,可以調用OnCollisionEnter/Stay/Exit函數;

    當Is Trigger=true時,碰撞器被物理引擎所忽略,沒有碰撞效果,可以調用OnTriggerEnter/Stay/Exit函數。

    如果既要檢測到物體的接觸又不想讓碰撞檢測影響物體移動或要檢測一個物件是否經過空間中的某個區域這時就可以用到觸發器。

    3. 物體發生碰撞的必要條件?

    答:兩個物體都必須帶有碰撞器Collider,其中一個物體還必須帶有Rigidbody剛體。

    4. 簡述四元數Quaternion的作用,四元數對歐拉角的優點?

    答:四元數用于表示旋轉

    相對歐拉角的優點:能進行增量旋轉、避免萬向鎖、給定方位的表達方式有兩種,互為負(歐拉角有無數種表達方式)

    5. 如何安全的在不同工程間安全地遷移asset數據?三種方法

  • 將Assets和Library一起遷移
  • 導出包package
  • 用unity自帶的assets Server功能
  • 6. OnEnable、Awake、Start運行時的發生順序?哪些可能在同一個對象周期中反復的發生?

    答:Awake–>OnEnable->Start

    OnEnable在同一周期中可以反復地發生!

    7. MeshRender中material和sharedmaterial的區別?

    答:修改sharedMaterial將改變所有物體使用這個材質的外觀,并且也改變儲存在工程里的材質設置。 不推薦修改由sharedMaterial返回的材質。如果你想修改渲染器的材質,使用material替代。

    8. TCP/IP協議棧各個層次及分別的功能?

    網絡接口層:這是協議棧的最低層,對應OSI的物理層和數據鏈路層,主要完成數據幀的實際發送和接收。

    網絡層:處理分組在網絡中的活動,例如路由選擇和轉發等,這一層主要包括IP協議、ARP、ICMP協議等。

    傳輸層:主要功能是提供應用程序之間的通信,這一層主要是TCP/UDP協議。

    應用層:用來處理特定的應用,針對不同的應用提供了不同的協議,例如進行文件傳輸時用到的FTP協議,發送email用到的SMTP等。

    9. Unity提供了幾種光源,分別是什么?

    四種。

    • 平行光:Directional Light
    • 點光源:Point Light
    • 聚光燈:Spot Light
    • 區域光源:Area Light

    10. 簡述一下對象池,你覺得在FPS里哪些東西適合使用對象池?

    對象池就存放需要被反復調用資源的一個空間

    比如游戲中要常被大量復制的對象,子彈,敵人,以及任何重復出現的對象。

    特點:用內存換取cpu的優化

    11. CharacterController和Rigidbody的區別?

    Rigidbody具有完全真實物理的特性,而CharacterController可以說是受限的的Rigidbody,具有一定的物理效果但不是完全真實的。

    12. 移動相機動作在哪個函數里,為什么在這個函數里?

    LateUpdate,是在所有的Update結束后才調用,比較適合用于命令腳本的執行。
    官網上例子是攝像機的跟隨,都是所有的Update操作完才進行攝像機的跟進,不然就有可能出現攝像機已經推進了,但是視角里還未有角色的空幀出現。

    13. 簡述prefab的用處

    在游戲運行時實例化,prefab相當于一個模板,對你已經有的素材、腳本、參數做一個默認的配置,以便于以后的修改,同事prefab打包的內容簡化了導出的操作,便于團隊的交流。

    14. GPU的工作原理?

    簡而言之,GPU的圖形(處理)流水線完成如下的工作:(并不一定是按照如下順序)。

    頂點處理:這階段GPU讀取描述3D圖形外觀的頂點數據并根據頂點數據確定3D圖形的形狀及位置關系,建立起3D圖形的骨架。在支持DX8和DX9規格的GPU中,這些工作由硬件實現的Vertex Shader(定點著色器)完成。

    光柵化計算:顯示器實際顯示的圖像是由像素組成的,我們需要將上面生成的圖形上的點和線通過一定的算法轉換到相應的像素點。把一個矢量圖形轉換為一系列像素點的過程就稱為光柵化。例如,一條數學表示的斜線段,最終被轉化成階梯狀的連續像素點。

    紋理帖圖:頂點單元生成的多邊形只構成了3D物體的輪廓,而紋理映射(texture mapping)工作完成對多變形表面的帖圖,通俗的說,就是將多邊形的表面貼上相應的圖片,從而生成“真實”的圖形。TMU(Texture mapping unit)即是用來完成此項工作。

    像素處理:這階段(在對每個像素進行光柵化處理期間)GPU完成對像素的計算和處理,從而確定每個像素的最終屬性。在支持DX8和DX9規格的GPU中,這些工作由硬件實現的Pixel Shader(像素著色器)完成。

    最終輸出:由ROP(光柵化引擎)最終完成像素的輸出,1幀渲染完畢后,被送到顯存幀緩沖區。

    總結:GPU的工作通俗的來說就是完成3D圖形的生成,將圖形映射到相應的像素點上,對每個像素進行計算確定最終顏色并完成輸出。

    15. 什么是渲染管道?

    是指在顯示器上為了顯示出圖像而經過的一系列必要操作。 渲染管道中的很多步驟,都要將幾何物體從一個坐標系中變換到另一個坐標系中去。

    主要步驟有: 本地坐標->視圖坐標->背面裁剪->光照->裁剪->投影->視圖變換->光柵化。

    16. 如何優化內存?

  • 壓縮自帶類庫;
  • 將暫時不用的以后還需要使用的物體隱藏起來而不是直接Destroy掉;
  • 釋放AssetBundle占用的資源;
  • 降低模型的片面數,降低模型的骨骼數量,降低貼圖的大小;
  • 使用光照貼圖,使用多層次細節(LOD),使用著色器(Shader),使用預設(Prefab)
  • 代碼中少產生臨時變量
  • 18. 動態加載資源的方式?

    • instantiate:最簡單的一種方式,以實例化的方式動態生成一個物體。
    • Assetsbundle:即將資源打成 asset bundle 放在服務器或本地磁盤,然后使用WWW模塊get 下來,然后從這個bundle中load某個object,unity官方推薦也是絕大多數商業化項目使用的一種方式。
    • Resource.Load:可以直接load并返回某個類型的Object,前提是要把這個資源放在Resource命名的文件夾下,Unity不管有沒有場景引用,都會將其全部打入到安裝包中
    • AssetDatabase.loadasset :這種方式只在editor范圍內有效,游戲運行時沒有這個函數,它通常是在開發中調試用的。

    19. 使用Unity3d實現2d游戲,有幾種方式?

  • 使用本身的GUI、UGUI
  • 把攝像機的Projection(投影)值調為Orthographic(正交投影),不考慮z軸;
  • 使用2d插件,如:2DToolKit、NGUI
  • 20. 在物體發生碰撞的整個過程中,有幾個階段,分別列出對應的函數 三個階段

    答:OnCollisionEnter、 OnCollisionStay、 OnCollisionExit

    21. Unity3d的物理引擎中,有幾種施加力的方式,分別描述出來

    • rigidbody.AddForce
    • rigidbody.AddForceAtPosition

    22. 什么叫做鏈條關節?

    Hinge Joint,可以模擬兩個物體間用一根鏈條連接在一起的情況,能保持兩個物體在一個固定距離內部相互移動而不產生作用力,但是達到固定距離后就會產生拉力。

    23. 物體自身旋轉使用的函數?

    Transform.Rotate()

    24. Unity3d提供了一個用于保存和讀取數據的類(PlayerPrefs),請列出保存和讀取整形數據的函數

    PlayerPrefs.SetInt()、 PlayerPrefs.GetInt()

    25. Unity3d腳本從喚醒到銷毀有著一套比較完整的生命周期,請列出系統自帶的幾個重要的方法。

    答:Awake——>Start——>Update——>FixedUpdate——>LateUpdate——>OnGUI——>OnDisable——>OnDestroy

    主要執行順序

    編輯器->初始化->物理系統->輸入事件->游戲邏輯->場景渲染->GUI渲染->物體激活或禁用->銷毀物體->應用結束

    主要函數介紹

    • Reset 是在用戶點擊檢視面板的Reset按鈕或者首次添加該組件時被調用。此函數只在編輯模式下被調用。Reset最常用于在檢視面板中給定一個最常用的默認值。
    • Awake 用于在游戲開始之前初始化變量或游戲狀態。在腳本整個生命周期內它僅被調用一次.Awake在所有對象被初始化之后調用,所以你可以安全的與其他對象對話或用諸如 GameObject.FindWithTag 這樣的函數搜索它們。每個游戲物體上的Awke以隨機的順序被調用。因此,你應該用Awake來設置腳本間的引用,并用Start來傳遞信息 ,Awake總是在Start之前被調用。它不能用來執行協同程序。
    • OnDisable 不能用于協同程序。當對象變為不可用或非激活狀態時此函數被調用。
    • Start 在behaviour的生命周期中只被調用一次。它和Awake的不同是Start只在腳本實例被啟用時調用。你可以按需調整延遲初始化代碼。Awake總是在Start之前執行。這允許你協調初始化順序。
    • FixedUpdate 當MonoBehaviour啟用時,其在每一幀被調用。處理Rigidbody時,需要用FixedUpdate代替Update。例如:給剛體加一個作用力時,你必須應用作用力在FixedUpdate里的固定幀,而不是Update中的幀。(兩者幀長不同)。
    • OnTriggerEnter 可以被用作協同程序,在函數中調用yield語句。當Collider(碰撞體)進入trigger(觸發器)時調用OnTriggerEnter。
    • OnCollisionEnter 相對于OnTriggerEnter,傳遞的是Collision類而不是Collider。Collision包含接觸點,碰撞速度等細節。如果在函數中不使用碰撞信息,省略collisionInfo參數以避免不必要的運算。注意如果碰撞體附加了一個非動力學剛體,只發送碰撞事件。可以被用作協同程序。
      當鼠標在GUIElement(GUI元素)或Collider(碰撞體)上點擊時調用OnMouseDown。
    • Update 是實現各種游戲行為最常用的函數。
    • yield 一個協同程序在執行過程中,可以在任意位置使用yield語句。yield的返回值控制何時恢復協同程序向下執行。協同程序在對象自有幀執行過程中堪稱優秀。協同程序在性能上沒有更多的開銷。StartCoroutine函數是立刻返回的,但是yield可以延遲結果。直到協同程序執行完畢。
    • LateUpdate 是在所有Update函數調用后被調用。這可用于調整腳本執行順序。例如:當物體在Update里移動時,跟隨物體的相機可以在LateUpdate里實現。
      渲染和處理GUI事件時調用。這意味著你的OnGUI程序將會在每一幀被調用。要得到更多的GUI事件的信息查閱Event手冊。如果Monobehaviour的enabled屬性設為false,OnGUI()將不會被調用。
    • OnApplicationQuit,當用戶停止運行模式時在編輯器中調用。當web被關閉時在網絡播放器中被調用。

    26. 物理更新一般放在哪個系統函數里?

    FixedUpdate,每固定幀繪制時執行一次,和Update不同的是FixedUpdate是渲染幀執行,如果你的渲染效率低下的時候FixedUpdate調用次數就會跟著下降。

    FixedUpdate比較適用于物理引擎的計算,因為是跟每幀渲染有關。 Update就比較適合做控制。

    27. 在場景中放置多個Camera并同時處于活動狀態會發生什么?

    游戲界面可以看到很多攝像機的混合。

    28. 如何銷毀一個UnityEngine.Object及其子類?

    使用Destroy()方法;

    29. 請描述游戲動畫有哪幾種,以及其原理?

    主要有關節動畫骨骼動畫單一網格模型動畫(關鍵幀動畫)

    • 關節動畫:把角色分成若干獨立部分,一個部分對應一個網格模型,部分的動畫連接成一個整體的動畫,角色比較靈活,Quake2中使用這種動畫;

    • 骨骼動畫,廣泛應用的動畫方式,集成了以上兩個方式的優點,骨骼按角色特點組成一定的層次結構,有關節相連,可做相對運動,皮膚作為單一網格蒙在骨骼之外,決定角色的外觀;

    • 單一網格模型動畫由一個完整的網格模型構成,在動畫序列的關鍵幀里記錄各個頂點的原位置及其改變量,然后插值運算實現動畫效果,角色動畫較真實。

    30. 請描述為什么Unity3d中會發生在組件上出現數據丟失的情況

    一般是組件上綁定的物體對象被刪除了

    31. alpha blend工作原理?

    Alpha Blend 實現透明效果,不過只能針對某塊區域進行alpha操作,透明度可設。

    32. 寫出光照計算中的diffuse的計算公式?

    diffuse = Kd x colorLight x max(N*L,0);Kd 漫反射系數、colorLight 光的顏色、N 單位法線向量、L 由點指向光源的單位向量、其中N與L點乘,如果結果小于等于0,則漫反射為0。

    33. LOD是什么,優缺點是什么?

    LOD(Level of detail)多層次細節,是最常用的游戲優化技術。
    它按照模型的位置和重要程度決定物體渲染的資源分配,降低非重要物體的面數和細節度,從而獲得高效率的渲染運算。

    缺點:增加了內存

    LOD簡單示例:【100個 Unity踩坑小知識點】| Unity 的 LOD技術(多細節層次)

    33. 兩種陰影判斷的方法、工作原理?

    本影半影

    • 本影:景物表面上那些沒有被光源直接照射的區域(全黑的輪廓分明的區域)。
    • 半影:景物表面上那些被某些特定光源直接照射但并非被所有特定光源直接照射的區域(半明半暗區域) 工作原理:從光源處向物體的所有可見面投射光線,將這些面投影到場景中得到投影面,再將這些投影面與場景中的其他平面求交得出陰影多邊形,保存這些陰影多邊形信息,然后再按視點位置對場景進行相應處理得到所要求的視圖(利用空間換時間,每次只需依據視點位置進行一次陰影計算即可,省去了一次消隱過程)

    34. Vertex Shader是什么,怎么計算?

    頂點著色器 是一段執行在GPU上的程序,用來取代fixed pipeline中的transformation和lighting,Vertex Shader主要操作頂點。

    Vertex Shader對輸入頂點完成了從local space到homogeneous space(齊次空間)的變換過程,homogeneous space即projection space的下一個space。在這其間共有world transformation, view transformation和projection transformation及lighting幾個過程。

    35. MipMap是什么,作用?

    MipMapping:在三維計算機圖形的貼圖渲染中有常用的技術,為加快渲染進度和減少圖像鋸齒,貼圖被處理成由一系列被預先計算和優化過的圖片組成的文件,這樣的貼圖被稱為MipMap。

    36. 請描述Interface與抽象類之間的不同

    語法不同處

  • 抽象類中可以有字段,接口沒有。
  • 抽象類中可以有實現成員,接口只能包含抽象成員。
  • 抽象類中所有成員修飾符都可以使用,接口中所有的成員都是對外的,所以不需要修飾符修飾。
  • 用法不同處

  • 抽象類是概念的抽象,接口關注于行為。
  • 抽象類的子類與父類的關系是泛化關系,耦合度較高,而實現類和接口之間是實現的關系,耦合度比泛化低。
  • 一個類只能繼承一個類,但是可以實現多個接口。
  • 37. .Net與Mono的關系?

    mono是.net的一個開源跨平臺工具,就類似java虛擬機,java本身不是跨平臺語言,但運行在虛擬機上就能夠實現了跨平臺。
    .net只能在windows下運行,mono可以實現跨平臺編譯運行,可以運行于Linux,Unix,Mac OS等。

    38. 簡述Unity3D支持的作為腳本的語言的名稱?

    Unity的腳本語言基于Mono的.Net平臺上運行,可以使用.NET庫,這也為XML、數據庫、正則表達式等問題提供了很好的解決方案。

    Unity里的腳本都會經過編譯,他們的運行速度也很快。這三種語言實際上的功能和運行速度是一樣的,區別主要體現在語言特性上。

    Unity支持的語言:C#,JavaScrip(不在使用)

    39. Unity3D是否支持寫成多線程程序?如果支持的話需要注意什么?

    支持:如果同時你要處理很多事情或者與Unity的對象互動小可以用thread,否則使用coroutine。

    Unity3d沒有多線程的概念,不過unity也給我們提供了StartCoroutine(協同程序)和LoadLevelAsync(異步加載關卡)后臺加載場景的方法。

    注意:僅能從主線程中訪問Unity3D的組件,對象和Unity3D系統調用。C#中有lock這個關鍵字,以確保只有一個線程可以在特定時間內訪問特定的對象

    40. 如何讓已經存在的GameObject在LoadLevel后不被卸載掉?

    DontDestroyOnLoad(transform.gameObject);

    41. U3D中用于記錄節點空間幾何信息的組件名稱,及其父類名稱

    Transform 父類是 Component

    42. 向量的點乘、叉乘以及歸一化的意義?

    • 叉乘 幾何意義:得到一個與這兩個向量都垂直的向量,這個向量的模是以兩個向量為邊的平行四邊形的面積
    • 點乘 幾何意義:可以用來表征或計算兩個向量之間的夾角,以及在b向量在a向量方向上的投影
  • 點乘描述了兩個向量的相似程度,結果越大兩向量越相似,還可表示投影
  • 叉乘得到的向量垂直于原來的兩個向量
  • 標準化向量:用在只關系方向,不關心大小的時候
  • 43. 矩陣相乘的意義及注意點?

    用于表示線性變換:旋轉、縮放、投影、平移、仿射

    注意矩陣的蠕變:誤差的積累

    44. 當一個細小的高速物體撞向另一個較大的物體時,會出現什么情況?如何避免?

    穿透(碰撞檢測失敗)(例如CS射擊游戲,可以使用開槍時發射射線,射線碰撞到則掉血擊中)

    45. 為何大家都在移動設備上尋求U3D原生GUI的替代方案

    不美觀,OnGUI很耗費時間,使用不方便

    46. 請簡述如何在不同分辨率下保持UI的一致性

    多屏幕分辨率下的UI布局一般考慮兩個問題:

  • 布局元素的位置,即屏幕分辨率變化的情況下,布局元素的位置可能固定不動,導致布局元素可能超出邊界;
  • 布局元素的尺寸,即在屏幕分辨率變化的情況下,布局元素的大小尺寸可能會固定不變,導致布局元素之間出現重疊等功能。
  • 為了解決這兩個問題,在Unity GUI體系中有兩個組件可以來解決問題,分別是布局元素的Rect Transform和Canvas的Canvas Scaler組件。

    47. 請簡述OnBecameVisible及OnBecameInvisible的發生時機,以及這一對回調函數的意義?

    當物體是否可見切換之時。可以用于只需要在物體可見時才進行的計算。

    48. 什么叫動態合批?跟靜態合批有什么區別?

    如果動態物體共用著相同的材質,那么Unity會自動對這些物體進行批處理。
    動態批處理操作是自動完成的,并不需要你進行額外的操作。

    區別:動態批處理一切都是自動的,不需要做任何操作,而且物體是可以移動的,但是限制很多。靜態批處理:自由度很高,限制很少,缺點可能會占用更多的內存,而且經過靜態批處理后的所有物體都不可以再移動了。

    49. Unity提供了幾種光源,分別是什么?

    四種。
    平?光:Directional Light
    點光源:Point Light
    聚光燈:Spot Light
    區域光源:Area Light

    50. 什么是LightMap?

    LightMap:就是指在三維軟件里實現打好光,然后渲染把場景各表面的光照輸出到貼圖上,最后又通過引擎貼到場景上,這樣就使物體有了光照的感覺。

    51. Unity和cocos2d的區別

    Unity3D支持C#、javascript等,cocos2d-x 支持c++、Html5、Lua等。

    cocos2d 開源 并且免費

    Unity3D支持iOS、Android、Flash、Windows、Mac、Wii等平臺的游戲開發,cocos2d-x支持iOS、Android、WP等。

    52. Unity3D Shader分哪幾種,有什么區別?

  • 表面著色器的抽象層次比較高,它可以輕松地以簡潔方式實現復雜著色。表面著色器可同時在前向渲染及延遲渲染模式下正常工作。
  • 頂點片段著色器可以非常靈活地實現需要的效果,但是需要編寫更多的代碼,并且很難與Unity的渲染管線完美集成。
  • 固定功能管線著色器可以作為前兩種著色器的備用選擇,當硬件無法運行那些酷炫Shader的時,還可以通過固定功能管線著色器來繪制出一些基本的內容。
  • 53. 獲取、增加、刪除組件的命令分別是什么?

    • 獲取:GetComponent
    • 增加:AddComponent
    • 刪除:Destroy

    54. Unity中,照相機的Clipping Planes的作用是什么?調整 Near、Far兩個值時,應該注意什么?

    剪裁平面 。從相機到開始渲染和停止渲染之間的 距離。

    55. 簡述prefab的用處

    在游戲運行時實例化,prefab相當于一個模板, 對你已經有的素材、腳本、參數做一個默認的配 置,以便于以后的修改,同時prefab打包的內容 簡化了導出的操作,便于團隊的交流。

    56. 請描述為什么Unity3d中會發生 在組件上出現數據丟失的情況

    剪裁平面 。從相機到開始渲染和停止渲染之間的距離。

    57. 如何在Unity3D中查看場景的面數,頂點數和Draw Call數?如何降低Draw Call數?

    在Game視圖右上角點擊Stats。降低Draw Call 的技術是Draw Call Batching

    58. 請問alpha test在何時使用?能達到什么效果?

    Alpha Test,中文就是透明度測試。
    簡而言之就是V&F shader中最后fragment函數輸出的該點顏色值(即上一講frag的輸出half4)的alpha值與固定值進行比較。Alpha Test語句通常于Pass{}中的起始位置。Alpha Test產生的效果也很極端,要么完全透明,即看不到,要么完全不透明。

    60. 四元數有什么作用?

    對旋轉角度進行計算時用到四元數

    61. 將Camera組件的ClearFlags選項選成Depth only是什么意思?有何用處?

    僅深度,該模式用于對象不被裁剪。

    62. 如何讓已經存在的GameObject在LoadLevel后不被卸載掉?

    void Awake() {DontDestroyOnLoad(transform.gameObject); }

    63. 在編輯場景時將GameObject設置為Static有何作用?

    設置游戲對象為Static將會剔除(或禁用)網格對象當這些部分被靜態物體擋住而不可見時。因此,在你的場景中的所有不會動的物體都應該標記為Static。

    64. 有A和B兩組物體,有什么辦法能夠保證A組物體永遠比B組物體先渲染?

    把A組物體的渲染對列大于B物體的渲染隊列

    65. 將圖片的TextureType選項分別選為Texture和Sprite有什么區別

    Sprite作為UI精靈使用,Texture作用模型貼圖使用。

    66. 問一個Terrain,分別貼3張,4張,5張地表貼圖,渲染速度有什么區別?為什么?

    答:沒有區別,因為不管幾張貼圖只渲染一次。

    67. 什么是DrawCall?DrawCall高了又什么影響?如何降低DrawCall?

    Unity中,每次引擎準備數據并通知GPU的過程稱為一次Draw Call。DrawCall越高對顯卡的消耗就越大。降低DrawCall的方法:

    • Dynamic Batching
    • Static Batching
    • 高級特性Shader降級為統一的低級特性的Shader。

    68. 實時點光源的優缺點是什么?

    可以有cookies – 帶有 alpha通道的立方圖(Cubemap )紋理。點光源是最耗費資源的。

    69. 簡述四元數的作用,四元數對歐拉?的優點?

    四元數?于表示旋轉,對旋轉?度進?計算時?到四元數
    相對歐拉?的優點:
    1)能進?增量旋轉
    2)避免萬向鎖
    3)給定?位的表達?式有兩種,互為負(歐拉?有?
    數種表達?式)

    70. Addcomponent后哪個生命周期函數會被調用

    對于AddComponent添加的腳本,其Awake,Start,OnEnable是在Add的當前幀被調用的
    其中Awake,OnEnable與AddComponent處于同一調用鏈上
    Start會在當前幀稍晚一些的時候被調用,Update則是根據Add調用時機決定何時調用:如果Add是在當前幀的Update前調用,那么新腳本的Update也會在當前幀被調用,否則會被延遲到下一幀調用。

    72. 層剔除

    用layermask ,通過位運算的方式去設置
    在代碼中使用時如何開啟某個Layers?

    LayerMask mask = 1 << 你需要開啟的Layers層。

    LayerMask mask = 0 << 你需要關閉的Layers層。

    舉幾個例子:

    LayerMask mask = 1 << 2; 表示開啟Layer2。LayerMask mask = 0 << 5;表示關閉Layer5。LayerMask mask = 1<<2|1<<8;表示開啟Layer2和Layer8。LayerMask mask = 0<<3|0<<7;表示關閉Layer3和Layer7。

    73. 分別解釋頂點著色器和像素著色器是什么

    頂點著?器是?段執?在GPU上的程序,?來取代 fixed pipeline中的transformation和lighting,Vertex Shader主要操作頂點。‘’

    像素著色器實際上就是對每一個像素進行光柵化的處理期間,在GPU上運算的一段程序。

    不同與頂點著色器,像素著色器不會以軟件的形式來模擬像素著色器。

    像素著色器實質上是取代了固定功能流水線中多重紋理的環節,而且賦予了我們訪問單個像素以及訪問每一個像素紋理坐標的能力

    74. 畫布的三種模式.縮放模式

    • 屏幕空間-覆蓋模式(Screen Space-Overlay),Canvas創建出來后,默認就是該模式,該模式和攝像機無關,即使場景內沒有攝像機,UI游戲物體照樣渲染
      • 屏幕空間:電腦或者手機顯示屏的2D空間,只有x軸和y軸
      • 覆蓋模式:UI元素永遠在3D元素的前面
    • 屏幕空間-攝像機模式(Screen Space-Camera),設置成該模式后需要指定一個攝像機游戲物體,指定后UGUI就會自動出現在該攝像機的“投射范圍”內,和NGUI的默認UI Root效果一致,如果隱藏掉攝像機,UGUI當然就無法渲染
    • 世界空間模式(WorldSpace),設置成該模式后UGUI就相當于是場景內的一個普通的“Cube 游戲模型”,可以在場景內任意的移動UGUI元素的位置,通常用于怪物血條顯示和VR開發

    縮放模式:

    Property:Function:
    UI Scale ModeCanvas中UI元素的縮放模式
    Constant Pixel Size使UI保持自己的尺寸,與屏幕尺寸無關。
    Scale With Screen Size屏幕尺寸越大,UI越大
    Constant Physical Size使UI元素保持相同的物理大小,與屏幕尺寸無關。
    Constant Pixel Size、Constant Physical Size實際上他們本質是一樣的,只不過 Constant Pixel Size 通過邏輯像素大小調節來維持縮放,而 Constant Physical Size 通過物理大小調節來維持縮放。

    75. FSM有限狀態機

    FSM是一種數據結構,它由以下幾個部分組成:

  • 內在的所有狀態(必須是有限個)
  • 輸入條件
  • 狀態之間起到連接性作用的轉換函數
  • 為什么要用FSM?

    因為它編程快速簡單,易于調試,性能高,與人類思維相似從而便于梳理,靈活且容易修改

    FSM的描述性定義:
    一個有限狀態機是一個設備,或是一個模型,具有有限數量的狀態。它可以在任何給定時間根據輸入進行操作,使得系統從一個狀態轉換到另一個狀態,或者是使一個輸出或者一種行為的發生,一個有限狀態機在任何瞬間只能處于一種狀態。

    State 狀態基類,定義了基本的Enter,Update,Exit三種狀態行為,通常在這三種狀態行為的方法里會寫一些邏輯。每個State都會有StateID(狀態id,可以是枚舉等),FSMControl(控制該狀態的狀態控制器的引用),Check方法(用來進行狀態判斷,并返回StateID,通過FSMControl驅動)

    FSMControl,包含了一下FSMMachine,封裝層。

    FSMMachine,驅動它的State列表,Update方法調用當前State的Check方法來獲得StateID,當currentState的Check方法返回的StateID和當前StateID不同,則切換狀態。

    這是一個簡單的FSM狀態機系統,根據需要自己寫個Control繼承FSMControl來驅動狀態。因為Check是State的職責,所以每一個不同對象的行為如Human的Idle和Dog的Idel區分肯定也不同。因此需要分別去寫HumanIdleState和DogIdleState。如果還有Cat,Fish,可想而知代碼量會有多么龐大。

    因此我將FSMControl抽象為一個公共基類,把State的Check具體實現作為FSMControl的Virtual方法。這樣在IdleState里的Check方法就不用寫具體的狀態切換判斷邏輯,而是調用它FSMControl子類(自己寫的繼承自FSMControl的Control類)的重寫方法

    這樣每次添加的新對象只要有Idle這個狀態,就可以用一個公用的StateIdle,狀態切換的邏輯差異放在Control層

    76. 使用過哪些Unity插件

    因人而異,可以去簡單了解一下要說的插件,沒用過也可以,至少你知道這個插件了!

    插件名作用
    shader graph制作shader光影效果
    cinemachine+timeline+postprocessingstack制作過場動畫
    nodecanvas制作怪物ai
    easytouch手游觸摸控制
    DoTween動畫插件
    Fungus對話插件
    3D WebView瀏覽器插件
    Vectrosity劃線插件
    AVPro Video視頻播放插件

    💛物理系統

    1. CharacterController和Rigidbody的區別

    Rigidbody具有完全真實物理的特性,?CharacterController可以說是受限的
    Rigidbody,具有?定的物理效果但不是完全真實的。

    2. 射線檢測碰撞物的原理是?

    答:射線是3D世界中一個點向一個方向發射的一條無終點的線,在發射軌跡中與其他物體發生碰撞時,它將停止發射 。

    3. 什么叫做鏈條關節?

    Hinge Joint,可以模擬兩個物體間用一根鏈條連 接在一起的情況,能保持兩個物體在一個固定距 離內部相互移動而不產生作用力,但是達到固定 距離后就會產生拉力。

    4. 物體發生碰撞的必要條件?

    兩個物體都必須帶有碰撞器Collider,其中一個物體還必須帶有Rigidbody剛體

    5. 在物體發生碰撞的整個過程 中,有幾個階段,分別列出對 應的函數 三個階段

  • OnCollisionEnter
  • OnCollisionStay
  • OnCollis ionExit
  • 6. Unity3d中的碰撞器和觸發器的 區別?

    碰撞器是觸發器的載體,而觸發器只是碰撞器身 上的一個屬性。
    當Is Trigger=false時,碰撞器根據物理引擎引發 碰撞,產生碰撞的效果,可以調用 OnCollisionEnter/Stay/Exit函數;
    當Is Trigger=true時,碰撞器被物理引擎所忽略, 沒有碰撞效果,可以調用OnTriggerEnter/Stay/ Exit函數。
    如果既要檢測到物體的接觸又不想讓碰撞檢測影 響物體移動或要檢測一個物件是否經過空間中的 某個區域這時就可以用到觸發器

    7. 射線檢測碰撞物的原理是?

    射線是3D世界中一個點向一個方向發射的一條無 終點的線,在發射軌跡中與其他物體發生碰撞 時,它將停止發射 。

    8. Unity3d的物理引擎中,有幾種 施加力的方式,分別描述出來

    rigidbody.AddForce/AddForceAtPosition,都在 rigidbody系列函數中。

    9. 當一個細小的高速物體撞向另一個較大的物體時,會出現什么情況?如何避免?

    穿透(碰撞檢測失敗)

    10. 射線Raycast原理

    從一個起點向一個方向發射一條物理射線,返回碰撞到的物體的碰撞信息


    💚UI & 2D 部分

    1. UGUI 合批的一些問題

    簡單來說在一個Canvas下,需要相同的material,相同的紋理以及相同的Z值。例如UI上的字體Texture使用的是字體的圖集,往往和我們自己的UI圖集不一樣,因此無法合批。還有UI的動態更新會影響網格的重繪,因此需要動靜分離。

    2. Image和RawImage的區別

    • Imgae比RawImage更消耗性能
    • Image只能使用Sprite屬性的圖片,但是RawImage什么樣的都可以使用
    • Image適合放一些有操作的圖片,裁剪平鋪旋轉什么的,針對Image Type屬性
    • RawImage就放單獨展示的圖片就可以,性能會比Image好很多

    3. 使用Unity3d實現2d游戲,有幾種方式?

  • 使用本身UGUI,UGUI是duUnity官方推出zhi的最新UI系統,UI就是UserInterface。
  • 把攝像機的投影改為正交投影,不考慮Z軸.
  • 使用Untiy自身的2D模式,在2d模式中,層級視圖中只有一個正交攝像機,場景視圖選擇的是2D模式。
  • 使用2D TooKit插件,2D Toolkit是一組與Unity環境無縫集成的工具,提供高效的2D精靈和文本系統。
  • 4. 將圖片的TextureType選項分別選為Texture和Sprite有什么區別

    Sprite作為UI精靈使用,Texture作用模型貼圖使用。

    5. 請簡述如何在不同分辨率下保 持UI的一致性

    屏幕分辨率的自適應 性,原理就是計算出屏幕的寬高比跟原來的預設 的屏幕分辨率求出一個對比值,然后修改攝像機 的size。


    💙動畫系統

    1. 請描述游戲動畫有哪幾種,以及其原理?

    主要有關節動畫、?骼動畫、單一網格模型動畫(關鍵 幀動畫)。

    • 關節動畫:把?色分成若干獨立部分,一個 部分對應一個網格模型,部分的動畫連接成一個整體 的動畫,?色比較靈活,Quake2中使用這種動畫;
    • ?骼動畫,廣泛應用的動畫方式,集成了以上兩個方 式的優點,?骼按?色特點組成一定的層次結構,有 關節相連,可做相對運動,皮膚作為單一網格蒙在? 骼之外,決定?色的外觀;
    • 單一網格模型動畫由一個完整的網格模型構成,在動 畫序列的關鍵幀里記錄各個頂點的原位置及其改變量,然后插值運算實現動畫效果,?色動畫較真實。

    2. Avator的作用

    用戶提供的模型骨架和Unity的骨架結構進行適配,是一種骨架映射關系。
    方便動畫的重定向

    AnimationType有三種類型
    Humanoid人型:可以動畫重定向,游戲對象掛載animator,子類原始模型+重定向模型,設置原始模型和使用模型的AnimationType為Humanoid類型
    Generic非人型
    Legacy舊版
    Avator Mask身體遮罩,身體某一部分是否受到動畫影響
    反向動力學 IK,通過手或腳來控制身體其他部分

    3. 反向旋轉動畫的方法是什么?

  • 將動畫速度調成-1
  • 改代碼animation.speed=-1
  • 4. Animation.CrossFade 是什么?

    動畫淡入淡出

    5. 寫出 Animation 的五個方法

    • AddClip 將 clip 添加到名稱為 newName 的動畫中。
    • Blend 在后續 time 秒中將名稱為 animation 的動畫向 targetWeight 混合。
    • CrossFade 在后續 time 秒的時間段內,使名稱為 animation 的動畫淡入,使其他動畫淡出。
    • CrossFadeQueued 使動畫在上一個動畫播放完成后交叉淡入淡出。
    • IsPlaying 名稱為 name 的動畫是否正在播放?
    • PlayQueued 在先前的動畫播放完畢后再播放動畫。
    • RemoveClip 從動畫列表中移除剪輯。
    • Sample 對當前狀態的動畫進行采樣。
    • Stop 停止所有使用該動畫啟動的正在播放的動畫。

    6. 簡述 SkinnedMesh 的實現原理

    SkinnedMesh蒙皮網格動畫
    分為骨骼和蒙皮兩部分
    骨骼是一個層次結構,存儲了骨骼的Transform數據
    蒙皮是mesh頂點附著在骨骼之上,頂點可以被多個骨骼影響,決定了其權重等,
    還有將頂點從Mesh空間變換到骨骼空間~

    7. 動畫層(Animation Layers)的作用是什么?

    動畫分層

    身體部位動畫分層,比如我只想動動頭,身體其他部分不發生動畫,可以方便處理動畫區分


    💜協程

    1. Unity 協程 Coroutine 的作用

    協程Coroutine在Unity中一直扮演者重要的角色。
    可以實現簡單的計時器、將耗時的操作拆分成幾個步驟分散在每一幀去運行等等,而盡量不阻塞主線程運行。

    2. 什么是協同程序?

    在主線程運行時同時開啟另一段邏輯處理,來協助當前程序的執行。
    換句話說,開啟協程就是開啟一個線程。可以用來控制運動、序列以及對象的行為。

    3. Unity3D的協程和C#線程 之間的區別是什么?

    多線程程序同時運行多個線程 ,而在任一指定時刻只 有一個協程在運行,并且這個正在運行的協同程序只 在必要時才被掛起。
    除主線程之外的線程無法訪問Unity3D的對象、組件、 方法。
    Unity3d沒有多線程的概念,不過unity也給我們提供了 StartCoroutine(協同程序)和LoadLevelAsync(異步 加載關卡)后臺加載場景的方法。
    StartCoroutine為什 么叫協同程序呢,所謂協同,就是當你在 StartCoroutine的函數體里處理一段代碼時,利用yield 語句等待執行結果,這期間不影響主程序的繼續執 行,可以協同工作。

    4. 協同程序的執行代碼是什么?有何用處,有何缺點?

    官方案例) function Start() { // - After 0 seconds, prints "Starting 0.0" // - After 0 seconds, prints "Before WaitAndPrint Finishes 0.0" // - After 2 seconds, prints "WaitAndPrint 2.0" // 先打印"Starting 0.0"和"Before WaitAndPrint Finishes 0.0"兩句,2秒后打印"WaitAndPrint 2.0" print ("Starting " + Time.time ); // Start function WaitAndPrint as a coroutine. And continue execution while it is running // this is the same as WaintAndPrint(2.0) as the compiler does it for you automatically // 協同程序WaitAndPrint在Start函數內執行,可以視 同于它與Start函數同步執行. StartCoroutine(WaitAndPrint(2.0)); print ("Before WaitAndPrint Finishes " + Time.time ); } function WaitAndPrint (waitTime : float) { // suspend execution for waitTime seconds // 暫停執行waitTime秒 yield WaitForSeconds (waitTime); print ("WaitAndPrint "+ Time.time ); }

    作用:一個協同程序在執行過程中,可以在任意位置使
    用yield語句。yield的返回值控制何時恢復協同程序向 下執行。協同程序在對象自有幀執行過程中堪稱優 秀。協同程序在性能上沒有更多的開銷。 缺點:協同程序并非真線程,可能會發生堵塞。

    更多協程內容:Unity零基礎到入門 ??| 小萬字教程 對 Unity 中的 協程 ??全面解析+實戰演練??


    🤎數據持久化 & 資源管理

    1. unity常用資源路徑有哪些

    //獲取的目錄路徑最后不包含 / //獲得的文件路徑開頭包含 / Application.dataPath; //Asset文件夾的絕對路徑 //只讀 Application.streamingAssetsPath; //StreamingAssets文件夾的絕對路徑(要先判斷是否存在這個文件夾路徑) Application.persistentData ; //可讀寫//資源數據庫 (AssetDatabase) 是允許您訪問工程中的資源的 API AssetDatabase.GetAllAssetPaths; //獲取所有的資源文件(不包含meta文件) AssetDatabase.GetAssetPath(object) //獲取object對象的相對路徑 AssetDatabase.Refresh(); //刷新 AssetDatabase.GetDependencies(string); //獲取依賴項文件Directory.Delete(p, true); //刪除P路徑目錄 Directory.Exists(p); //是否存在P路徑目錄 Directory.CreateDirectory(p); //創建P路徑目錄AssetDatabase //類庫,對Asset文件夾下的文件進行操作,獲取相對路徑,獲取所有文件,獲取相對依賴項 Directory //類庫,相關文件夾路徑目錄進行操作,是否存在,創建目錄,刪除等操作

    2. 如何安全的在不同工程間安全 地遷移asset數據?三種方法

  • 將Assets目錄和Library目錄一起遷移
  • 導出包
  • 用unity自帶的assets Server功能
  • 3. unity 提供了一個用于保存讀取數據的類,(playerPrefs),請列出保存讀取整形數據的函數

    PlayerPrefs類是一個本地持久化保存與讀取數據的類
    PlayerPrefs類支持3中數據類型的保存和讀取,浮點型,整形,和字符串型。

    分別對應的函數為:

    SetInt();保存整型數據;GetInt();讀取整形數據;
    SetFloat();保存浮點型數據; GetFlost();讀取浮點型數據;
    SetString();保存字符串型數據; GetString();讀取字符串型數據;

    4. 動態加載資源的方式?

    • instantiate:最簡單的一種方式,以實例化的方式動態生成一個物體。
    • Assetsbundle:即將資源打成 asset bundle 放在服務器或本地磁盤,然后使用WWW模塊get 下來,然后從這個bundle中load某個object,unity官方推薦也是絕大多數商業化項目使用的一種方式。
    • Resource.Load:可以直接load并返回某個類型的Object,前提是要把這個資源放在Resource命名的文件夾下,Unity不管有沒有場景引用,都會將其全部打入到安裝包中
    • AssetDatabase.loadasset :這種方式只在editor范圍內有效,游戲運行時沒有這個函數,它通常是在開發中調試用的。

    5. AssetsBundle 打包

    using UnityEditor; using System.IO;public class CreateAssetBundles //進行AssetBundle打包 {[MenuItem("Assets/Build AssetBundles")]static void BuildAllAssetBundles(){string dir = "AssetBundles";if (Directory.Exists(dir) == false){Directory.CreateDirectory(dir);}BuildPipeline.BuildAssetBundles(dir, //路徑必須創建BuildAssetBundleOptions.ChunkBasedCompression, //壓縮類型***BuildTarget.StandaloneWindows64);//平臺***} } NoneBuild assetBundle without any special option.(LAMA壓縮,壓縮率高,解壓久)
    UncompressedAssetBundleDon’t compress the data when creating the asset bundle.(不壓縮,解壓快)
    ChunkBasedCompressionUse chunk-based LZ4 compression when creating the AssetBundle.

    (壓縮率比LZMA低,解壓速度接近無壓縮)|

    6. AssetBundle加載

  • LoadFromMemory(LoadFromMemoryAsync)
  • LoadFromFile(LoadFromFileAsync)
  • UnityWebRequest
  • LoadAssetsByWWW(LoadFromCacheOrDownload)
  • 第一種

    IEnumerator Start() {string path = "AssetBundles/wall.unity3d";AssetBundleCreateRequest request =AssetBundle.LoadFromMemoryAsync(File.ReadAllBytes(path));yield return request;AssetBundle ab = request.assetBundle;GameObject wallPrefab = ab.LoadAsset<GameObject>("Cube");Instantiate(wallPrefab); }

    第二種

    IEnumerator Start() { string path = "AssetBundles/wall.unity3d";AssetBundleCreateRequest request = AssetBundle.LoadFromFileAsync(path);yield return request;AssetBundle ab = request.assetBundle;GameObject wallPrefab = ab.LoadAsset<GameObject>("Cube");Instantiate(wallPrefab); }

    第三種

    IEnumerator Start() {string uri = @"http://localhost/AssetBundles/cubewall.unity3d";UnityWebRequest request = UnityWebRequest.GetAssetBundle(uri);yield return request.Send();AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request);GameObject wallPrefab = ab.LoadAsset<GameObject>("Cube");Instantiate(wallPrefab); }

    第四種WWW(無依賴)

    private IEnumerator LoadNoDepandenceAsset(){string path = "";if (loadLocal){ #if UNITY_EDITOR_WIN || UNITY_STANDALONE_WINpath += "File:///"; #endif #if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSXpath += "File://"; #endifpath += assetBundlePath + "/" + assetBundleName;//www對象WWW www = new WWW(path);//等待下載【到內存】yield return www;//獲取到AssetBundleAssetBundle bundle = www.assetBundle;//加載資源GameObject prefab = bundle.LoadAsset<GameObject>(assetRealName);//Test:實例化Instantiate(prefab);}

    第四種WWW(有依賴)

    using System.Collections; using System.IO; using UnityEngine; using UnityEngine.Networking;public class LoadAssetsDemo : MonoBehaviour {[Header("版本號")]public int version = 1;[Header("加載本地資源")]public bool loadLocal = true;[Header("資源的bundle名稱")]public string assetBundleName;[Header("資源的真正的文件名稱")]public string assetRealName;//bundle所在的路徑private string assetBundlePath;//bundle所在的文件夾名稱private string assetBundleRootName;private void Awake(){assetBundlePath = Application.dataPath + "/OutputAssetBundle";assetBundleRootName = assetBundlePath.Substring(assetBundlePath.LastIndexOf("/") + 1);Debug.Log(assetBundleRootName);}IEnumerator LoadAssetsByWWW(){string path=""; //判斷是不是本地加載if(loadLocal)// loadLocal=true為本地資源{ #if UNITY_EDITOR_WIN || UNITY_STANDALONE_WINpath+="File:///"; #endif #if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSXpath+="File://"; #edif}//獲取要加載的資源路徑【bundle的總說明文件】path+=assetBundle+"/"+assetBundleRootName;//加載WWW www=WWW.LoadFromCacheOrDownload(path,version);yield return www;//拿到其中的bundleAssetBundle manifestBundle=www.assetsBundle;//獲取到說明文件AssetBundleManifest manifest=manifest.LoadAsset<AssetBundleManifest>("AssetBundleManifest");//獲取資源的所有依賴string[] dependencies=manifest.GetAllDependencies(assetBundleName);//卸載Bubdle和解壓出來的manifest對象manifestBundle.Unload(true);//獲取到相對路徑path =path.Remove(path.LastIndexOf("/")+1);//聲明依賴的Bundle數組AssetBundle[] depAssetBundle=new AssetBundle[dependencies.Length];//遍歷加載所有的依賴for(int i=0;i<dependencies.Length;i++) { //獲取到依賴Bundle的路徑string depPath=path+ dependencies[i];//獲取新的路徑進行加載www=WWW.LoadFromCacheOrDownload(depPath,version);yield return www;//將依賴臨時保存depAssetBundles[i]=www.assetsBundle;}//獲取路徑path+=assBundleName;//加載最終資源www=WWW.LoadFromCacheOrDownload(path,version);//等待下載yield return www;//獲取到真正的AssetBundleAssetBundle realAssetBundle=www.assBunle;//加載真正的資源GameObject prefab=realAssetBundle.LoadAsset<GameObject>(assetBundle);//生成Instantiate(prefab);//卸載依賴for(int i-0;i<depAssetBundle.Length;i++) {depAssetBundle[i].Unload(true); }realAssetBundle.Unload(true); }}

    7. AssetBundle卸載流程

    AssetBundle.Unload(bool),T
    true卸載所有資源

    false只卸載沒使用的資源,而正在使用的資源與AssetBundle依賴關系會丟失,調用Resources.UnloadUnusedAssets可以卸載。

    或者等場景切換的時候自動調用Resources.UnloadUnusedAssets。


    🖤Lua語言和Xlua熱更

    1. Lua如何調用C#

    三種方式
    第一種:官方不推薦
    第二種:如果Resource文件下的Lua文件,使用Lua的Require函數即可
    第三種:如果Lua文件是下載的,使用自定義Loader可滿足

    2. 資源如何打包?依賴項列表如何生成?

  • 查找指定文件夾ABResource里的資源文件
    • Directory.GetFile(資源路徑)
    • 新建AssetBundleBuild對象
    • 獲取資源名稱,并賦值對應AB名稱
    • 獲取各個資源的依賴項:通過UnityEditor.AssetDataBase類獲取各個資源的依賴項
  • 使用Unity自帶的BuildPipeline進行構建AB包
    • BuildPipeLine.BuildAssetBundles(輸出AB包路徑)
    • File.WriteAllLines(將依賴項寫入文件里)
  • 3. 如何解析版本文件?如何加載AB包資源?具體流程是怎么樣的?

  • 解析版本文件列表
    • File.ReadAllLines(讀取文件列表資源路徑URL)
    • 獲取資源名稱,獲取AB包名稱,獲取依賴項,字典容器存儲
    • 獲取Lua文件
  • 加載資源
    • 異步加載資源AB包,AssetBundleRequest請求,AssetBundle.LoadFromFileAsync
    • 先檢查依賴項,再異步加載AB包依賴項
    • 加載成功后都有對應的回調方法,將資源作為參數傳入
  • 4. 熱更新方案有哪些?以及具體熱更流程

  • 整包:存放在上SteamingAssets里
    ——策略:完整更新資源放在包里
    ——優點:首次更新少
    ——缺點:安裝包下載時間長,首次安裝久
  • 分包
    ——策略:少部分資源放在包里,大部分更新資源存放在更新資源器中
    ——優點:安裝包小,安裝時間短,下載快
    ——缺點:首次更新下載解壓縮包時間舊
  • 適用性
    ——海外游戲大部分是使用分包策略,平臺規定
    ——國內游戲大部分是使用整包策略
  • 文件可讀寫路徑
    ——Application.streamingAssestsPath 只讀目錄
    ——Application.persistentDatapath 可讀寫目錄
    ——資源服務器地址URL
  • 【從資源服務器】下載單個文件或多個文件
    ——NetWorking.UnityWebRequest獲取URL , HTTP GET , 連接資源服務器
    ——獲取到downloadHander的文件數據Data,完成后會回調方法,將文件Data作為參數傳出
  • 檢查是否初次安裝
  • 5. 簡述Lua實現面向對象的原理

  • 表table就是一個對象,對象具有了標識self,狀態等相關操作
  • 使用參數self表示方法的該接受者是對象本身,是面向對象的核心點,冒號操作符可以隱藏該self參數
  • 類(Class):每個對象都有一個原型,原型(lua類體系)可以組織多個對象間共享行為
  • setmetatable(A,{__index=B}) 把B設為A的原型
  • 繼承(Inheritance):Lua中類也是對象,可以從其他類(對象)中獲取方法和沒有的字段
  • 繼承特性:可以重新定義(修改實現)在基類繼承的任意方法
  • 多重繼承:一個函數function用作__Index元方法,實現多重繼承,還需要對父類列表進行查找方法,但多繼承復雜性,性能不如單繼承,優化,將繼承的方法賦值到子類當中
  • 私有性(很少用)基本思想:兩個表表示一個對象,第一個表保存對象的狀態在方法的閉包中,第二個表用來保存對象的操作(或接口),用來訪問對象本身。使第一個表完成內容私有性。
  • 6. 簡述Lua有哪8個類型?簡述用途

    • nil 空——可以表示無效值,全局變量(默認賦值為nil),賦值nil ,使其被刪除
    • number 整數
    • table 表 ——
    • string 字符
    • userdata 自定義
    • function 函數
    • bool 布爾
    • thread線程

    🤍網絡

    1. 客戶端與服務器交互方式有幾種?

  • socket通常也稱作"套接字",實現服務器和客戶端之間的物理連接,并進行數據傳輸,主要有UDP和TCP兩個協議。Socket處于網絡協議的傳輸層。

  • 協議傳輸的主要有http協議 和基于http協議的Soap協議(web service),常見的方式是 http 的post 和get 請求,web 服務。

  • 2. 概述序列化

    序列化 簡單理解成把對象轉換為容易傳輸的格式的過程。
    ?如,可以序列化?個對象,然后使?HTTP通過Internet在客戶端和服務器端之間傳輸該對象

    3. UDP/TCP含義,區別

    UDP協議全稱是用戶數據報協議

  • 面向無連接
  • 面向報文,
  • 不可靠性,
  • 有單播,多播,廣播的功能
  • 頭部開銷小,傳輸數據報文時是很高效的。
  • TCP協議全稱是傳輸控制協議是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。三次握手、四次揮手

    TCP:

  • 面向連接
  • 僅支持單播傳輸
  • 面向字節流
  • 可靠傳輸
  • 提供擁塞控制
  • TCP提供全雙工通信
  • 4. TCP/IP協議棧各個層次及分別的功能?

    網絡接口層:這是協議棧的最低層,對應OSI的物理層和數據鏈路層,主要完成數據幀的實際發送和接收。

    網絡層:處理分組在網絡中的活動,例如路由選擇和轉發等,這一層主要包括IP協議、ARP、ICMP協議等。

    傳輸層:主要功能是提供應用程序之間的通信,這一層主要是TCP/UDP協議。

    應用層:用來處理特定的應用,針對不同的應用提供了不同的協議,例如進行文件傳輸時用到的FTP協議,發送email用到的SMTP等。

    5. 寫出WWW的幾個方法

    • WWW.LoadFromCacheOrDownload:可被用于將Assets Bundles自動緩存到本地磁盤
    • WWW.Dispose :釋放現有的 WWW 對象。
    • WWW.isDone:是否完成下載?(只讀)
    • WWW.progress:下載進度(只讀)。

    6. Socket粘包

    什么是粘包?
    答:顧名思義,其實就是多個獨立的數據包連到一塊兒。

    什么情況下需要考慮粘包?
    答:實際情況如下:

  • 如果利用tcp每次發送數據,就與對方建立連接,然后雙方發送完一段數據后,就關閉連接,這樣就不會出現粘包問題。
  • 如果發送的數據無結構,比如文件傳輸,這樣發送方只管發送,接收方只管接收存儲就ok,也不用考慮粘包。
  • 如果雙方建立連接,需要在連接后一段時間內發送不同結構數據,如連接后,有好幾種結構:
    1)”good good study”
    2)”day day up”
    那這樣的話,如果發送方連續發送這個兩個包出去,接收方一次接收可能會是”good good studyday day up” 這樣接收方就傻了,因為協議沒有規定這么奇怪的字符串,所以要把它分包處理,至于怎么分也需要雙方組織一個比較好的包結構,所以一般可能會在頭加一個數據長度之類的包,以確保接收。
  • 所以說:Tcp連續發送消息的時候,會出現消息一起發送過來的問題,這時候需要考慮粘包的問題。

    粘包出現的原因 (在流傳輸中,UDP不會出現粘包,因為它有消息邊界。)

  • 發送端需要等緩沖區滿才發送出去,造成粘包 (發送端出現粘包)
  • 接收端沒有及時接收緩沖區包數據,造成一次性接收多個包,出現粘包 (接收端出現粘包)
  • 解決粘包

  • 緩沖區過大造成了粘包,所以在發送/接收消息時先將消息的長度作為消息的一部分發出去,這樣接收方就可以根據接收到的消息長度來動態定義緩沖區的大小。(這種方法就是所謂的自定義協議,這種方法是最常用的)
  • 對發送的數據進行處理,每條消息的首尾加上特殊字符,然后再把要發送的所有消息放入一個字符串中,最后將這個字符串發送出去,接收方接收到這個字符串之后,再通過特殊標記操作字符串,把每條消息截出來。(這種方法只適合數據量較小的情況)
  • 注:要記住這一點:TCP對上層來說是一個流協議,所謂流,就是沒有界限的一串數據.大家可以想想河里的流水,是連成一片的,其間是沒有分界線的,也就是沒有包的概念。所以我們必須自己定義包長或者分隔符來區分每一條消息。

    7. Socket的封包、拆包

  • 為什么基于TCP的通信程序需要封包、拆包?
    答:TCP是流協議,所謂流,就是沒有界限的一串數據。但是程序中卻有多種不同的數據包,那就很可能會出現如上所說的粘包問題,所以就需要在發送端封包,在接收端拆包。
  • 那么如何封包、拆包?
    答:封包就是給一段數據加上包頭或者包尾。比如說我們上面為解決粘包所使用的兩種方法,其實就是封包與拆包的具體實現。
  • 8. Socket 客戶端 隊列 的問題

    項目中采用了socket通信,通過TCP發送數據給服務器端,因為項目需要,要同時開啟大量的線程去發送不同的數據給服務器端,然后服務器端返回不同的數據。由于操作頻繁,經常會阻塞,或沒有接收到服務器端返回的數據;

    因此考慮到使用一個隊列:將同一ip下的數據存入一個隊列中,通過隊列協調發送;當第一條數據發送出去沒有收到服務器端返回的數據時,讓第二條數據插入隊列中排隊,當第三條數據也發送出來后,繼續排隊,以此類推;
    如果當第四條數據發出來的時候,存入隊列中,第一條數據收服務器端返回數據后,隊列中的第二條第三條數據就扔掉,直接發送第四條數據


    💖渲染 & Shader

    1. 什么是LightMap?

    LightMap:就是指在三維軟件?實現打好光,然后渲染把場景各表?的光照輸出到貼圖上,最后?通過引擎貼到場景上,這樣就使物體有了光照的感覺。

    2. MipMap是什么,作用?

    MipMapping:在三維計算機圖形的貼圖渲染中有常?的技術,為加快渲染進度和減少圖像鋸?,貼圖被處理成由?系列被預先計算和優化過的圖?組成的?件,這樣的貼圖被稱為MipMap。

    3. 請問alpha test在何時使用?能達到什么效果?

    Alpha Test,中文就是透明度測試。
    簡而言之就是V&F shader中最后fragment函數輸出的該點顏色值(即上一講frag的輸出half4)的alpha值與固定值進行比較。Alpha Test語句通常于Pass{}中的起始位置。Alpha Test產生的效果也很極端,要么完全透明,即看不到,要么完全不透明。

    4. 一個Terrain,分別貼3張,4張,5張地表貼圖,渲染速度有什么區別?為什么?

    沒有區別,因為不管幾張貼圖只渲染一次。

    5. 實時點光源的優缺點是什么?

    可以有cookies – 帶有 alpha通道的立方圖(Cubemap )紋理。點光源是最耗費資源的。

    6. 簡述水面倒影的渲染原理?

    原理就是對水面的貼圖紋理進行擾動,以產生波光玲玲的效果。用shader可以通過GPU在像素級別作擾動,效果細膩,需要的頂點少,速度快

    7. MeshRender中material和 sharedmaterial的區別?

    修改sharedMaterial將改變所有物體使用這個材質 的外觀,并且也改變儲存在工程里的材質設置。
    不推薦修改由sharedMaterial返回的材質。如果你 想修改渲染器的材質,使用material替代。

    8. 什么是渲染管道?

    是指在顯示器上為了顯示出圖像?經過的?系列必要 操作。 渲染管道中的很多步驟,都要將?何物體從?個坐標系中變換到另?個坐標系中去。

    主要步驟有: 本地坐標->視圖坐標->背?裁剪->光照->裁剪->投影-> 視圖變換->光柵化。

    GPU工作流程:頂點處理、光柵化、紋理貼圖、像素處理

    • 頂點處理:這階段GPU讀取描述3D圖形外觀的頂點數 據并根據頂點數據確定3D圖形的形狀及位置關系,建 ?起3D圖形的?架。
    • 光柵化:把?個??圖形轉換為 ?系列像素點的過程就稱為光柵化
    • 紋理貼圖:就是將多邊形的表?貼 上相應的圖?,從??成“真實”的圖形。
    • 像素處理:這階段(在對每個像素進?光柵化處理期 間)GPU完成對像素的計算和處理,從?確定每個像 素的最終屬性。
    • 最終輸出:由ROP(光柵化引擎)最終完成像素的輸 出,1幀渲染完畢后,被送到顯存幀緩沖區。

    總結:GPU的?作通俗的來說就是完成3D圖形的?成,將圖形映射到相應的像素點上,對每個像素進? 計算確定最終顏?并完成輸出。

    9. 如何在Unity3D中查看場景的面數,頂點數和DrawCall數?如何降低DrawCall數?

    在Game視圖右上?點擊Stats。降低Draw Call 的技術是Draw Call Batching

    10. 寫出光照計算中的diffuse的計算公式

    diffuse = Kd x colorLight x max(N*L,0);
    Kd 漫反射系數、colorLight 光的顏?、N 單位法線向量、L 由點指向光源的單位向量、其中N與L點乘,如果結果?于等于0,則漫反射為0。

    11. 兩種陰影判斷的方法、工作原理。

    本影和半影:

    本影:景物表?上那些沒有被光源直接照射的區域
    (全?的輪廓分明的區域)。

    半影:景物表?上那些被某些特定光源直接照射但并?被所有特定光源直接照射的區域(半明半暗區域)

    ?作原理:從光源處向物體的所有可??投射光線,將這些?投影到場景中得到投影?,再將這些投影?與場景中的其他平?求交得出陰影多邊形,保存這些陰影多邊形信息,然后再按視點位置對場景進?相應處理得到所要求的視圖(利?空間換時間,每次只需依據視點位置進??次陰影計算即可,省去了?次消隱過程)

    12. 有A和B兩組物體,有什么辦法能夠保證A組物體永遠比B組物體先渲染?

    把A組物體的渲染對列?于B物體的渲染隊列。

    13. Unity的Shader中,Blend SrcAlpha OneMinusSrcAlpha這句話是什么意思?

    作用就是Alpha混合。公式:最終顏色 = 源顏色源透明值 + 目標顏色(1 - 源透明值)

    14. Vertex Shader是什么,怎么計算?

    頂點著?器是?段執?在GPU上的程序,?來取代fixed pipeline中的transformation和lighting,Vertex Shader主要操作頂點。
    Vertex Shader對輸?頂點完成了從local space到homogeneous space(?次空間)的變換過程,homogeneous space即projection space的下?個space。
    在這其間共有world transformation, view transformation和projection transformation及lighting?個過程

    15. Unity3D Shader分哪?種,有什么區別?

    表?著?器 的抽象層次?較?,它可以輕松地以簡潔?式實現復雜著?。表?著?器可同時在前向渲染及延遲渲染模式下正常?作。

    頂點?段著?器可以?常靈活地實現需要的效果,但是需要編寫更多的代碼,并且很難與Unity的渲染管線完美集成。

    固定功能管線著?器可以作為前兩種著?器的備?選擇,當硬件?法運?那些酷炫Shader的時,還可以通過固定功能管線著?器來繪制出?些基本的內容。


    💘優化部分

    微信搜索:呆呆敲代碼的小Y 回復:白嫖 免費獲取很多的編程資料哦!

    更多優化知識學習文章:【Unity 優化篇】 | 優化專欄《導航帖》,全面學習Unity優化技巧,讓我們的Unity技術上升一個檔次

    1. 簡述?下對象池,你覺得在FPS里哪些東西適合使用對象池?

    對象池就存放需要被反復調?資源的?個空間,?如游戲中要常被大量復制的對象,?彈,敵?,以及任何重復出現的對象。

    2. 什么是DrawCall?DrawCall高了又什么影響?如何降低DrawCall?

    Unity中,每次引擎準備數據并通知GPU的過程稱為一次Draw Call。DrawCall越高對顯卡的消耗就越大。降低DrawCall的方法:

    • Dynamic Batching
    • Static Batching
    • 高級特性Shader降級為統一的低級特性的Shader。

    3. UI優化小知識

  • 將同一畫面圖片放到同一圖集中
  • 圖片和文字盡量不要交叉,會產生多余drawcall(相同材質和紋理的UI元素是可以合并的)
  • UI層級盡量不要重疊太多
  • 取消勾選不必要的射線檢測RaycastTarget
  • 將動態的UI元素和靜態的UI元素放在不同的Canvas中,減少canvas網格重構頻率
  • 4. LOD是什么,優缺點是什么?

    LOD(Level of detail)多層次細節,是最常用的游 戲優化技術。
    它按照模型的位置和重要程度決定 物體渲染的資源分配,降低非重要物體的面數和 細節度,從而獲得高效率的渲染運算。

    5. 什么叫動態合批?跟靜態合批有什么區別?

    如果動態物體共用著相同的材質,那么Unity會自動對 這些物體進行批處理。動態批處理操作是自動完成 的,并不需要你進行額外的操作。

    區別:動態批處理一切都是自動的,不需要做任何操 作,而且物體是可以移動的,但是限制很多。
    靜態批 處理:自由度很高,限制很少,缺點可能會占用更多 的內存,而且經過靜態批處理后的所有物體都不可以 再移動了。

    6. 如何優化內存?

    有很多種方式,例如

  • 壓縮自帶類庫;
  • 將暫時不用的以后還需要使用的物體隱藏起來而不 是直接Destroy掉;
  • 釋放AssetBundle占用的資源;
  • 降低模型的片面數,降低模型的?骼數量,降低貼 圖的大小;
  • 使用光照貼圖,使用多層次細節(LOD),使用著色 器(Shader),使用預設(Prefab)。
  • 7. 請簡述GC(垃圾回收)產生的原因,并描述如何避免?

    GC垃圾回收機制,避免堆內存溢出,定期回收那些沒有有效引用的對象內存
    GC優化,就是優化堆內存,減少堆內存,即時回收堆內存
    GC歸屬于CLR

    避免:

  • 減少new的次數
  • 字符串拼接使用stringbuilder,字符串比較先定義一個變量存儲,防止產生無效內存
  • list,new時候,規定內存大小
  • 如果要射線檢測,應該使用避免GC的方法XXXXNoAlloc函數
  • foreach迭代器容易導致GC(目前Unity5.5已修復),使用For循環
  • 使用靜態變量,GC不會回收存在的對象,但靜態變量的引用對象可能被回收
  • 使用枚舉替代字符串變量
  • 調用gameobject.tag=="XXX"就會產生內存垃圾;那么采用GameObject.CompareTag()可以避免內存垃圾的產生:
  • 不要在頻繁調用的函數中反復進行堆內存分配,比如OnTriggerXXX,Update等函數
  • 在Update函數中,運行有規律的但不需要每一幀執行的代碼,可以使用計時器,比如1秒執行一次某些代碼!!!
  • 更多GC內容可查看本篇文章:
    Unity零基礎到進階 ??| Unity中的 GC及優化 超級全面解析 ☆(ゝω・)v 建議收藏!

    8. 貼圖透明通道分離,壓縮格式設為ETC/PVRTC

    最初我們使用了DXT5作為貼圖壓縮格式,希望能減小貼圖的內存占用,但很快發現移動平臺的顯卡是不支持的。因此對于一張1024x1024大小的RGBA32貼圖,雖然DXT5可將它從4MB壓縮到1MB,但系統將它送進顯卡之前,會先用CPU在內存里將它解壓成4MB的RGBA32格式(軟件解壓),然后再將這4MB送進顯存。于是在這段時間里,這張貼圖就占用了5MB內存和4MB顯存;而移動平臺往往沒有獨立顯存,需要從內存里摳一塊作為顯存,于是原以為只占1MB內存的貼圖實際卻占了9MB!

    所有不支持硬件解壓的壓縮格式都有這個問題。經過一番調研,我們發現安卓上硬件支持最廣泛的格式是ETC,蘋果上則是PVRTC。但這兩種格式都是不帶透明(Alpha)通道的。因此我們將每張原始貼圖的透明通道都分離了出來,寫進另一張貼圖的紅色通道里。這兩張貼圖都采用ETC/PVRTC壓縮。渲染的時候,將兩張貼圖都送進顯存。同時我們修改了NGUI的shader,在渲染時將第二張貼圖的紅色通道寫到第一張貼圖的透明通道里,恢復原來的顏色:

    fixed4 frag (v2f i) : COLOR fixed4 col; col.rgb = tex2D(_MainTex, i.texcoord).rgb; col.a = tex2D(_AlphaTex, i.texcoord).r; return col * i.color; fixed4 frag (v2f i) : COLOR{fixed4 col;col.rgb = tex2D(_MainTex, i.texcoord).rgb;col.a = tex2D(_AlphaTex, i.texcoord).r;return col * i.color;}

    9. 關閉貼圖的讀寫選項

    Unity中導入的每張貼圖都有一個啟用可讀可寫(Read/Write Enabled)的開關,對應的程序參數是TextureImporter.isReadable。
    選中貼圖后可在Import Setting選項卡中看到這個開關。只有打開這個開關,才可以對貼圖使用Texture2D.GetPixel,讀取或改寫貼圖資源的像素,但這就需要系統在內存里保留一份貼圖的拷貝,以供CPU訪問。
    一般游戲運行時不會有這樣的需求,因此我們對所有貼圖都關閉了這個開關,只在編輯中做貼圖導入后處理(比如對原始貼圖分離透明通道)時打開它。
    這樣,上文提到的1024x1024大小的貼圖,其運行時的2MB內存占用又可以少一半,減小到1MB。

    10. Unity 在移動設備上的?些優化資源的方法

  • 使?assetbundle,實現資源分離和共享,將內存控
    制到200m之內,同時也可以實現資源的在線更新
  • 頂點數對渲染?論是cpu還是gpu都是壓?最?的貢
    獻者,降低頂點數到8萬以下,fps穩定到了30幀左右
  • 只使??盞動態光,不是?陰影,不使?光照探頭
    粒?系統是cpu上的?頭
  • 剪裁粒?系統
  • 合并同時出現的粒?系統
  • ??實現輕量級的粒?系統
    animator也是?個效率奇差的地?
  • 把不需要跟?骼動畫和動作過渡的地?全部使?
    animation,控制?骼數?在30根以下
  • animator出視?不更新
  • 刪除?意義的animator
  • animator的初始化很耗時(粒?上能不能盡?不?
    animator)
  • 除主?外都不要跟?骼運動apply root motion
  • 絕對禁?掉那些不帶剛體帶包圍盒的物體(static
    collider )運動
    NUGI的代碼效率很差,基本上runtime的時候對cpu的
    貢獻和render不相上下
  • 每幀遞歸的計算finalalpha改為只有初始化和變動時
    計算
  • 去掉法線計算
  • 不要每幀計算viewsize 和windowsize
  • filldrawcall時構建頂點緩存使?array.copy
  • 代碼剪裁:使?strip level ,使?.net2.0 subset
  • 盡量減少smooth group
  • 給美術定?個嚴格的經過科學驗證的美術標準,并在U3D??配以相應的檢查?具
  • 11. CPU端性能優化小知識點

    • 邏輯和表現盡可能分離開,這樣邏輯層的更新頻率可以適當降低些.
    • 對于一些熱點函數,如mmo的實體更新、實例化,使用分幀處理,分攤單幀時間消耗.
    • 做好同屏實體數量、特效數量、距離顯隱等優化.
    • 完善日志輸出,避免沒必要的日志輸出,同時警惕日志字符串拼接.
    • 使用骨骼烘焙 + GPUSkinning + Instance 降低CPU蒙皮骨骼消耗和drawcall.
    • 開啟模型的Optimize GameObjects減少節點數量和蒙皮更新消耗.
    • UI拼預制做好動靜分離,對于像血條名字這種頻繁變動的ui,做好適當的分組.
    • 減少C#和lua的頻繁交互,盡量精簡兩者傳遞的參數結構.
    • 使用stringbuilder優化字符串拼接的gc問題.
    • 刪除非必要的腳本功能函數,特別是Update/LateUpdate類高頻執行函數,因為會產生C++到C#層的調用開銷. 對于Update里需要用到的組件、節點等提前Cache好.
    • 場景里頻繁使用的資源或數據結構做好資源復用和對象池.
    • 對于頻繁顯示隱藏的UI,可以先移出到屏幕外,如果長時間不顯示再進行Deactive.
    • 合理拆分UI圖集,區分共用圖集和非共用圖集,共用圖集可以常駐內存,非共用圖集優先按功能分類,避免資源冗余.
      使用IL2CPP, 編譯成C++版本能極大的提升整體性能.
    • 避免直接使用Material.Setxxx/Getxxx 等調用,這些調用會觸發材質實例化消耗,可以考慮使用 SharedMaterial / MaterialPropertyBlock代替.
    • 合并Shader里的Uniform變量.

    12. GPU端性能優化小知識點

    • 合理規劃好渲染順序,避免不必要的overdraw,如:地形(容易被其他物件遮擋)、天空盒放到較后渲染.
    • 分辨率縮放,對于填充率出現瓶頸時,這個是最簡單高效的.
    • 避免使用GrabPass抓屏,不是所有硬件都支持,加之數據回拷和沒法控制分辨率性能很差,可考慮使用CommandBuffer.blit去優化.
    • 控制好地形的Blend層數,控制在4層以內,考慮到地形一般屏占面積大、貼圖采樣次數多,對于中低畫質考慮不用normalmap.
    • 做好物件、樹、角色的LOD.
    • 避免使用RenderWithShader類方式來定制DepthTexture,可以考慮Camera的 public void SetTargetBuffers(RenderBuffer colorBuffer, RenderBuffer depthBuffer);進行優化.
    • 檢查Shader的VertexInput 和 VertexOutput是否存在冗余數據.如:頂點色、多套UV.
    • 警惕項目里非必要的雙面材質,對于需要局部雙面的地方通過加面解決.
    • Shader里使用fixed、half代替float,理論上除position、uv、一些涉及depth相關計算使用float外,其他都應該使用fixed(主要是顏色值)、half.
    • 對于角色皮膚這種不是特別明顯的效果,考慮使用預積分這種低成本的方案.
    • 對于frag里的計算過程,如果可以抽出來放到CPU應用層、頂點階段的優先放這里計算. 需要注意放到頂點階段引起的平滑過渡問題. 如: eyeVec導致高光過渡問題.
    • 鏡面反射類效果避免使用反射相機+RT的實現,考慮使用SSR、CubeMap類實現.
    • 避免使用實時陰影,如若使用要合理控制下分辨率和陰影距離. 考慮使用Projector.
    • 使用統一的后處理框架代替多個Image Effect,可以共用模糊函數,減少blit操作. 另外Unity自帶的Postprocessing V2 支持Volume,性能還是不錯的.
    • Shader里避免使用分支、循環,sin、tan、pow、log等復雜數學運算.
    • Unity自帶的遮擋剔除因為CPU消耗和內存占用較高,加之不能Instancing,不太適合移動平臺,可以考慮靜態預計算(缺點是不支持動態物體)、Hi-Z等優化方案.
    • 減少alpha test材質的使用,如若使用注意減小面積、控制渲染順序.

    13. 內存優化小知識點

    • 警惕配置表的內存占用.
    • 檢查ShaderLab內存占用:
    • 避免使用Standard材質,做好相應的variant skip.
    • 排查項目冗余的Shader.
    • 使用shader_feature替代multi_compile,這樣只會收集項目里真正使用的變體組合,避免變體翻倍.
    • 檢查紋理資源的尺寸、格式、壓縮方式、mipmap、Read & Write選項使用是否合理.
    • 檢查Mesh資源的Read & Write選項、頂點屬性使用是否合理.
      代碼級別的檢查,如Cache預分配空間、容器的Capacity、GC等.
    • 使用Profiler定位下GC,特別是Update類函數里的. 如:字符串拼接、濫用容器等.
    • 合理控制RenderTexture的尺寸.
      優化動畫Animation的壓縮方式、浮點精度、去除里面的Scale曲線數據.
    • 減少場景GameObject節點的數量,最好支持工具監控.

    💞算法

    1. 請寫出求斐波那契數列任意一位的值得算法

    static int Fn(int n) { if (n <= 0) { throw new ArgumentOutOfRangeException(); } if (n == 1||n==2) { return 1; } return checked(Fn(n - 1) + Fn(n - 2)); // when n>46 memory will overflow }

    2. 下列代碼在運行中會產生幾個臨時對象?

    string a = new string("abc"); a = (a.ToUpper() +"123").Substring(0,2);

    實在C#中第??是會出錯的(Java中倒是可?)。
    應該這樣初始化:

    string b = new string(new char[] {'a','b','c'});

    三個臨時對象:abc、ABC、AB

    3. 冒泡排序(手寫代碼)

    public static void BubblingSort(int[]array) {for (int i = 0; i < array.Length; i++){for (int j = array.Length - 1; j > 0; j--){if (array[j] < array[i]) {int temp = array[j];array[j] = array[j-1];array[j - 1] = temp;}}}}


    👥總結

    • 2022年全網最全的Unity面試題都在這里了,希望本篇文章能夠讓你在面試關卡如魚得水得到自己想要的工作。
    • 有幾個模塊內的內容有重復的,因為考慮到某個問題會涉及不同的模塊就多寫了一遍,就當作知識強化了。
    • 看完覺得有用別忘了點贊收藏哦,如果覺得哪個方面的內容不夠豐富歡迎在評論區指出!
    • 如果你的Unity基礎知識還不夠熟練,也歡迎來 『Unity精品學習專欄??』 繼續學習哦!
    • 如果你還有更好的面試題,歡迎在評論區提出,我整理到文章中去哦!!!

    專欄推廣

    • 🎬 博客主頁:https://xiaoy.blog.csdn.net

    • 🎥 本文由 呆呆敲代碼的小Y 原創,首發于 CSDN🙉

    • 🎄 學習專欄推薦:👑Unity系統學習專欄👑

    • 🌲 游戲制作專欄推薦:👑游戲制作👑

    • 🏅 歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!

    • 📆 未來很長,值得我們全力奔赴更美好的生活?

    • ------------------??分割線??-------------------------

    Unity專欄簡介
    以Unity引擎為基礎,介紹關于Unity的各種文章學習,共同進步!Unity是一款跨平臺的專業游戲引擎,用它創建的游戲可以在PC端、移動設備等常見平臺上運行。

    資料白嫖,技術互助

    學習路線指引(點擊解鎖)知識定位人群定位
    🧡 Unity系統學習專欄 🧡入門級本專欄從Unity入門開始學習,快速達到Unity的入門水平
    💛 Unity實戰類項目 💛進階級計劃制作Unity的 100個實戰案例!助你進入Unity世界,爭取做最全的Unity原創博客大全。
    ?? 游戲制作專欄 ?? 難度偏高分享學習一些Unity成品的游戲Demo和其他語言的小游戲!
    💚 游戲愛好者九萬人社區💚 互助/吹水九萬人游戲愛好者社區,聊天互助,白嫖獎品
    💙 Python零基礎到入門 💙 Python初學者針對沒有經過系統學習的小伙伴,核心目的就是讓我們能夠快速學習Python的知識以達到入門

    溫馨提示: 點擊下面卡片可以獲取更多編程知識,包括各種語言學習資料,上千套PPT模板和各種游戲源碼素材等等資料。更多內容可自行查看哦!

    總結

    以上是生活随笔為你收集整理的2022年Unity 面试题 |五萬字 二佰道| Unity面试题大全,面试题总结【全网最全,收藏一篇足够面试】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    3d动漫精品啪啪一区二区中 | 无码国产乱人伦偷精品视频 | 初尝人妻少妇中文字幕 | 国内精品久久毛片一区二区 | 亚洲小说图区综合在线 | 国产两女互慰高潮视频在线观看 | 久久久久99精品成人片 | 欧美 日韩 人妻 高清 中文 | 麻豆国产人妻欲求不满谁演的 | 欧美激情一区二区三区成人 | 成人无码精品一区二区三区 | 激情内射日本一区二区三区 | 国产免费久久久久久无码 | 久久久久亚洲精品男人的天堂 | 高潮毛片无遮挡高清免费 | 中国大陆精品视频xxxx | 国产乱人偷精品人妻a片 | 人妻有码中文字幕在线 | 久久97精品久久久久久久不卡 | 好爽又高潮了毛片免费下载 | 亚洲成在人网站无码天堂 | 国内揄拍国内精品少妇国语 | 九一九色国产 | 国产美女极度色诱视频www | 人人妻人人澡人人爽人人精品浪潮 | 日韩欧美中文字幕在线三区 | 麻豆果冻传媒2021精品传媒一区下载 | 国内揄拍国内精品少妇国语 | 亚洲日韩中文字幕在线播放 | www一区二区www免费 | 最新国产麻豆aⅴ精品无码 | av人摸人人人澡人人超碰下载 | 国产激情精品一区二区三区 | 18精品久久久无码午夜福利 | 人人澡人人妻人人爽人人蜜桃 | 少妇被粗大的猛进出69影院 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 亚洲精品一区二区三区在线 | 蜜桃av抽搐高潮一区二区 | 波多野结衣乳巨码无在线观看 | 国产精品二区一区二区aⅴ污介绍 | 久久成人a毛片免费观看网站 | 亚洲乱码日产精品bd | 亚洲国产精品一区二区美利坚 | 人人妻人人澡人人爽精品欧美 | 人妻插b视频一区二区三区 | 精品国产成人一区二区三区 | 少妇的肉体aa片免费 | 国产亚洲精品久久久久久 | 亚洲乱亚洲乱妇50p | 四十如虎的丰满熟妇啪啪 | 国产精品-区区久久久狼 | 亚洲精品一区二区三区在线 | 国产激情无码一区二区 | 色综合久久久无码网中文 | 日本乱偷人妻中文字幕 | 秋霞成人午夜鲁丝一区二区三区 | 伊人久久大香线焦av综合影院 | 狂野欧美激情性xxxx | 欧美性猛交内射兽交老熟妇 | 天天摸天天透天天添 | 精品国产一区二区三区四区在线看 | 久久亚洲中文字幕无码 | 国产av久久久久精东av | 欧洲熟妇精品视频 | 综合人妻久久一区二区精品 | 国产莉萝无码av在线播放 | а天堂中文在线官网 | 欧美成人家庭影院 | 伊人久久大香线蕉亚洲 | 性欧美牲交xxxxx视频 | 中文毛片无遮挡高清免费 | 任你躁国产自任一区二区三区 | 永久免费观看国产裸体美女 | 男人的天堂2018无码 | a在线亚洲男人的天堂 | 久久99精品国产麻豆 | 国产成人无码av片在线观看不卡 | 久久综合色之久久综合 | 亚洲中文字幕无码一久久区 | 无码一区二区三区在线观看 | 亚洲精品国产品国语在线观看 | 色综合久久久无码中文字幕 | 国内揄拍国内精品少妇国语 | 日本精品久久久久中文字幕 | 九九久久精品国产免费看小说 | 久久久中文字幕日本无吗 | 国产精品欧美成人 | 鲁大师影院在线观看 | 全黄性性激高免费视频 | 国产人妻人伦精品1国产丝袜 | 精品国产乱码久久久久乱码 | 日本护士毛茸茸高潮 | 波多野结衣av在线观看 | 亚洲а∨天堂久久精品2021 | 国产欧美熟妇另类久久久 | 亚洲男女内射在线播放 | 精品偷拍一区二区三区在线看 | 日本爽爽爽爽爽爽在线观看免 | 亚洲一区二区三区无码久久 | 狠狠cao日日穞夜夜穞av | 少妇高潮一区二区三区99 | 18无码粉嫩小泬无套在线观看 | 久9re热视频这里只有精品 | 欧美人与禽zoz0性伦交 | 青青草原综合久久大伊人精品 | 亚洲性无码av中文字幕 | 国产午夜手机精彩视频 | 久久精品国产精品国产精品污 | 无码一区二区三区在线 | 熟妇人妻中文av无码 | 国产肉丝袜在线观看 | 中文字幕日韩精品一区二区三区 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲成在人网站无码天堂 | 亚洲熟妇色xxxxx亚洲 | 3d动漫精品啪啪一区二区中 | 精品国产一区二区三区av 性色 | 色狠狠av一区二区三区 | 国产av一区二区精品久久凹凸 | 欧洲精品码一区二区三区免费看 | 午夜福利一区二区三区在线观看 | 亚洲成a人片在线观看日本 | 欧美35页视频在线观看 | 欧美一区二区三区视频在线观看 | 国产精品久久精品三级 | 成人精品天堂一区二区三区 | 西西人体www44rt大胆高清 | 麻豆国产丝袜白领秘书在线观看 | av无码不卡在线观看免费 | 鲁鲁鲁爽爽爽在线视频观看 | 欧美精品无码一区二区三区 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 国产精品-区区久久久狼 | 丰满少妇熟乱xxxxx视频 | 夜精品a片一区二区三区无码白浆 | 一本大道久久东京热无码av | 97夜夜澡人人双人人人喊 | 国产成人精品必看 | 夜夜影院未满十八勿进 | 亚洲一区二区三区四区 | 亚洲人成网站在线播放942 | 少妇人妻av毛片在线看 | 高潮毛片无遮挡高清免费 | 久久国语露脸国产精品电影 | a在线亚洲男人的天堂 | 鲁鲁鲁爽爽爽在线视频观看 | 67194成是人免费无码 | 老司机亚洲精品影院 | 啦啦啦www在线观看免费视频 | 天堂а√在线地址中文在线 | 欧美丰满熟妇xxxx | 一本大道久久东京热无码av | 夜先锋av资源网站 | 久久这里只有精品视频9 | yw尤物av无码国产在线观看 | 国产精品毛片一区二区 | 国产极品美女高潮无套在线观看 | 久9re热视频这里只有精品 | 亚洲啪av永久无码精品放毛片 | 成人欧美一区二区三区黑人免费 | 国产人妻精品一区二区三区不卡 | 丰腴饱满的极品熟妇 | 国产在线一区二区三区四区五区 | 俄罗斯老熟妇色xxxx | 一本久道高清无码视频 | 国产精品视频免费播放 | 亚洲中文字幕久久无码 | 蜜桃视频韩日免费播放 | 捆绑白丝粉色jk震动捧喷白浆 | 欧美怡红院免费全部视频 | 人人澡人人妻人人爽人人蜜桃 | 国产精品久久久久无码av色戒 | 一本久道高清无码视频 | 国内揄拍国内精品人妻 | 国产成人无码a区在线观看视频app | 国产成人无码专区 | 欧美亚洲日韩国产人成在线播放 | 天天爽夜夜爽夜夜爽 | 国产成人久久精品流白浆 | 国产后入清纯学生妹 | 中文字幕无码免费久久99 | 麻豆国产人妻欲求不满 | 国产办公室秘书无码精品99 | 国产精品.xx视频.xxtv | 亚洲va欧美va天堂v国产综合 | 久久伊人色av天堂九九小黄鸭 | 波多野42部无码喷潮在线 | 精品久久久久久人妻无码中文字幕 | 天天摸天天碰天天添 | 国产情侣作爱视频免费观看 | 性欧美videos高清精品 | 亚洲另类伦春色综合小说 | 亚洲综合色区中文字幕 | 亚洲精品一区二区三区在线 | 亚洲欧洲日本综合aⅴ在线 | 成人欧美一区二区三区黑人免费 | 性色欲网站人妻丰满中文久久不卡 | 丰满少妇高潮惨叫视频 | 呦交小u女精品视频 | 人人妻人人澡人人爽精品欧美 | 无码人妻丰满熟妇区毛片18 | 亚洲精品综合五月久久小说 | 一区二区传媒有限公司 | 无码乱肉视频免费大全合集 | 国产精品第一国产精品 | 亚洲精品久久久久久久久久久 | 久久99热只有频精品8 | 夜精品a片一区二区三区无码白浆 | 性啪啪chinese东北女人 | 中文字幕+乱码+中文字幕一区 | 男人扒开女人内裤强吻桶进去 | 精品无码成人片一区二区98 | 亚洲精品一区二区三区四区五区 | 少妇邻居内射在线 | 全黄性性激高免费视频 | 国产两女互慰高潮视频在线观看 | 色情久久久av熟女人妻网站 | 日本精品久久久久中文字幕 | 麻花豆传媒剧国产免费mv在线 | 麻豆国产丝袜白领秘书在线观看 | 欧美zoozzooz性欧美 | 一个人免费观看的www视频 | 曰本女人与公拘交酡免费视频 | 日韩精品无码一本二本三本色 | 亚洲の无码国产の无码步美 | 欧美变态另类xxxx | 亚洲日韩av一区二区三区中文 | 乱人伦人妻中文字幕无码久久网 | 日韩人妻系列无码专区 | 国产精品久久久午夜夜伦鲁鲁 | 久久精品人妻少妇一区二区三区 | 久久zyz资源站无码中文动漫 | 午夜嘿嘿嘿影院 | 精品一区二区不卡无码av | 久久久久se色偷偷亚洲精品av | 久久久精品国产sm最大网站 | 亚洲精品国产精品乱码不卡 | 亚洲人亚洲人成电影网站色 | 97夜夜澡人人双人人人喊 | 一本精品99久久精品77 | 性做久久久久久久免费看 | 性欧美牲交在线视频 | 久久久久人妻一区精品色欧美 | 丁香花在线影院观看在线播放 | 天天摸天天透天天添 | 色五月丁香五月综合五月 | 精品无码av一区二区三区 | 久久久亚洲欧洲日产国码αv | 亚洲色在线无码国产精品不卡 | 无码国产激情在线观看 | 久久午夜无码鲁丝片午夜精品 | 日日躁夜夜躁狠狠躁 | 亚洲乱码中文字幕在线 | 成人免费视频视频在线观看 免费 | 成人亚洲精品久久久久软件 | 欧美xxxx黑人又粗又长 | 亚洲aⅴ无码成人网站国产app | 欧美xxxxx精品 | 亚无码乱人伦一区二区 | 熟妇女人妻丰满少妇中文字幕 | 久久午夜无码鲁丝片 | 欧美成人免费全部网站 | 国产av一区二区三区最新精品 | 欧美性猛交内射兽交老熟妇 | 久久aⅴ免费观看 | 日产国产精品亚洲系列 | 99久久精品无码一区二区毛片 | 亚洲乱码中文字幕在线 | 婷婷丁香六月激情综合啪 | 无码人妻av免费一区二区三区 | 日本成熟视频免费视频 | 亚洲精品国产精品乱码不卡 | 久激情内射婷内射蜜桃人妖 | 国产成人无码一二三区视频 | 激情爆乳一区二区三区 | 国产热a欧美热a在线视频 | 一本无码人妻在中文字幕免费 | 久久无码人妻影院 | 亚洲国产av美女网站 | 欧美性猛交内射兽交老熟妇 | 亚洲精品午夜无码电影网 | 亚洲阿v天堂在线 | 成人一区二区免费视频 | 国产精品高潮呻吟av久久 | 成人av无码一区二区三区 | 野外少妇愉情中文字幕 | 中文字幕无码日韩专区 | 好爽又高潮了毛片免费下载 | 奇米影视888欧美在线观看 | 激情内射日本一区二区三区 | 天天爽夜夜爽夜夜爽 | 四虎国产精品免费久久 | 欧美日本精品一区二区三区 | 亚洲一区二区三区四区 | 精品国产福利一区二区 | 国产成人精品一区二区在线小狼 | 无码国产激情在线观看 | 永久黄网站色视频免费直播 | 精品欧美一区二区三区久久久 | 亚洲 高清 成人 动漫 | 国语精品一区二区三区 | 欧美xxxx黑人又粗又长 | 最近免费中文字幕中文高清百度 | 日韩少妇白浆无码系列 | 国产真实伦对白全集 | 欧美黑人乱大交 | 国产精品99爱免费视频 | 亚洲精品国产品国语在线观看 | 国产三级精品三级男人的天堂 | 婷婷丁香五月天综合东京热 | 日本精品少妇一区二区三区 | 曰韩少妇内射免费播放 | 国产在线精品一区二区高清不卡 | 成人亚洲精品久久久久软件 | 鲁一鲁av2019在线 | 无码吃奶揉捏奶头高潮视频 | 久久精品视频在线看15 | 国产suv精品一区二区五 | 97久久超碰中文字幕 | 欧美性黑人极品hd | 熟妇女人妻丰满少妇中文字幕 | 乱码av麻豆丝袜熟女系列 | 国产精品沙发午睡系列 | 国产精品内射视频免费 | 日本又色又爽又黄的a片18禁 | 亚洲 另类 在线 欧美 制服 | 国产亚洲精品久久久久久久久动漫 | 日本一本二本三区免费 | 精品久久久久久亚洲精品 | 天天综合网天天综合色 | 亚洲va欧美va天堂v国产综合 | 老子影院午夜伦不卡 | 少妇无码av无码专区在线观看 | 澳门永久av免费网站 | 中文字幕无码免费久久9一区9 | 国产免费久久久久久无码 | 国产激情综合五月久久 | 久久久中文久久久无码 | 国产精品亚洲综合色区韩国 | 精品久久综合1区2区3区激情 | 在线播放无码字幕亚洲 | 俄罗斯老熟妇色xxxx | 亚洲色欲久久久综合网东京热 | 色欲综合久久中文字幕网 | 性做久久久久久久久 | av人摸人人人澡人人超碰下载 | 无码人妻少妇伦在线电影 | 色老头在线一区二区三区 | 国产精品久久久一区二区三区 | 成人亚洲精品久久久久软件 | 丰满人妻精品国产99aⅴ | 欧美人与动性行为视频 | 十八禁视频网站在线观看 | 国产激情无码一区二区app | 撕开奶罩揉吮奶头视频 | 美女毛片一区二区三区四区 | 免费视频欧美无人区码 | 亚洲日本一区二区三区在线 | 久久精品国产大片免费观看 | 亚洲小说春色综合另类 | 高潮毛片无遮挡高清免费 | 精品无码成人片一区二区98 | 国产无套内射久久久国产 | 国产特级毛片aaaaaa高潮流水 | 午夜精品久久久久久久久 | 无码国模国产在线观看 | 亚洲国产精品一区二区第一页 | 天堂а√在线地址中文在线 | 亚洲国产精品久久人人爱 | 丝袜美腿亚洲一区二区 | 人人超人人超碰超国产 | 激情人妻另类人妻伦 | 影音先锋中文字幕无码 | 女人被男人躁得好爽免费视频 | 少妇无码av无码专区在线观看 | 综合激情五月综合激情五月激情1 | 国产精品igao视频网 | 55夜色66夜色国产精品视频 | 免费男性肉肉影院 | 日本免费一区二区三区最新 | 大肉大捧一进一出好爽视频 | 国产一区二区三区日韩精品 | 性欧美熟妇videofreesex | 蜜桃视频插满18在线观看 | 午夜免费福利小电影 | 无套内射视频囯产 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲国产精品一区二区第一页 | 国产97色在线 | 免 | 男女下面进入的视频免费午夜 | 全球成人中文在线 | 亚洲日本va午夜在线电影 | 国产内射爽爽大片视频社区在线 | 麻豆成人精品国产免费 | 天下第一社区视频www日本 | 日本护士xxxxhd少妇 | 玩弄中年熟妇正在播放 | 久久久久久国产精品无码下载 | 久久亚洲a片com人成 | 色综合久久久久综合一本到桃花网 | 日本精品人妻无码免费大全 | 亚洲国产精品毛片av不卡在线 | 精品厕所偷拍各类美女tp嘘嘘 | 又大又硬又黄的免费视频 | 无码人妻出轨黑人中文字幕 | 亚无码乱人伦一区二区 | 欧美大屁股xxxxhd黑色 | 久久97精品久久久久久久不卡 | 中文毛片无遮挡高清免费 | 国产又爽又黄又刺激的视频 | 99久久精品无码一区二区毛片 | 国产在线精品一区二区高清不卡 | 少妇人妻偷人精品无码视频 | 亚洲a无码综合a国产av中文 | 国产三级精品三级男人的天堂 | 亚洲高清偷拍一区二区三区 | 97精品人妻一区二区三区香蕉 | 国产亚洲人成在线播放 | 四虎永久在线精品免费网址 | 国产精品久久久 | 5858s亚洲色大成网站www | 无码人妻少妇伦在线电影 | 免费人成网站视频在线观看 | 色婷婷综合激情综在线播放 | 欧洲熟妇精品视频 | 国产精品无码一区二区桃花视频 | 久久久久久a亚洲欧洲av冫 | 狠狠色欧美亚洲狠狠色www | 无码午夜成人1000部免费视频 | 亚洲爆乳精品无码一区二区三区 | 国产xxx69麻豆国语对白 | 久久亚洲国产成人精品性色 | 少妇太爽了在线观看 | 精品国精品国产自在久国产87 | 美女黄网站人色视频免费国产 | 夜夜躁日日躁狠狠久久av | 亚洲国产精品毛片av不卡在线 | 成在人线av无码免费 | 日本饥渴人妻欲求不满 | 欧美丰满老熟妇xxxxx性 | 国产农村乱对白刺激视频 | 人人妻人人澡人人爽欧美一区九九 | 学生妹亚洲一区二区 | 人妻互换免费中文字幕 | 亚洲经典千人经典日产 | 精品无码国产自产拍在线观看蜜 | 中文字幕av无码一区二区三区电影 | 国产精品亚洲五月天高清 | 精品成在人线av无码免费看 | 兔费看少妇性l交大片免费 | 人人爽人人爽人人片av亚洲 | 老太婆性杂交欧美肥老太 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 亚洲精品一区二区三区在线观看 | 国产99久久精品一区二区 | 人人妻人人澡人人爽欧美精品 | 娇妻被黑人粗大高潮白浆 | 亚洲一区二区三区国产精华液 | 亚洲国产欧美日韩精品一区二区三区 | 久久精品女人的天堂av | 亚洲一区二区三区在线观看网站 | 日本饥渴人妻欲求不满 | 亚洲日韩中文字幕在线播放 | 国产三级精品三级男人的天堂 | 人人妻人人澡人人爽欧美精品 | 人人妻人人藻人人爽欧美一区 | 国产偷自视频区视频 | 小鲜肉自慰网站xnxx | 亚洲日韩av一区二区三区四区 | 日本精品久久久久中文字幕 | 中文字幕乱码中文乱码51精品 | 亚洲欧洲中文日韩av乱码 | 麻豆国产人妻欲求不满谁演的 | 亚洲综合在线一区二区三区 | 狠狠综合久久久久综合网 | 国语精品一区二区三区 | 国产精品99久久精品爆乳 | 激情人妻另类人妻伦 | 国产激情综合五月久久 | 欧美喷潮久久久xxxxx | 老熟妇仑乱视频一区二区 | 国产极品美女高潮无套在线观看 | 人妻少妇被猛烈进入中文字幕 | 色欲人妻aaaaaaa无码 | 夫妻免费无码v看片 | 久久午夜无码鲁丝片午夜精品 | 伦伦影院午夜理论片 | 欧洲美熟女乱又伦 | 无码人妻精品一区二区三区不卡 | 98国产精品综合一区二区三区 | 亚洲精品成人福利网站 | 伊人久久婷婷五月综合97色 | 曰本女人与公拘交酡免费视频 | 日本又色又爽又黄的a片18禁 | 久久精品女人的天堂av | 国产亚av手机在线观看 | 国产精品美女久久久网av | 日本xxxx色视频在线观看免费 | 丰满少妇弄高潮了www | 国产麻豆精品一区二区三区v视界 | 樱花草在线播放免费中文 | 欧美黑人巨大xxxxx | 国产精品对白交换视频 | 无码av免费一区二区三区试看 | 国产明星裸体无码xxxx视频 | 国产人妻人伦精品1国产丝袜 | 内射爽无广熟女亚洲 | 领导边摸边吃奶边做爽在线观看 | 狠狠躁日日躁夜夜躁2020 | 亚洲爆乳大丰满无码专区 | 一本大道久久东京热无码av | 久久亚洲中文字幕精品一区 | 两性色午夜免费视频 | 波多野结衣av一区二区全免费观看 | 国产农村妇女高潮大叫 | 久久亚洲国产成人精品性色 | www国产亚洲精品久久网站 | 日本大乳高潮视频在线观看 | 国产又粗又硬又大爽黄老大爷视 | 亚洲另类伦春色综合小说 | 一本色道婷婷久久欧美 | 欧美变态另类xxxx | 天天综合网天天综合色 | 亚洲va中文字幕无码久久不卡 | 俺去俺来也在线www色官网 | 玩弄人妻少妇500系列视频 | 国产精品久久久午夜夜伦鲁鲁 | 中文精品久久久久人妻不卡 | 女高中生第一次破苞av | 狂野欧美性猛交免费视频 | 强伦人妻一区二区三区视频18 | 色一情一乱一伦 | 亚洲日韩乱码中文无码蜜桃臀网站 | 高潮毛片无遮挡高清免费 | 两性色午夜免费视频 | 国产三级精品三级男人的天堂 | 人妻熟女一区 | 亚洲色欲久久久综合网东京热 | 清纯唯美经典一区二区 | 人妻aⅴ无码一区二区三区 | 无码国内精品人妻少妇 | 久久久久av无码免费网 | 99精品视频在线观看免费 | 欧美freesex黑人又粗又大 | 国产内射老熟女aaaa | а√天堂www在线天堂小说 | 99久久精品午夜一区二区 | 乱人伦人妻中文字幕无码久久网 | 久久国内精品自在自线 | 精品成在人线av无码免费看 | 99riav国产精品视频 | 成人无码影片精品久久久 | 欧美成人高清在线播放 | 女人高潮内射99精品 | 又黄又爽又色的视频 | 999久久久国产精品消防器材 | 国产午夜手机精彩视频 | 色一情一乱一伦一区二区三欧美 | 欧美老人巨大xxxx做受 | 熟女少妇人妻中文字幕 | 午夜精品久久久久久久久 | 伊人久久大香线蕉av一区二区 | 欧美丰满熟妇xxxx | 成人无码视频在线观看网站 | 国产亚洲精品久久久久久久久动漫 | 无码国产色欲xxxxx视频 | 色五月丁香五月综合五月 | 久久久久久久久888 | 国产偷国产偷精品高清尤物 | 日韩人妻无码一区二区三区久久99 | 青草青草久热国产精品 | 熟女俱乐部五十路六十路av | 2019午夜福利不卡片在线 | 亚洲熟妇色xxxxx欧美老妇y | 在线播放无码字幕亚洲 | 99精品无人区乱码1区2区3区 | 国产麻豆精品精东影业av网站 | 午夜精品一区二区三区的区别 | 国产午夜视频在线观看 | 蜜桃无码一区二区三区 | 欧美高清在线精品一区 | 中文字幕 人妻熟女 | 狂野欧美性猛交免费视频 | av无码不卡在线观看免费 | 国产超级va在线观看视频 | 久久久精品456亚洲影院 | 欧美成人免费全部网站 | 黑人大群体交免费视频 | 无码午夜成人1000部免费视频 | 久久亚洲精品成人无码 | 久久人妻内射无码一区三区 | 麻豆成人精品国产免费 | 骚片av蜜桃精品一区 | 蜜臀aⅴ国产精品久久久国产老师 | 精品少妇爆乳无码av无码专区 | 女高中生第一次破苞av | 国产午夜福利亚洲第一 | 国产免费久久久久久无码 | 亚洲熟妇色xxxxx欧美老妇 | 精品无人区无码乱码毛片国产 | 亚洲无人区一区二区三区 | 97夜夜澡人人爽人人喊中国片 | 国产精品igao视频网 | 亚洲啪av永久无码精品放毛片 | 三上悠亚人妻中文字幕在线 | 大胆欧美熟妇xx | 亚无码乱人伦一区二区 | 2019nv天堂香蕉在线观看 | 对白脏话肉麻粗话av | 精品人妻人人做人人爽夜夜爽 | 亚洲日本在线电影 | 嫩b人妻精品一区二区三区 | 国产绳艺sm调教室论坛 | 日韩av激情在线观看 | 亚洲日韩一区二区三区 | 亚洲第一无码av无码专区 | 东京热一精品无码av | 久9re热视频这里只有精品 | 老头边吃奶边弄进去呻吟 | 久久久久久久女国产乱让韩 | 国内精品一区二区三区不卡 | 中文字幕人妻无码一区二区三区 | 一本大道久久东京热无码av | 欧美三级a做爰在线观看 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲色成人中文字幕网站 | 国产一区二区三区四区五区加勒比 | 亚洲综合精品香蕉久久网 | 无码一区二区三区在线观看 | 欧洲vodafone精品性 | 老熟妇仑乱视频一区二区 | 中文精品久久久久人妻不卡 | 宝宝好涨水快流出来免费视频 | 国产精品久久久久久亚洲影视内衣 | 亚洲狠狠婷婷综合久久 | 日本饥渴人妻欲求不满 | 中文字幕av无码一区二区三区电影 | 国产精品国产自线拍免费软件 | 日本www一道久久久免费榴莲 | 亚洲国产av美女网站 | 亚洲人成网站在线播放942 | 色欲av亚洲一区无码少妇 | 妺妺窝人体色www婷婷 | 亚洲码国产精品高潮在线 | 最新国产乱人伦偷精品免费网站 | 色情久久久av熟女人妻网站 | 久久伊人色av天堂九九小黄鸭 | 亚洲а∨天堂久久精品2021 | 露脸叫床粗话东北少妇 | av无码不卡在线观看免费 | 国产精品久久久久7777 | 欧美野外疯狂做受xxxx高潮 | 亚洲欧洲无卡二区视頻 | 日日躁夜夜躁狠狠躁 | 精品久久久无码人妻字幂 | 亚洲综合在线一区二区三区 | 丁香花在线影院观看在线播放 | 亚洲中文无码av永久不收费 | 中文字幕日韩精品一区二区三区 | 国产精品.xx视频.xxtv | 国产精品毛片一区二区 | 高清国产亚洲精品自在久久 | 久久亚洲国产成人精品性色 | 国内精品人妻无码久久久影院蜜桃 | 精品厕所偷拍各类美女tp嘘嘘 | 国产精品无套呻吟在线 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲啪av永久无码精品放毛片 | 激情内射亚州一区二区三区爱妻 | 国产明星裸体无码xxxx视频 | 国产亚洲精品久久久ai换 | 少女韩国电视剧在线观看完整 | 天天躁日日躁狠狠躁免费麻豆 | 国产精品无码久久av | 亚洲精品一区二区三区四区五区 | 色偷偷人人澡人人爽人人模 | 国产亚洲精品久久久闺蜜 | 少妇久久久久久人妻无码 | 少妇人妻偷人精品无码视频 | 免费国产黄网站在线观看 | 黑人大群体交免费视频 | 激情内射日本一区二区三区 | 亚洲理论电影在线观看 | 日韩精品a片一区二区三区妖精 | 青青青手机频在线观看 | 乱中年女人伦av三区 | 日韩精品无码免费一区二区三区 | 丰满妇女强制高潮18xxxx | 亚洲精品午夜国产va久久成人 | 色五月五月丁香亚洲综合网 | 色综合久久88色综合天天 | 国产成人无码a区在线观看视频app | 色综合久久88色综合天天 | 精品国产麻豆免费人成网站 | 精品国产乱码久久久久乱码 | 中文精品无码中文字幕无码专区 | 少妇性俱乐部纵欲狂欢电影 | 国产亚洲精品久久久闺蜜 | 乱人伦人妻中文字幕无码 | 撕开奶罩揉吮奶头视频 | 国产精品国产自线拍免费软件 | 最近的中文字幕在线看视频 | 风流少妇按摩来高潮 | 国产婷婷色一区二区三区在线 | 67194成是人免费无码 | 日本丰满护士爆乳xxxx | 人妻少妇精品久久 | 国产精品久久久久9999小说 | 亚洲精品中文字幕久久久久 | 内射爽无广熟女亚洲 | 少妇人妻偷人精品无码视频 | 成人毛片一区二区 | 捆绑白丝粉色jk震动捧喷白浆 | 一个人免费观看的www视频 | 精品久久久中文字幕人妻 | 国产亚av手机在线观看 | 亚洲熟妇色xxxxx欧美老妇 | 精品 日韩 国产 欧美 视频 | 久精品国产欧美亚洲色aⅴ大片 | 成人试看120秒体验区 | 国产精华av午夜在线观看 | 2020久久超碰国产精品最新 | 国产一区二区不卡老阿姨 | 成人av无码一区二区三区 | 激情综合激情五月俺也去 | 久久国产精品偷任你爽任你 | 麻豆成人精品国产免费 | 无码人妻黑人中文字幕 | 日本护士xxxxhd少妇 | 国产人妻人伦精品1国产丝袜 | 免费观看激色视频网站 | 亚洲性无码av中文字幕 | 久久五月精品中文字幕 | 日韩av无码中文无码电影 | 欧美性猛交xxxx富婆 | 97无码免费人妻超级碰碰夜夜 | 少妇性荡欲午夜性开放视频剧场 | 日欧一片内射va在线影院 | 无码乱肉视频免费大全合集 | 国产亚洲美女精品久久久2020 | 国产绳艺sm调教室论坛 | 欧美大屁股xxxxhd黑色 | 强奷人妻日本中文字幕 | 欧美一区二区三区视频在线观看 | 野外少妇愉情中文字幕 | 天天综合网天天综合色 | 成 人影片 免费观看 | 国产福利视频一区二区 | 成人无码影片精品久久久 | 在线播放无码字幕亚洲 | 午夜不卡av免费 一本久久a久久精品vr综合 | 亚洲综合无码一区二区三区 | 性欧美熟妇videofreesex | 久久国语露脸国产精品电影 | 欧美熟妇另类久久久久久不卡 | 性欧美大战久久久久久久 | 粉嫩少妇内射浓精videos | 久久国产劲爆∧v内射 | 亚洲の无码国产の无码影院 | 日韩av激情在线观看 | 国内综合精品午夜久久资源 | 成人性做爰aaa片免费看不忠 | 真人与拘做受免费视频一 | 中文字幕人妻丝袜二区 | 97久久国产亚洲精品超碰热 | 亚洲午夜久久久影院 | 亚洲一区av无码专区在线观看 | 思思久久99热只有频精品66 | 黑人粗大猛烈进出高潮视频 | 国产农村妇女高潮大叫 | 国产69精品久久久久app下载 | 97精品国产97久久久久久免费 | 在线欧美精品一区二区三区 | 中文字幕乱码人妻二区三区 | 国产精品第一国产精品 | 亚洲精品一区国产 | 任你躁在线精品免费 | 国产精品人人爽人人做我的可爱 | 亚洲一区二区三区 | 丰满岳乱妇在线观看中字无码 | 国产肉丝袜在线观看 | 熟妇人妻无码xxx视频 | 精品熟女少妇av免费观看 | 久久国产精品偷任你爽任你 | 国产免费久久精品国产传媒 | 大地资源网第二页免费观看 | 色婷婷久久一区二区三区麻豆 | 少妇的肉体aa片免费 | 婷婷丁香六月激情综合啪 | 丝袜足控一区二区三区 | 99麻豆久久久国产精品免费 | 一个人看的视频www在线 | 成人性做爰aaa片免费看不忠 | 色妞www精品免费视频 | 日本大乳高潮视频在线观看 | 色综合久久久无码网中文 | 又色又爽又黄的美女裸体网站 | 亚洲欧美中文字幕5发布 | 久久99国产综合精品 | 九九在线中文字幕无码 | 国产色精品久久人妻 | 国产精品久久久久久久9999 | 久久天天躁狠狠躁夜夜免费观看 | 国产一区二区不卡老阿姨 | 老熟妇仑乱视频一区二区 | 亚洲狠狠色丁香婷婷综合 | 成人无码精品一区二区三区 | 精品国产福利一区二区 | 国产成人无码一二三区视频 | 精品无码国产自产拍在线观看蜜 | 人妻无码久久精品人妻 | 一本久道久久综合狠狠爱 | 国产熟妇高潮叫床视频播放 | 少妇太爽了在线观看 | 国产激情无码一区二区 | 欧美真人作爱免费视频 | 国产亚洲精品久久久久久久 | 国产午夜无码视频在线观看 | 亚洲中文无码av永久不收费 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲人成网站在线播放942 | 日日躁夜夜躁狠狠躁 | 国产精品久免费的黄网站 | 国产熟妇另类久久久久 | 中文字幕无码日韩专区 | 青草青草久热国产精品 | 亚洲欧美日韩成人高清在线一区 | 久久综合香蕉国产蜜臀av | 亚洲欧美综合区丁香五月小说 | 激情国产av做激情国产爱 | 精品久久久久香蕉网 | 人妻互换免费中文字幕 | 国产精品第一国产精品 | 性色欲情网站iwww九文堂 | 成人aaa片一区国产精品 | 国产成人精品三级麻豆 | 久久国产精品萌白酱免费 | 亚洲精品中文字幕乱码 | 初尝人妻少妇中文字幕 | 欧美黑人巨大xxxxx | 亚洲成av人片在线观看无码不卡 | 亚洲热妇无码av在线播放 | 欧美高清在线精品一区 | 无码av最新清无码专区吞精 | 51国偷自产一区二区三区 | 国产午夜精品一区二区三区嫩草 | 鲁大师影院在线观看 | 狠狠噜狠狠狠狠丁香五月 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美变态另类xxxx | 一本久道久久综合婷婷五月 | 日本饥渴人妻欲求不满 | 99精品无人区乱码1区2区3区 | www国产精品内射老师 | 欧美 日韩 人妻 高清 中文 | 亚洲 欧美 激情 小说 另类 | 东京无码熟妇人妻av在线网址 | 午夜精品一区二区三区的区别 | 国产在线精品一区二区高清不卡 | 夫妻免费无码v看片 | 岛国片人妻三上悠亚 | 欧美激情内射喷水高潮 | 最近免费中文字幕中文高清百度 | 荫蒂被男人添的好舒服爽免费视频 | 欧美国产日韩久久mv | 夜精品a片一区二区三区无码白浆 | 黑人巨大精品欧美黑寡妇 | 欧美35页视频在线观看 | 欧美人与禽猛交狂配 | 国产99久久精品一区二区 | 人妻少妇被猛烈进入中文字幕 | 成人性做爰aaa片免费看 | 国产极品美女高潮无套在线观看 | 精品人人妻人人澡人人爽人人 | 精品人人妻人人澡人人爽人人 | 亚洲欧美精品伊人久久 | 国产后入清纯学生妹 | 一本色道久久综合亚洲精品不卡 | 精品无码一区二区三区爱欲 | 领导边摸边吃奶边做爽在线观看 | 久久精品人妻少妇一区二区三区 | 伊在人天堂亚洲香蕉精品区 | 秋霞成人午夜鲁丝一区二区三区 | 亚洲国产精品无码久久久久高潮 | 4hu四虎永久在线观看 | 日韩欧美中文字幕公布 | 久久精品一区二区三区四区 | 欧美性猛交xxxx富婆 | 强开小婷嫩苞又嫩又紧视频 | 久久久国产精品无码免费专区 | 久久国内精品自在自线 | 日日碰狠狠躁久久躁蜜桃 | 成人一在线视频日韩国产 | 国产成人精品视频ⅴa片软件竹菊 | 好屌草这里只有精品 | 精品久久综合1区2区3区激情 | 老熟妇仑乱视频一区二区 | 人妻尝试又大又粗久久 | 国产精品亚洲а∨无码播放麻豆 | 动漫av网站免费观看 | 在线成人www免费观看视频 | 日本乱人伦片中文三区 | 国产乡下妇女做爰 | 高潮毛片无遮挡高清免费 | 最新国产麻豆aⅴ精品无码 | 亚洲熟悉妇女xxx妇女av | 国产精品久久久av久久久 | 一本久久伊人热热精品中文字幕 | 亚洲男人av天堂午夜在 | 免费中文字幕日韩欧美 | 久久人人97超碰a片精品 | 十八禁真人啪啪免费网站 | 超碰97人人射妻 | 一区二区三区乱码在线 | 欧洲 | 粉嫩少妇内射浓精videos | 亚洲精品一区二区三区婷婷月 | 久久久久亚洲精品中文字幕 | 熟妇人妻激情偷爽文 | 亚洲自偷自拍另类第1页 | 中文字幕无码免费久久99 | 精品国精品国产自在久国产87 | yw尤物av无码国产在线观看 | 国产精品沙发午睡系列 | 成人av无码一区二区三区 | 国产成人一区二区三区别 | 六十路熟妇乱子伦 | 人人爽人人爽人人片av亚洲 | 欧美日韩亚洲国产精品 | 国精品人妻无码一区二区三区蜜柚 | 久久亚洲精品中文字幕无男同 | 亚洲 日韩 欧美 成人 在线观看 | 人妻有码中文字幕在线 | 亚洲春色在线视频 | 18禁止看的免费污网站 | 国产熟妇高潮叫床视频播放 | 亚洲精品成a人在线观看 | 国精产品一区二区三区 | 亚洲乱码国产乱码精品精 | 性欧美牲交xxxxx视频 | 最新版天堂资源中文官网 | 国产一区二区三区影院 | 成人综合网亚洲伊人 | 亚洲色成人中文字幕网站 | 国产婷婷色一区二区三区在线 | 精品国产aⅴ无码一区二区 | 激情内射亚州一区二区三区爱妻 | 色诱久久久久综合网ywww | 日韩欧美中文字幕在线三区 | 51国偷自产一区二区三区 | 亚洲精品中文字幕久久久久 | 国产xxx69麻豆国语对白 | 久久久久人妻一区精品色欧美 | 兔费看少妇性l交大片免费 | 无码一区二区三区在线 | 国产乱人伦偷精品视频 | 丰满妇女强制高潮18xxxx | 国产后入清纯学生妹 | 中文字幕中文有码在线 | 性色欲网站人妻丰满中文久久不卡 | 男人扒开女人内裤强吻桶进去 | 无码精品国产va在线观看dvd | 国产亚洲精品精品国产亚洲综合 | 在线播放无码字幕亚洲 | 一本色道久久综合狠狠躁 | 蜜桃av抽搐高潮一区二区 | 捆绑白丝粉色jk震动捧喷白浆 | 人人妻在人人 | 免费观看激色视频网站 | 西西人体www44rt大胆高清 | 色婷婷综合激情综在线播放 | 国产精品18久久久久久麻辣 | 精品久久久无码人妻字幂 | 中文字幕+乱码+中文字幕一区 | 无码午夜成人1000部免费视频 | 欧美三级不卡在线观看 | 乱码av麻豆丝袜熟女系列 | 亚洲一区二区三区无码久久 | 欧美国产亚洲日韩在线二区 | 中文亚洲成a人片在线观看 | 人人妻人人澡人人爽欧美一区九九 | 999久久久国产精品消防器材 | 国产午夜无码精品免费看 | 日本xxxx色视频在线观看免费 | 97夜夜澡人人双人人人喊 | 国产亚洲精品久久久久久 | 久久精品中文字幕一区 | 久久婷婷五月综合色国产香蕉 | 亚洲综合色区中文字幕 | 377p欧洲日本亚洲大胆 | 成人三级无码视频在线观看 | 久久国产36精品色熟妇 | 日本精品人妻无码77777 天堂一区人妻无码 | 精品国偷自产在线视频 | 国产后入清纯学生妹 | 亚洲乱码国产乱码精品精 | 无码任你躁久久久久久久 | 男女爱爱好爽视频免费看 | 兔费看少妇性l交大片免费 | 内射后入在线观看一区 | 十八禁真人啪啪免费网站 | 亚洲区小说区激情区图片区 | 色欲综合久久中文字幕网 | 九月婷婷人人澡人人添人人爽 | 久久久久成人片免费观看蜜芽 | 无码人妻精品一区二区三区不卡 | 国产精品99久久精品爆乳 | 午夜福利一区二区三区在线观看 | 午夜肉伦伦影院 | 无码一区二区三区在线 | 久久婷婷五月综合色国产香蕉 | 嫩b人妻精品一区二区三区 | 玩弄少妇高潮ⅹxxxyw | 一区二区传媒有限公司 | 内射欧美老妇wbb | 无遮挡啪啪摇乳动态图 | 少妇激情av一区二区 | 日日干夜夜干 | 牲欲强的熟妇农村老妇女 | 妺妺窝人体色www在线小说 | 成人欧美一区二区三区黑人 | 国产三级久久久精品麻豆三级 | 在线 国产 欧美 亚洲 天堂 | 日本一卡2卡3卡四卡精品网站 | 国产日产欧产精品精品app | 狠狠色丁香久久婷婷综合五月 | 欧美激情一区二区三区成人 | av无码不卡在线观看免费 | 国产亚洲欧美日韩亚洲中文色 | 日本在线高清不卡免费播放 | 日韩成人一区二区三区在线观看 | 国产精品无码成人午夜电影 | 中国女人内谢69xxxxxa片 | 乱中年女人伦av三区 | 99麻豆久久久国产精品免费 | 天天燥日日燥 | 动漫av一区二区在线观看 | 性欧美videos高清精品 | 爆乳一区二区三区无码 | 伊人久久大香线蕉av一区二区 | 无码av免费一区二区三区试看 | 无人区乱码一区二区三区 | 丰满人妻翻云覆雨呻吟视频 | 中文字幕日产无线码一区 | 欧美日韩一区二区三区自拍 | 无码吃奶揉捏奶头高潮视频 | 久久久婷婷五月亚洲97号色 | 精品国产一区av天美传媒 | 国产在线精品一区二区高清不卡 | 无码任你躁久久久久久久 | 国产极品视觉盛宴 | 一个人免费观看的www视频 | 巨爆乳无码视频在线观看 | 丁香花在线影院观看在线播放 | 在线а√天堂中文官网 | 国产精品久久久久久亚洲影视内衣 | 久久久久久av无码免费看大片 | 精品无人国产偷自产在线 | 性欧美熟妇videofreesex | 国产网红无码精品视频 | 丰满少妇弄高潮了www | 日韩视频 中文字幕 视频一区 | 精品夜夜澡人妻无码av蜜桃 | 丰满少妇高潮惨叫视频 | 国产真人无遮挡作爱免费视频 | 日韩精品无码一区二区中文字幕 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 色老头在线一区二区三区 | 久久久精品456亚洲影院 | 亚洲色偷偷男人的天堂 | 高清国产亚洲精品自在久久 | 久久精品国产99久久6动漫 | 久久天天躁狠狠躁夜夜免费观看 | 国产电影无码午夜在线播放 | 午夜性刺激在线视频免费 | 无码毛片视频一区二区本码 | 国产成人无码一二三区视频 | 国产精品无码一区二区三区不卡 | 老熟妇乱子伦牲交视频 | 国产成人综合在线女婷五月99播放 | 色综合久久久无码中文字幕 | 狂野欧美性猛交免费视频 | 无码国产激情在线观看 | 亚洲午夜无码久久 | 美女黄网站人色视频免费国产 | 亚洲成av人影院在线观看 | 国产成人无码av片在线观看不卡 | 男人的天堂2018无码 | 久久久久人妻一区精品色欧美 | 精品国偷自产在线 | 999久久久国产精品消防器材 | 日韩精品a片一区二区三区妖精 | 偷窥日本少妇撒尿chinese | 国产精品视频免费播放 | 国产精品对白交换视频 | 大色综合色综合网站 | 国产极品美女高潮无套在线观看 | 欧美自拍另类欧美综合图片区 | 久久久国产精品无码免费专区 | 玩弄中年熟妇正在播放 | 日韩精品成人一区二区三区 | 久久久www成人免费毛片 | 女人被爽到呻吟gif动态图视看 | 日产精品高潮呻吟av久久 | 久久伊人色av天堂九九小黄鸭 | 日韩成人一区二区三区在线观看 | 亚洲伊人久久精品影院 | 99久久人妻精品免费一区 | a国产一区二区免费入口 | 亚洲精品久久久久久久久久久 | 六月丁香婷婷色狠狠久久 | 午夜理论片yy44880影院 | 爽爽影院免费观看 | 扒开双腿疯狂进出爽爽爽视频 | 国精品人妻无码一区二区三区蜜柚 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 日韩av无码中文无码电影 | 亚洲成av人片在线观看无码不卡 | 无码国内精品人妻少妇 | 青草青草久热国产精品 | 激情内射日本一区二区三区 | 亚洲无人区午夜福利码高清完整版 | 久9re热视频这里只有精品 | 97精品国产97久久久久久免费 | 天堂在线观看www | 伊人色综合久久天天小片 | 久久久精品国产sm最大网站 | 夜精品a片一区二区三区无码白浆 | 成 人 网 站国产免费观看 | 丰满少妇熟乱xxxxx视频 | 99久久精品午夜一区二区 | 亚洲人成人无码网www国产 | 兔费看少妇性l交大片免费 | 荡女精品导航 | 欧美丰满少妇xxxx性 | 久久精品国产一区二区三区肥胖 | 欧美怡红院免费全部视频 | 亚洲一区二区三区在线观看网站 | 久精品国产欧美亚洲色aⅴ大片 | 国产熟女一区二区三区四区五区 | 精品一二三区久久aaa片 | 亚洲成在人网站无码天堂 | 美女极度色诱视频国产 | 午夜精品久久久内射近拍高清 | 亚洲精品无码人妻无码 | 四虎影视成人永久免费观看视频 | 麻豆蜜桃av蜜臀av色欲av | 欧美兽交xxxx×视频 | 国产乱人无码伦av在线a | 麻豆精产国品 | 久久天天躁狠狠躁夜夜免费观看 | 国产精品久久久av久久久 | a国产一区二区免费入口 | 婷婷五月综合激情中文字幕 | 水蜜桃色314在线观看 | 在线观看免费人成视频 | 粗大的内捧猛烈进出视频 | 任你躁国产自任一区二区三区 | 国产精品无码成人午夜电影 | 老熟女重囗味hdxx69 | 亚洲一区二区三区四区 | 成人欧美一区二区三区黑人免费 | 国产精品内射视频免费 | 亚洲毛片av日韩av无码 | 欧美 日韩 人妻 高清 中文 | 亚洲熟妇自偷自拍另类 | 亚洲爆乳精品无码一区二区三区 | 天堂亚洲2017在线观看 | 久久午夜无码鲁丝片午夜精品 | 国产精品无码mv在线观看 | 国产国语老龄妇女a片 | 久久国语露脸国产精品电影 | 国产无套内射久久久国产 | 纯爱无遮挡h肉动漫在线播放 | 男人扒开女人内裤强吻桶进去 | 无码av最新清无码专区吞精 | 曰本女人与公拘交酡免费视频 | 人人澡人人妻人人爽人人蜜桃 | 精品无人国产偷自产在线 | 人妻少妇精品无码专区二区 | 动漫av一区二区在线观看 | 67194成是人免费无码 | 一个人看的www免费视频在线观看 | 国产亚洲精品久久久ai换 | 图片小说视频一区二区 | 国产三级精品三级男人的天堂 | 大地资源中文第3页 | 国产精品久久精品三级 | 丝袜美腿亚洲一区二区 | 在线成人www免费观看视频 | 天天av天天av天天透 | 日本一卡二卡不卡视频查询 | 国产综合久久久久鬼色 | 男人扒开女人内裤强吻桶进去 | 精品久久久无码人妻字幂 | 欧美 日韩 亚洲 在线 | 免费观看激色视频网站 | 久久国语露脸国产精品电影 | 亚洲色偷偷偷综合网 | 亚洲中文字幕乱码av波多ji | 日日摸天天摸爽爽狠狠97 | 麻花豆传媒剧国产免费mv在线 | 天堂无码人妻精品一区二区三区 | 久久国产劲爆∧v内射 | 亚洲国产欧美日韩精品一区二区三区 | 天天躁夜夜躁狠狠是什么心态 | 成人免费视频视频在线观看 免费 | 欧美丰满老熟妇xxxxx性 | 久久人人爽人人爽人人片av高清 | 日欧一片内射va在线影院 | 亚洲小说春色综合另类 | 性啪啪chinese东北女人 | 成人无码精品1区2区3区免费看 | 国产无套粉嫩白浆在线 | 日本护士毛茸茸高潮 | 激情五月综合色婷婷一区二区 | 国内揄拍国内精品人妻 | 久久精品国产精品国产精品污 | 久久99精品国产.久久久久 | 久久综合给合久久狠狠狠97色 | 久久人人爽人人爽人人片ⅴ | 日韩av激情在线观看 | √天堂中文官网8在线 | 亚洲一区二区三区在线观看网站 | 国产又爽又猛又粗的视频a片 | 精品国产一区二区三区四区在线看 | 欧美精品一区二区精品久久 | 亚洲色欲久久久综合网东京热 | 欧美大屁股xxxxhd黑色 | 亚洲国产精华液网站w | 妺妺窝人体色www在线小说 | 无码午夜成人1000部免费视频 | 一本久道久久综合狠狠爱 | 国产精品丝袜黑色高跟鞋 | 国产精品igao视频网 | 狠狠色噜噜狠狠狠7777奇米 | 成年女人永久免费看片 | 国产精品无码mv在线观看 | 无遮挡啪啪摇乳动态图 | 一二三四在线观看免费视频 | 欧美野外疯狂做受xxxx高潮 | 国内精品人妻无码久久久影院 | 亚洲 高清 成人 动漫 | 在线看片无码永久免费视频 | 国产超级va在线观看视频 | 少女韩国电视剧在线观看完整 | 水蜜桃亚洲一二三四在线 | 3d动漫精品啪啪一区二区中 | 国内精品人妻无码久久久影院蜜桃 | 国产色在线 | 国产 | 国产精品无码一区二区三区不卡 | 亚洲国产成人a精品不卡在线 | 99久久精品国产一区二区蜜芽 | 亚洲爆乳精品无码一区二区三区 | 狠狠色色综合网站 | 成人影院yy111111在线观看 | 日韩欧美中文字幕公布 | 久久亚洲精品中文字幕无男同 | 东北女人啪啪对白 | 欧美 日韩 人妻 高清 中文 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 久久99精品久久久久久 | 国产成人无码午夜视频在线观看 | 亚洲成a人片在线观看日本 | 亚洲欧美日韩成人高清在线一区 | 久久久久se色偷偷亚洲精品av | 一区二区三区乱码在线 | 欧洲 | 日韩视频 中文字幕 视频一区 | 人人澡人人妻人人爽人人蜜桃 | 午夜福利电影 | 久久亚洲a片com人成 | 国产精品办公室沙发 | 亚洲国产欧美国产综合一区 | 日韩成人一区二区三区在线观看 | 夜先锋av资源网站 | 激情内射日本一区二区三区 | 国产免费观看黄av片 | 午夜不卡av免费 一本久久a久久精品vr综合 | 亚洲欧洲中文日韩av乱码 | 久久精品中文字幕一区 | 亚洲熟悉妇女xxx妇女av | 欧美第一黄网免费网站 | 亚洲成av人片天堂网无码】 | 波多野42部无码喷潮在线 | 久久久久久久久蜜桃 | 日韩少妇白浆无码系列 | 好男人www社区 | 国产亚洲精品久久久久久国模美 | 青青青手机频在线观看 | 亚洲va中文字幕无码久久不卡 | 国内丰满熟女出轨videos | 少妇高潮喷潮久久久影院 | 性生交大片免费看l | 亚洲国产欧美日韩精品一区二区三区 | 2020久久香蕉国产线看观看 | 东北女人啪啪对白 | 一本久道高清无码视频 | 精品一区二区三区波多野结衣 | 少妇久久久久久人妻无码 | 狂野欧美激情性xxxx | 国产三级久久久精品麻豆三级 | 狠狠色丁香久久婷婷综合五月 | 国产av一区二区三区最新精品 | 在线成人www免费观看视频 | 日韩精品无码免费一区二区三区 | 国产精品久久久午夜夜伦鲁鲁 | 牲交欧美兽交欧美 | 国产精品高潮呻吟av久久 | 亚洲成av人在线观看网址 | 少妇性荡欲午夜性开放视频剧场 | 国产深夜福利视频在线 | 国产尤物精品视频 | 人人爽人人澡人人高潮 | 亚洲国产日韩a在线播放 | 日日天干夜夜狠狠爱 | 久久99精品久久久久久 | 欧美日韩一区二区三区自拍 | 2020久久超碰国产精品最新 | 精品国产一区二区三区四区在线看 | 亚洲狠狠婷婷综合久久 | 老熟妇乱子伦牲交视频 | 日韩少妇白浆无码系列 | 国产精品永久免费视频 | 一区二区传媒有限公司 | 扒开双腿疯狂进出爽爽爽视频 | 牲交欧美兽交欧美 | 日欧一片内射va在线影院 | 国内精品久久久久久中文字幕 | 国产黄在线观看免费观看不卡 | 国产精品久久久久久亚洲影视内衣 | 亚洲日韩一区二区 | 乱人伦中文视频在线观看 | 精品久久久久久人妻无码中文字幕 | 亚洲a无码综合a国产av中文 | 午夜福利电影 | 少妇人妻大乳在线视频 | 爱做久久久久久 | 日韩精品无码一本二本三本色 | 亚洲欧洲日本综合aⅴ在线 | 日韩人妻系列无码专区 | 欧美xxxxx精品 | 少妇性俱乐部纵欲狂欢电影 | 日韩精品乱码av一区二区 | 澳门永久av免费网站 | av无码不卡在线观看免费 | 人人妻人人澡人人爽欧美精品 | 国产乱人伦av在线无码 | 久久综合九色综合欧美狠狠 | 无套内谢的新婚少妇国语播放 | 无码午夜成人1000部免费视频 | 人妻夜夜爽天天爽三区 | 久久99国产综合精品 | 无码av免费一区二区三区试看 | 成人aaa片一区国产精品 | 欧美性猛交xxxx富婆 | 少妇一晚三次一区二区三区 | av人摸人人人澡人人超碰下载 | 国产成人午夜福利在线播放 | 久在线观看福利视频 | 国产免费久久精品国产传媒 | 成人欧美一区二区三区黑人免费 | 国产成人精品无码播放 | 女人被男人爽到呻吟的视频 | 日本xxxx色视频在线观看免费 | 无码人妻丰满熟妇区毛片18 | 日韩精品无码免费一区二区三区 | 成人一在线视频日韩国产 | 中文字幕乱码人妻无码久久 | 又黄又爽又色的视频 | 中文字幕人成乱码熟女app | 久久久成人毛片无码 | 国产九九九九九九九a片 | 国产激情无码一区二区app | 免费人成网站视频在线观看 | 一本久久伊人热热精品中文字幕 | 无套内谢老熟女 | 亚洲国产欧美国产综合一区 | 午夜福利一区二区三区在线观看 | 欧洲欧美人成视频在线 | 激情亚洲一区国产精品 | 99久久精品日本一区二区免费 | 亚洲国产欧美日韩精品一区二区三区 | 性欧美videos高清精品 | 无码人中文字幕 | 中文字幕无码热在线视频 | 久久99精品久久久久久动态图 | 成人精品天堂一区二区三区 | 极品尤物被啪到呻吟喷水 | 性色欲情网站iwww九文堂 | 老熟妇仑乱视频一区二区 | 亚洲综合无码一区二区三区 | 亚洲精品成人福利网站 | 精品午夜福利在线观看 | 无遮挡国产高潮视频免费观看 | 天下第一社区视频www日本 | 精品欧美一区二区三区久久久 | 中文字幕亚洲情99在线 | 无码av最新清无码专区吞精 | 亚洲中文字幕在线无码一区二区 | 一本久久伊人热热精品中文字幕 | 国产肉丝袜在线观看 | 无码人妻久久一区二区三区不卡 | 2020久久超碰国产精品最新 | 97资源共享在线视频 | 国产sm调教视频在线观看 | 青草青草久热国产精品 | 亚洲欧美日韩成人高清在线一区 | 久久久久国色av免费观看性色 | 国产无遮挡又黄又爽又色 | 国产精品igao视频网 | 性生交片免费无码看人 | 日本乱偷人妻中文字幕 | 欧美激情综合亚洲一二区 | 中文字幕无码免费久久9一区9 | 无码国产色欲xxxxx视频 | 久久久精品人妻久久影视 | 亚洲国产精品一区二区美利坚 | 又大又硬又爽免费视频 | 高清国产亚洲精品自在久久 | 一本久久伊人热热精品中文字幕 | 成人av无码一区二区三区 | 久久精品中文字幕一区 | 国产综合久久久久鬼色 | 国产真人无遮挡作爱免费视频 | 无码人妻丰满熟妇区五十路百度 | 乱人伦人妻中文字幕无码久久网 | 久久久久久久久888 | 人人妻人人澡人人爽欧美一区九九 | 亚洲精品一区二区三区在线观看 | 亲嘴扒胸摸屁股激烈网站 | 国产亚洲精品久久久久久久 | 性欧美熟妇videofreesex | 婷婷综合久久中文字幕蜜桃三电影 | 久久国产精品二国产精品 | 亚洲中文字幕在线观看 | 国产成人无码区免费内射一片色欲 | 激情内射日本一区二区三区 | 两性色午夜免费视频 | 亚洲人成网站色7799 | 国产av无码专区亚洲awww | 亚洲人成人无码网www国产 | 无码帝国www无码专区色综合 | 久久久国产精品无码免费专区 | 欧美大屁股xxxxhd黑色 | 装睡被陌生人摸出水好爽 | 色婷婷综合激情综在线播放 | 97夜夜澡人人爽人人喊中国片 | 丰满少妇女裸体bbw | 亚拍精品一区二区三区探花 | 粉嫩少妇内射浓精videos | 麻豆国产丝袜白领秘书在线观看 | 国产无套粉嫩白浆在线 | 国产人妻久久精品二区三区老狼 | 日韩精品久久久肉伦网站 | 正在播放东北夫妻内射 | 最近的中文字幕在线看视频 | 亚洲中文字幕无码中字 | 国产精品无码成人午夜电影 | 一本久久伊人热热精品中文字幕 | 欧美黑人性暴力猛交喷水 | 乱中年女人伦av三区 | 国产成人无码av片在线观看不卡 | 国内老熟妇对白xxxxhd | 中文精品无码中文字幕无码专区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 纯爱无遮挡h肉动漫在线播放 | 亚洲国产精品久久人人爱 | 国产xxx69麻豆国语对白 | 人妻少妇被猛烈进入中文字幕 | 国产成人一区二区三区在线观看 | 亚洲成av人片在线观看无码不卡 | 精品久久8x国产免费观看 | 在线观看欧美一区二区三区 | 精品国产国产综合精品 | 97资源共享在线视频 | 搡女人真爽免费视频大全 | 久久久国产一区二区三区 | 亚洲乱码国产乱码精品精 | 亚洲理论电影在线观看 | 四虎国产精品免费久久 | 亚洲成色在线综合网站 | 两性色午夜免费视频 | а√天堂www在线天堂小说 | 日本乱偷人妻中文字幕 | 任你躁在线精品免费 | 国产在线精品一区二区三区直播 | 中文字幕av伊人av无码av | 婷婷丁香五月天综合东京热 | 国产精品亚洲а∨无码播放麻豆 | 久久精品成人欧美大片 | 男女下面进入的视频免费午夜 | 亚洲国产精品成人久久蜜臀 | 中文字幕中文有码在线 | 久久午夜夜伦鲁鲁片无码免费 | √天堂资源地址中文在线 | 草草网站影院白丝内射 | 色一情一乱一伦一视频免费看 | 女人高潮内射99精品 | 免费国产黄网站在线观看 | 成年美女黄网站色大免费全看 | 国产三级久久久精品麻豆三级 | 久久精品女人的天堂av | 亚洲高清偷拍一区二区三区 | 婷婷六月久久综合丁香 | 精品一区二区三区无码免费视频 | 99riav国产精品视频 | 久久99精品久久久久久 | 骚片av蜜桃精品一区 | а√天堂www在线天堂小说 | 欧美三级a做爰在线观看 | 国产成人无码a区在线观看视频app | 欧美zoozzooz性欧美 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久精品国产日本波多野结衣 | 高清不卡一区二区三区 | 97精品人妻一区二区三区香蕉 | 99久久亚洲精品无码毛片 | 性做久久久久久久免费看 | 日韩av激情在线观看 | 色综合久久久久综合一本到桃花网 | 一区二区三区乱码在线 | 欧洲 | 国产高清av在线播放 | 99riav国产精品视频 | 夜夜高潮次次欢爽av女 | 大色综合色综合网站 | 兔费看少妇性l交大片免费 | 久久久久久久女国产乱让韩 | 日日碰狠狠丁香久燥 | 少妇邻居内射在线 | 久久人人爽人人人人片 | 麻豆国产97在线 | 欧洲 | 久久精品国产99久久6动漫 | 免费人成在线观看网站 | 久久午夜无码鲁丝片午夜精品 | 日韩av无码一区二区三区不卡 | 福利一区二区三区视频在线观看 | 最新国产乱人伦偷精品免费网站 | 色五月五月丁香亚洲综合网 | 亚洲无人区一区二区三区 | 无码人妻出轨黑人中文字幕 | 久久精品中文字幕一区 | 亚洲小说图区综合在线 | 国产精品久久久久久无码 | 中文字幕人妻丝袜二区 | 内射欧美老妇wbb | 国产无套内射久久久国产 | 九九在线中文字幕无码 | 久久国产精品精品国产色婷婷 | 亚洲国产综合无码一区 | 狠狠噜狠狠狠狠丁香五月 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产精品国产三级国产专播 | 漂亮人妻洗澡被公强 日日躁 | 亚洲人亚洲人成电影网站色 | 亚洲国产一区二区三区在线观看 | 国产卡一卡二卡三 | 女高中生第一次破苞av | 国产亚洲欧美日韩亚洲中文色 | 国精品人妻无码一区二区三区蜜柚 | 熟女体下毛毛黑森林 | 国产成人无码a区在线观看视频app | 午夜福利不卡在线视频 | 久久精品人人做人人综合试看 | а√资源新版在线天堂 | 国产精品福利视频导航 | 波多野结衣aⅴ在线 | 狠狠色欧美亚洲狠狠色www | 久久人人爽人人人人片 | 7777奇米四色成人眼影 | 久久精品国产亚洲精品 | 麻豆成人精品国产免费 | 国产精品国产自线拍免费软件 | 亚洲精品一区二区三区大桥未久 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲gv猛男gv无码男同 | 爆乳一区二区三区无码 | 国产精品亚洲а∨无码播放麻豆 | 欧美一区二区三区视频在线观看 | 国产精品久久久久久亚洲影视内衣 | 领导边摸边吃奶边做爽在线观看 | 精品少妇爆乳无码av无码专区 | 国产人妻久久精品二区三区老狼 | 免费观看的无遮挡av | 国产精品久免费的黄网站 | 在线播放无码字幕亚洲 | 国产精品多人p群无码 | 国产亚洲精品久久久久久久 | 婷婷五月综合缴情在线视频 | 亚洲国产综合无码一区 | 中文无码精品a∨在线观看不卡 | 午夜性刺激在线视频免费 | 男人的天堂av网站 | 亚洲中文无码av永久不收费 | 国产色视频一区二区三区 | 水蜜桃亚洲一二三四在线 | 中文字幕久久久久人妻 | 日本精品高清一区二区 | 国产卡一卡二卡三 | 亚洲成av人片天堂网无码】 | 国产内射爽爽大片视频社区在线 | 欧美性猛交内射兽交老熟妇 | 窝窝午夜理论片影院 | 久久久久成人精品免费播放动漫 | 丰满妇女强制高潮18xxxx | 98国产精品综合一区二区三区 | 人人爽人人澡人人人妻 | 97精品国产97久久久久久免费 | 一本一道久久综合久久 | 熟妇激情内射com | 国产偷国产偷精品高清尤物 | 久久久久久国产精品无码下载 | 九月婷婷人人澡人人添人人爽 | 亚洲成av人在线观看网址 | 国产无套内射久久久国产 | 一本久道久久综合婷婷五月 | 国产成人无码午夜视频在线观看 | 亚洲国产精品一区二区第一页 | 国产精品人妻一区二区三区四 | 永久免费精品精品永久-夜色 | 狠狠综合久久久久综合网 | 久久久久成人片免费观看蜜芽 | 成人精品天堂一区二区三区 | 成人免费视频一区二区 | 亚洲欧洲中文日韩av乱码 | 国产午夜无码视频在线观看 | 国产色精品久久人妻 | 亚洲乱码中文字幕在线 | 精品熟女少妇av免费观看 | 国产麻豆精品一区二区三区v视界 | 午夜无码人妻av大片色欲 | 天天拍夜夜添久久精品 | 色窝窝无码一区二区三区色欲 | 18无码粉嫩小泬无套在线观看 | 天天躁夜夜躁狠狠是什么心态 | 亚洲国产欧美国产综合一区 | 一个人免费观看的www视频 | 精品一区二区三区无码免费视频 | 伊人久久婷婷五月综合97色 | 亚洲精品中文字幕久久久久 | 精品国产一区二区三区av 性色 | 人妻aⅴ无码一区二区三区 | 免费观看激色视频网站 | 中文字幕无码免费久久99 | 国产精品igao视频网 | 熟妇女人妻丰满少妇中文字幕 | 午夜免费福利小电影 | 国产精品理论片在线观看 | 久久国产精品精品国产色婷婷 | 丝袜足控一区二区三区 | 东京热一精品无码av | 久久成人a毛片免费观看网站 | 男女性色大片免费网站 | 伊人久久婷婷五月综合97色 | 久久精品国产一区二区三区肥胖 | 国产av一区二区精品久久凹凸 | 无码毛片视频一区二区本码 | av在线亚洲欧洲日产一区二区 | 欧美 日韩 人妻 高清 中文 | 日日躁夜夜躁狠狠躁 | 色五月丁香五月综合五月 | 午夜熟女插插xx免费视频 | 国产激情无码一区二区app | 亚洲国产精品毛片av不卡在线 | 欧美黑人乱大交 | 午夜精品一区二区三区的区别 | 欧美日韩一区二区免费视频 | 两性色午夜视频免费播放 | 亚洲国产成人a精品不卡在线 | 麻豆国产97在线 | 欧洲 | 风流少妇按摩来高潮 | 日韩无码专区 | 国产成人精品必看 | 性欧美疯狂xxxxbbbb | 又大又硬又爽免费视频 | 国产成人精品必看 | 精品人妻av区 |