unity3d遊戲開發經典面試題
1.什麼是渲染管道?
是指在顯示器上為了顯示出圖像而經過的一系列必要操作。
渲染管道中的很多步驟,都要將幾何物體從一個坐標系中變換到另一個坐標系中去。
主要步驟有:本地坐標->視圖坐標->背面裁剪->光照->裁剪->投影->視圖變換->光柵化。
2.如何進行內存優化?
1.壓縮自帶類庫;
2.將暫時不用的以後還需要使用的物體隱藏起來而不是直接Destroy掉;
3.釋放AssetBundle佔用的資源;
4.降低模型的片面數,降低模型的骨骼數量,降低貼圖的大小;
5.使用光照貼圖,使用多層次細節(LOD)[全稱 Levels of Detail ,進行物體不同細節層次之間的平滑過渡。 根據物體所在的環境和所處位置的重要度,決定渲染。降低不重要和遠的物體的面數和細節度。一般都是視距近的物體清楚,視距遠的物體模糊。
3.動態載入資源的方式?
1.Resources.Load();
2.AssetBundle
4.什麼是協同程序?
在主線程運行時同時開啟另一段邏輯處理,來協助當前程序的執行。換句話說,開啟協程就是開啟一個線程。可以用來控制運動、序列以及對象的行為。
5.碰撞器和觸發器的區別?
碰撞器有碰撞的效果,IsTrigger=false,可以調用OnCollisionEnter/Stay/Exit函數;
觸發器沒有碰撞效果,IsTrigger=true,可以調用OnTriggerEnter/Stay/Exit函數。
6.物體發生碰撞的必要條件?
兩個物體都必須帶有碰撞器(Collider),其中一個物體還必須帶有Rigidbody剛體。
7.在物體發生碰撞的整個過程中,有幾個階段,分別列出對應的函數?
三個階段
1.OnCollisionEnter
2.OnCollisionStay
3.OnCollisionExit
8.Unity3d提供了一個用於保存和讀取數據的類(PlayerPrefs),請列出保存和讀取整形數據的函數?
PlayerPrefs.SetInt() PlayerPrefs.GetInt()
9.解釋一些Unity3d中的燈光有哪些?
有4種,點光源,區域光源,聚光燈,平行光。
10.Unity3d腳本從喚醒到銷毀有著一套比較完善的生命週期,請舉幾個例子?
Awake——>Start——>Update——>FixedUpdate——>LateUpdate——>OnGUI——>Reset——>OnDisable——>OnDestroy
11.物流更新一般放在那個系統函數裏?
FixedUpdate,每固定幀繪製時執行一次,和Update不同的是FixedUpdate是渲染幀執行,如果你的渲染效率低下的時候FixedUpdate調用次數就會跟著下降。FixedUpdate比較適用於物理引擎的計算,因為是跟每幀渲染有關。Update就比較適合做控制。
12.移動攝像機的動作放在那個系統函數中,為啥?
LateUpdate,在每幀執行完畢調用,它是在所有Update結束後才調,比較適合用於命令腳本的執行。官網上例子是攝像機的跟隨,都是在所有Update操作完纔跟進攝像機,不然就有可能出現攝像機已經推進了,但是視角里還未有角色的空幀出現。
13.當遊戲中需要頻繁創建一個物體時,我們需要怎麼做?
使用預製物體對象Prefab,然後複製創建。
14.請簡述Unity3d下如何安全的在不同工程間遷移asset數據,請列舉出三種方法?
1.可以把assets目錄和Library目錄一起遷移
2.導出包
3.用Unity帶的assets Server功能
15.請描述遊戲動畫有哪幾種,以及其原理?
主要有關節動畫、骨骼動畫、單一網格模型動畫(關鍵幀動畫)。
關節動畫:把角色分成若干獨立部分,一個部分對應一個網格模型,部分的動畫連接成一個整體的動畫,角色比較靈活,Quake2中使用這種動畫;
骨骼動畫,廣泛應用的動畫方式,集成了以上兩個方式的優點,骨骼按角色特點組成一定的層次結構,有關節相連,可做相對運動,皮膚作為單一網格蒙在骨骼之外,決定角色的外觀;
單一網格模型動畫由一個完整的網格模型構成,在動畫序列的關鍵幀裏記錄各個頂點的原位置及其改變數,然後插值運算實現動畫效果,角色動畫較真實。
16.MipMap是什麼,作用?
MipMapping:在三維計算機圖形的貼圖渲染中有常用的技術,為加快渲染進度和減少圖像鋸齒,貼圖被處理成由一系列被預先計算和優化過的圖片組成的文件,這樣的貼圖被稱為MipMap。
17.localPosition和Position的區別?
全局變數和局部變數
小編這還有更多的unity3d遊戲開發面試題等你來領取~私信找小編吧。
推薦閱讀: