【Unity面试】 Unity基础核心 | 面试真题 | 全面总结 | 建议收藏
你知道的越多,你不知道的越多 🇨🇳🇨🇳🇨🇳
點贊再看,養成習慣,別忘了一鍵三連哦 👍👍👍
文章持續更新中 📝📝📝
1??Unity3D中的協程(coroutine),C#線程和進程之間的區別是什么??🔥🔥🔥
🎬Unity中協程是什么?
🔑協程(協同程序Coroutine): 同一時間只能執行某個協程。
🔑開辟多個協程開銷不大。協程適合對某任務進行分時處理。
🔑 Unity提供了StartCoroutine來開啟協程,當你在 StartCoroutine 的函數體里處理一段代碼時,利用 yield語句等待執行結果,這期間不影響主程序的繼續執行,可以協同工作。
yield null 下一幀后繼續執行yield后的代碼
yield 語句 一般在Fixupdate后執行,或者Update后執行
舉個例子:LoadLevelAsync(異步加載關卡)后臺加載場景的方法。允許你在后臺加載新資源和場景,再利用協同,你就可以在前臺用 loading 條或動畫提示玩家游戲處于加載中,同時后臺協同處理加載的事宜。
🎬C#線程和進程之間的區別
🔑進程progress:進程是線程的容器。
🔑線程thread: 同一時間可以同時執行多個線程。開辟多條線程開銷很大。線程適合多任務同時處理,并發并行。
🔑協程coroutine:具有多個返回點的方法,時間分片(幀),Unity只能是單線程,只能在主線程調用協程對象。
2??OnEnable、Awake、Start 運行時的發生順序?哪些可能在同一個對象周期中反復的發生??🔥🔥🔥🔥🔥
Awake > OnEnable>Start 初始化
OnEnable(激活)可以在同一周期反復的發生
🔑SetActive(true)就會反復觸發OnEnable事件
🔑SetActive(false)就會反復觸發OnDisable事件
其中Awake函數一般用于實現單例模式;當腳本被實例化時,調用awake,完成成員變量的初始化,在單例模式中會有一個虛方法OnStart在Awake中調用,在實際腳本中重寫OnStart方法,相當于執行Awake函數
🎬Unity腳本生命周期函數舉例
🔑OnEnable函數是在游戲對象可以調用時調用;
🔑OnDisable是在游戲對象不可用時調用;
🔑Start函數則是在場景中顯示該游戲對象前調用一次,用于開始設置物體屬性和渲染;
🔑FixedUpdate函數具有固定更新頻率,一般進行游戲對象的物理引擎的更新;
🔑Update函數則是渲染幀更新,每秒更新一定頻率;
🔑LateUpdate函數是延遲更新,只有在每一幀的所有Update函數都執行完了過后才會執行;
🔑OnGUI函數則是在每一幀更新時調用。
3??Unity3D 如何獲知場景中需要加載的數據?如何動態資源加載??🔥🔥
🔑instantiate:最簡單的一種方式,以實例化的方式動態生成一個物體。
🔑Assetsbundle:即將資源打成 asset bundle 放在服務器或本地磁盤,然后使用WWW模塊get 下來,然后從這個bundle中load某個object,unity官方推薦也是絕大多數商業化項目使用的一種方式。
🔑Resource.Load:可以直接load并返回某個類型的Object,前提是要把這個資源放在Resource命名的文件夾下,Unity不管有沒有場景引用,都會將其全部打入到安裝包中
🔑AssetDatabase.loadasset :這種方式只在editor范圍內有效,游戲運行時沒有這個函數,它通常是在開發中調試用的。
4??向量的點乘、叉乘以及歸一化的意義?🔥🔥🔥
🎬叉乘cross
可以獲得兩個向量A和B所構成平面,垂直的向量C,和左手坐標系類似
🔑用來判斷角色移動方向,判斷順時針還是逆時針旋轉
🎬點乘 dot
用來求向量之間的夾角
🔑判斷向量是否在同一方向、以及B向量在A向量上的投影
a·b>0 方向基本相同,夾角在0°到90°之間
a·b=0 正交垂直,夾角90度
a·b<0 方向基本相反,夾角在90°到180°之間
🎬歸一化normalized
🔑用在只關系方向,不關心大小的情況下
5??Image和RawImage區別?🔥🔥
🎬Image和RawImage區別
🎬Image和RawImage應用:
6??Unity中碰撞器(Collider)和觸發器(Trigger)的區別?🔥🔥
碰撞器是觸發器的載體,觸發器只是碰撞器的一個屬性。
🎬碰撞器(Collider)
有碰撞效果,IsTrigger=false,可以調OnCollisionEnter/Stay/Exit函數
🎬觸發器(Trigger)
沒有碰撞效果,isTrigger=true,可以調用OnTriggerEnter/Stay/Exit函數
當Hero使用武器攻擊Enemy,Enemy身體掛載碰撞器,當Hero攻擊,進行碰撞檢測,如果不需要物理的碰觸效果(擊退效果),就打開觸發器,在觸發器函數實現攻擊特效。
7??請描述Unity游戲動畫有幾種,以及其原理?🔥🔥🔥
🎬關鍵幀動畫
每一幀動畫序列當中包含了頂點的空間位置信息以及改變量,然后通過插值運算,得出動畫效果。選中某一游戲對象,創建animation,添加屬性Transform,MeshRender、collider。還可以添加關鍵幀,在關鍵幀上Add Animation Event事件。
🎬骨骼動畫
模型當中有一個骨骼結構層次的對象,存儲了各個骨骼在空間內的位置信息。皮膚蒙皮附著在骨骼上,決定了角色的外觀,每一個頂點數據都會隨著多個骨骼影響而改變,從而實現動畫效果。創建animator將各個動畫拖入到動畫狀態機當中,設置參數,連接各個動畫狀態,在通過腳本控制來實現動畫控制
🎬關節動畫
了解不多,是骨骼動畫的前身,模型分成N個部分網格,分成部分動畫,組成一個整體動畫
8??解釋MeshFilter、MeshRender 和 SkinnedMeshRender 的作用?🔥🔥
🔑MeshFilter網格過濾器,通過mesh屬性獲取模型網格
🔑MeshRender網格渲染器,渲染Material,lighting,probe探針
🔑SkinnedMeshRender蒙皮網格渲染器,渲染人物模型,渲染基本屬性,材質,光照,探針,其他設置屬性
Unity換裝主要是切換Mesh、root bone和材質貼圖
9??四元數(Quaternion)、歐拉角(Eulerangle)和矩陣旋轉的區別?🔥🔥🔥
🎬歐拉角Euler
三個角度組成,直觀,易理解。
優點:可以進行從一個方向到另一個方向旋轉大于180度的角度。
缺點:萬向節死鎖導致旋轉卡死,還有其他一些奇異狀態還會導致模型方向翻轉
🎬四元數Quaternion
內部由四個數字(在Unity中稱為x,y,z和w)組成,然而這些數字不表示角度或軸,并且通常不需要直接訪問它們。
優點:四元旋轉不存在萬向節鎖問題。
優點:存儲空間小,計算效率高。
缺點:單個四元數不能表示在任何方向上超過180度的旋轉。
缺點:四元數的數字表示不直觀。
🎬矩陣旋轉
優點:與四元數一樣,不存在萬向節鎖問題
優點:可以表示圍繞任意軸的旋轉,四元數的旋轉軸均為通過物體中心點的軸,矩陣則不受限
缺點:矩陣旋轉使用4x4矩陣,記錄16個數值,而四元數只需要4個數值。計算復雜,效率低。
🔟MeshRender 中 material 和 sharedmaterial 的區別?🔥🔥
兩者都是MeshRender的屬性
🎬sharedMaterial 是共用的 Material,稱為共享材質。
修改共享材質會改變所用使用該材質的物體,并且編輯器中的材質設置也會改變。
🎬material 是獨立的 Material,返回分配給渲染器的第一個材質。
修改材質僅會改變該物體的材質。如果該材質被其他的渲染器使用,將克隆該材質并用于當前的渲染器。
🎁🌻🌼🌸 粉絲福利來嘍 🎁🌻🌼🌸
簡歷自測評分表、Unity職級技能表、面試題庫、入行學習路徑等
我給大家爭取到了 50個《游戲開發五天集訓營 》名額,原價198,前50個免費
掃碼加入,暗號小聽歌
即可參加ARPG狼人戰斗系統、饑荒生存類游戲開發、回合制RPG口袋妖怪游戲等游戲開發訓練營
參加游戲訓練營、還有機會獲得大廠老師在線面試指導、或者有機會獲得價值1998元的《Unity極速入門與實戰》課程
總結
以上是生活随笔為你收集整理的【Unity面试】 Unity基础核心 | 面试真题 | 全面总结 | 建议收藏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity 基础 之 Camera摄像机
- 下一篇: Unity基础知识之协程