游戲開發(fā)常見面試題與知識點整理總結

面試第一次知識總結:
一、Unity基本操作
1、unity提供哪幾種光源?
點光源、平行光、聚光燈、區(qū)域光。
2、物體發(fā)生碰撞的必要條件什么?
兩個物體必須有碰撞體Collider組件,一個物體上必須有剛體組件Rigidbody。
3、碰撞體和觸發(fā)器區(qū)別與聯系
觸發(fā)器是碰撞體上的一個屬性,如果不勾選觸發(fā)器,兩個物體是不可以別擊穿;有了觸發(fā)器后是可以被擊穿的。
檢測碰撞體方法:OnCollisionEnter/Stay/Exit() 檢測觸發(fā)器方法:OnTriggerEnter/Stay/Exit()
4、預設(prefab)的好處
預設更多的像一個模板,比如將一個人物模型設置成預設,我們可以在不同的場景使用,方便使用。
5、如何利用unity開發(fā)2D游戲
1)使用本身的GUI
2)攝像機的投影(projection)方式改為正交投影,不考慮一個坐標軸
3)使用插件2DToolKit
6、事件函數的執(zhí)行順序
初始化:函數Awake(激活游戲對象)----OnEnable(實例化游戲對象)-----Start(初始化)
更新順序:FixedUpdate(物理計算,處理剛體)----Update()----LateUpdate(相機跟隨)
渲染部分:OnBecameVisible/Invisible(相機中可見或不可見)----OnGUI(執(zhí)行鍵盤和鼠標事件)
對象銷毀和退出場景:OnDisable(不激活對象)----OnDestroy(銷毀游戲對象)-----OnApplicationQuit(游戲場景退出)
7、協程
協程功能類似與多線程,StartCoroutine()-----yield WaitForSecond/WWW-----StopCoroutine()
協程背后通過迭代器實現,主要實現了兩個接口,IEnumerator和IEnumerable,接口的方法重要有三個方法,MoveNext()---Current--Dispose()
8、對象池
對象池用于存放反復被調用的資源,比如射擊類游戲中的子彈。
9、物體旋轉和添加力
Transform.Rotate()、Rigidbody.AddForce()
10、Unity、Mono和.Net的關系
Unity是在.Net平臺上運行,只能在window下運行,而mono是實現跨平臺的工具。
11、uinty支持的腳本語言
c#、javascripts、Boo。
12、Mipmap
Mipmap是一種貼圖,目的是為加快渲染速度和減少圖形鋸齒。
13、鏈條關節(jié)
Hinge Joint用一個鏈條模擬連接兩個物體,在一定距離后會產生拉力。
14、射線檢測碰撞體
Ray類,從一個點發(fā)射一條無邊的線,遇到碰撞體后停止發(fā)射。
15、動畫類型
關節(jié)動畫:模型分成多個獨立的部分;骨骼動畫:各個部分用關節(jié)相連;單一網格模型動畫:插值運算實現動畫效果。
16、Unity資源處理種類
Resources:只讀,不能動態(tài)修改,不要放動態(tài)更新的資源,資源讀取Resources.Load();
StreamingAssets:完全打包,主要存放二進制文件,用WWW類讀??;
AssetBundle:Prefab封裝成AssetBundle,加載資源的方式有Resources類和WWW類。
17、Unity Socket網絡編程
一般采用可靠傳輸協議TCP,服務器創(chuàng)建兩個Socket,一個用于監(jiān)聽,另一個用于接受和發(fā)送消息;客戶端連接,接受和發(fā)送消息。
18、著色器是什么,有哪幾種?
著色器模擬物體表面發(fā)生的事情,著色器包括頂點著色器、片元著色器、無光照著色器、表面著色器。
19、著色器和材質的聯系
shader是材質當中的一個重要的屬性,可以通過自己定義的shader來更好的渲染物體表面。
20、渲染管線
數據收集(紋理,材質)----頂點著色器獲取圖形的2D坐標---頂點后處理進行坐標變換,圖形基元裁剪---圖形基元收集
---柵格化接受三角形及其數據,形成潛在的像素和片源----片源著色器----輸入數據。
21、無光照著色器結構
頂點數據收集結構體---頂點函數(著色器)---頂點數據通過柵格化處理后的數據---片源函數---最終的顏色
22、光照著色器中漫反射和鏡面反射的計算過程
漫反射計算過程:1)通過法線向量和光線入射方向求點積,得到光照強度;2)將光線顏色*光線強度*物體的表面顏色,就是我們最后看到的顏色;
鏡面反射計算過程:1)光線的入射方向和法線求出反射方向;2)將反射方向和眼睛的入射方向求點積;3)以點積為底,指數是光照強度求出看到的顏色。
23、后處理堆
Post-process volume游戲對象和profile屬性結合,對相機渲染進行后處理,包括顆粒、暗角、景深
24、CPU優(yōu)化
1)DrawCalls,它是CUP調用底層圖形接口,每一次渲染都需要調用一次接口,可以將兩個紋理不同的材質打包成圖集,進行同時渲染實現批處理;
2)物理組件,選擇合適的Fixed Timestep,盡量不使用網格碰撞器(mesh collider);
3)盡量減少GC的觸發(fā),盡量不要使用foreach(),產生的垃圾多,最好不用LINQ命令和字符串連接,他們都是GC收集的目標;
4)代碼優(yōu)化,不頻繁使用GetComponent,善于使用OnBecameVisible和內建數組,以及ref關鍵字。
25、GPU優(yōu)化
1)減少繪制(頂點)的數目,使用較少的材質數目和使用紋理圖集,使用共享材質Renderer.sharedMaterial代替Renderer.material,
使用光照紋理(lightmap)而非實時燈光;
2)優(yōu)化顯存帶寬,OpenGL壓縮圖片,使用MipMap增加了等比例的小圖,即增加了內存空間,但是渲染質量比壓縮好很多。
26、四元組的作用
Quaternion對旋轉的角度進行計算。
27、Unity制作動畫效果
windows---Animation---錄制---AddKeys
28、Unity狀態(tài)機
Animator在動畫制作完之后產生的文件,也就是生成的狀態(tài)機,可以增加其狀態(tài)和變遷。
29、Unity導航尋路
windows--Navigation,選擇navigation static,進行bake烘焙,為目標選擇一個導航代理Nav Mesh Agent,對其進行掛載腳本。
30、貼圖和精靈的區(qū)別
Sprite作為UI精靈使用,Texture作為模型貼圖使用。
二、C#面向對象語言
1、多線程
一個進程中經常有多個線程,主線程和Thread構造出線程為前臺線程,用IsBackgound()設置為后臺線程
通過委托構造出的線程為后天線程,BeginInvoke(),前臺線程關閉后后臺線程隨著關閉,Lock用于解決線程之間的爭奪資源,Console.ReadLine()用于后臺線程讀取完畢。
2、值類型和引用類型
值類型:結構(Int、Float、Bool)和枚舉,一般存儲在線程棧上,棧的存取速度優(yōu)于堆,并且可以共享,隨著方法的結束,存儲就也被釋放了。
引用類型: 類、接口、委托、字符串,一般存儲在托管堆上,對象存儲棧上,只要某個對象被引用了,這個對象的內存就不會被釋放。
3、裝箱和拆箱
裝箱:值類型轉化為引用類型
拆箱:引用類型轉化為值類型
4、unity中的值類型和引用類型
值類型:Vector、Color、Ray、Touch
引用類型:Object、Component、MonoBehaviour
5、ArrayList和List的區(qū)別
1、ArrayList不安全,將所有的類型都當做Object類型處理,很有可能出現類型不匹配的問題;
2、ArrayList在數據插入和獲取的會有裝箱和拆箱操作,而導致額外的開銷。
6、public、protected、private、internal區(qū)別
public:所有的類都可以訪問;protected:該類及其子類可以訪問;private:僅僅該類可以訪問;internal:該類的程序集中訪問。
7、接口和抽象類的區(qū)別
1、一個類可以繼承多個接口,但只能繼承一個抽象類;
2、接口中的方法都是抽象方法,而且必須全部實現;抽象類可以實現部分方法,不一定全部是抽象方法。
8、ref和out
ref和out都是傳遞參數的關鍵字,ref傳遞的參數必須初始化,out傳遞的參數必須在函數內賦值;
ref傳遞的是引用,一個函數需要有多個返回值時用out比較方便。
9、委托
委托最主要的是傳遞的不是變量而是一個方法,和c++中的方法指針比較相似
自定義委托步驟:1)定義委托;2)委托實例化;3)注冊委托;4)委托調用
系統(tǒng)委托有Action(注冊的方法無返回值),Func(注冊的方法有返回值),Predicate(返回值為bool類型)
10、匿名和lamda表達式
匿名將委托的實例化和委托方法合并;lamda表達式是對委托方法的進一步簡化。
11、委托和事件
委托可以作為方法的參數,事件不可以;委托可以聲明一個局部變量,事件不可以;事件其實是委托的一個特殊化的實例。
12、StringBuilder類和String的區(qū)別
String類字符串是不可變的,StringBuilder是拼接字符串。
13、反射原理
反射可以讀取程序集中代碼的內容(dll和exe文件),反射中常用Type類和Assembly類獲取命名空間、類名以及類的方法、屬性、字段。
GetMethod(),GetProperties(),GetFiled(),據說反射還可以得到private方法。
14、sealed關鍵字
如果是在類前聲明,這個類是不可以被繼承;如果是在方法前聲明,這個方法是不可以被重寫的。
15、序列化和反序列化
序列化:對象轉化為字節(jié)流的過程,首先一個對象應該被確定為可以被序列化(Serializable)---定義文件流(FileStream)--使用格式化器BinaryFormatter進行序列化和反序列化;
反序列化:字節(jié)流轉化為對象的過程。
16、Unity3D中序列化注意事項
最好為public或者使用了[SerializeField]定制特性、自定義引用類型和值類型且必須使用[Serializable]定制特性、基元類型。
17、特性
系統(tǒng)特性:Obsolete特性檢查方法是否過時,Conditional特性實現條件編譯,比如測試方法但是需要宏定義;
Unity中的特性:DllImport特性應用于方法,Serializable特性應用于類型,自定義特性和拓展編輯器。
18、拓展方法
對于定義好的類進行拓展,比如String和Int類,但是拓展類和方法都應該是靜態(tài)的。
19、正則表達式
正則表達式判斷字符串更加簡潔,但是需要懂一些語法,最主要的類是Regex
string strPattarn = @"^\d*KaTeX parse error: Expected 'EOF', got '\d' at position 15: ";可以理解為^最開始為數字\̲d̲直到*最后仍然為數字。
string strPattern = @"^\w*$"; \w判斷用戶輸入有字母,數字,下劃線,漢字,其他都是非法的
20、構造函數和析構函數
構造函數:創(chuàng)建對象時初始化對象;
析構函數:用于釋放一個對象,有垃圾回收器控制,清理資源。
21、單例模式
單例模式要求某個類只要一個實例,比如一臺打印機連接了多個計算機,可以將其設計為單例模式,防止兩臺計算機同時打??;
構造函數設置為private,實例化對象instance;通過public的getInstance方法為外部獲取實例提供接口。
22、觀察者模式
一個事件發(fā)生變化,其他相關是事件都發(fā)生變化,一般用委托進行注冊方法。
當然還有一些其他設計模式,包括簡單工廠模式、代理模式、適配器模式、裝飾器模式、迭代器模式等。
23、Hashtable類和HashMap
Hashtable和HashMap都是存儲鍵值對,Hashtable多線程安全,HashMap多線程不安全;HashMap null可以作為鍵,而Hashtable不可以。
24、HashMap和TreeMap
HashMap和TreeMap同樣是存儲鍵值對,HashMap是無序的,而TreeMap是有序的存儲。
相關文章
- 這篇文章主要介紹了網易游戲面試題與參考答案,整理分析了網易游戲招聘面試中遇到的專業(yè)題、邏輯題與游戲題,以及相應的參考答案,具有一定參考借鑒價值,需要的朋友可以參考下2020-01-10
- 這篇文章主要介紹了網易游戲面試經歷,總結記錄了網易游戲招聘面試所經歷的流程及各個面試環(huán)節(jié)所遇到的問題,需要的朋友可以參考下2019-09-30
- 這篇文章主要介紹了騰訊游戲客戶端開發(fā)面試經歷,整理記錄了騰訊游戲開發(fā)面試中遇到的各種問題與心得體會,需要的朋友可以參考下2019-09-24
- 這篇文章主要介紹了網易游戲的面試題與參考答案,總結了網易游戲入職面試中的常見問題及對應參考答案,涉及線程、數據庫、爬蟲、以及各種算法的Python實現技巧,需要的朋友可2019-09-23
- 這篇文章主要介紹了騰訊游戲客戶端開發(fā)面試經歷,總結分享了騰訊游戲客戶端開發(fā)面試所涉及到的考點與注意事項,需要的朋友可以參考下2019-09-20
- 這篇文章主要介紹了最全阿里面試題合集118道+答案(阿里技術專家分享),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2020-01-10
- 這篇文章主要介紹了新浪java面試題與參考答案,總結分析了新浪java面試網絡編程題目與參考答案,涉及java socket通信客戶端與服務器端功能實現技巧,需要的朋友可以參考下2020-01-09
- 這篇文章主要介紹了網易社招面試流程與經驗,總結分析了網易社招面試主要流程,以及遇到的各種問題,并給出了相應的參考意見,需要的朋友可以參考下2020-01-08
- 這篇文章主要介紹了最全的BAT大廠面試題整理(小結),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2020-01-07
- 這篇文章主要介紹了工作一年后騰訊社招面試經歷與經驗,總結分析了筆者參與騰訊社招面試過程中所遇到的問題與相關經驗總結,需要的朋友可以參考下2020-01-06