unity3d面試題摘選(全),unity3d面試題摘選

來源:互聯網
上載者:User

unity3d面試題摘選(全),unity3d面試題摘選

本人總結的一些Unity3d高頻面試題目,希望可以協助到大家。

限於個人水平有限,只附上一些參考答案。

=======================================

資料結構和演算法很重要,圖形學也很重要!

大的遊戲公司很看重個人基礎、綜合能力;也有的看重你實際工作能力,看你的Demo。

 

高頻問答的問題:

一.什麼是渲染管道?

是指在顯示器上為了顯示出映像而經過的一系列必要操作。

渲染管道中的很多步驟,都要將幾何物體從一個座標系中變換到另一個座標系中去。

主要步驟有:

本地座標->視圖座標->背面裁剪->光照->裁剪->投影->視圖變換->光柵化。

 

二.如何最佳化記憶體?

有很多種方式,例如

1.壓縮內建類庫;

2.將暫時不用的以後還需要使用的物體隱藏起來而不是直接Destroy掉;

3.釋放AssetBundle佔用的資源;

4.降低模型的片面數,降低模型的骨骼數量,降低貼圖的大小;

5.使用光照貼圖,使用多層次細節(LOD),使用著色器(Shader),使用預設(Prefab)。

三、動態載入資源的方式?(有時候也問區別,具體請百度)

1.Resources.Load();

2.AssetBundle

四、什麼是協同程式?

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

五、你用過哪些外掛程式?

(最好多熟悉幾個外掛程式,問的時候好回答)

====================================================

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

1.使用本身的GUI;

2.把攝像機的Projection(投影)值調為Orthographic(正交投影),不考慮z軸;

3.使用2d外掛程式,如:2DToolKit;

 

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

碰撞器有碰撞的效果,IsTrigger=false,可以調用OnCollisionEnter/Stay/Exit函數;

觸發器沒有碰撞效果,IsTrigger=true,可以調用OnTriggerEnter/Stay/Exit函數。

 

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

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

 

4.CharacterController和Rigidbody的區別?

CharacterController內建膠囊碰撞器,裡麵包含有剛體的屬性;

Rigidbody就是剛體,使物體帶有剛體的特徵。

 

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

三個階段

1.OnCollisionEnter

2.OnCollisionStay

3.OnCollisionExit

 

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

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

 

7.什麼叫做鏈條關節?

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

 

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

Transform.Rotate()

 

9.物體圍繞某點旋轉使用的函數?

Transform.RotateAround()

 

10.Unity3d提供了一個用於儲存和讀取資料的類(PlayerPrefs),請列出儲存和讀取整形資料的函數

PlayerPrefs.SetInt()         PlayerPrefs.GetInt()

 

11.Unity3d提供了幾種光源類型,分別是哪幾種?

四種。

平行光:Directional Light         點光源:Point Light   

聚光燈:Spot Light                   地區光源:Area Light

 

12.Unity3d指令碼從喚醒到銷毀有著一套比較完整的生命週期,請列出系統內建的幾個重要的方法。

Awake——>Start——>Update——>FixedUpdate——>LateUpdate——>OnGUI——>Reset——>OnDisable——>OnDestroy

 

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

FixedUpdate,每固定幀繪製時執行一次,和Update不同的是FixedUpdate是渲染幀執行,如果你的渲染效率低下的時候FixedUpdate調用次數就會跟著下降。FixedUpdate比較適用於物理引擎的計算,因為是跟每幀渲染有關。Update就比較適合做控制。

 

14.移動攝像機的動作放在哪個系統函數中,為什麼放在這個函數中?

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

 

15.當遊戲中需要頻繁建立一個物體時,我們需要怎樣做能夠節省記憶體?

使用預製物體對象Prefab,然後複製建立。

 

16.在情境中放置多個Camera並同時處於活動狀態會發生什嗎?

遊戲介面可以看到很多攝像機的混合。

 

17.請描述Prefab的作用,並描述如何在行動裝置的環境下恰當的使用它?

Prefab在執行個體化的時候用到,主要用於經常會用到的物體,屬性方便修改。

 

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

使用Destroy()方法;

 

19.請簡述Unity3d下如何安全的在不同工程間遷移asset資料,請列舉出三種方法?

1.可以把assets目錄和Library目錄一起遷移

2.匯出包

3.用Unity帶的assets Server功能

 

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

主要有關節動畫、骨骼動畫、單一網格模型動畫(主要畫面格動畫)。

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

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

單一網格模型動畫由一個完整的網格模型構成,在動畫序列的主要畫面格裡記錄各個頂點的原位置及其改變數,然後插值運算實現動畫效果,角色動畫較真實。

    

21.請描述為什麼Unity3d中會發生在組件上出現資料丟失的情況

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

 

22.alpha blend工作原理

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

 

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

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

 

24.Lod是什麼,優缺點是什嗎?

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

 

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

 

26.Vertex Shader是什麼,怎麼計算?

頂點著色器

 

27.MipMap是什麼,作用?

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

 

28.機試:二選一

1.用代碼實現第三角色控制器

2.實現吊機吊物體的功能

 

29.反向旋轉動畫的方法是什嗎?

 

30.碰撞檢測需要物體具備什麼屬性?

 

31.擷取、增加、刪除群組件的命令分別是什嗎?

擷取:GetComponent

增加:AddComponent

刪除:Destroy

 

32.Animation.CrossFade命令作用是:(C)

A.動畫放大   B.動畫轉換   C.動畫的淡入為其他動畫

 

33.Application.loadLevel命令為:(A)

A.載入關卡   B.非同步載入關卡  C.載入動作

 

34.調試記錄到控制台的命令是什嗎?

Debug.Log();

 

35.編輯器類存放路徑是什嗎?

工程目錄下的Assets/Editor檔案夾下。

 

36.使用原生GUI建立一個可以拖動的視窗命令是什嗎?

GUI.DragWindow();

 

37.localPosition與Position的使用區別?

localPosition:自身位置,相對於父級的變換的位置。

Position:在全局座標transform的位置

 

38.意義連線

Mathf.Round                   插值

Mathf.Clamp                   四捨五入

Mathf.Lerp                      限制

 

39.寫一個計時器工具,從整點開始計時,格式為:00:00:00

 

40.寫出Animation的五個方法

 

41.怎麼拿到一個對象上指令碼的方法

GameObject.GetComponent<>();

 

42.上機題:用滑鼠實現在情境中拖動物體,用滑鼠滾輪實現縮放(用一個Cube即可)。

 

43.請簡述向量的點乘,向量的叉乘以及向量歸一化的幾何意義?

點乘的幾何意義是:計算兩個向量之間的夾角,以及在某一方向上的投影;

叉乘的幾何意義是:建立垂直於平面,三角形,或者多邊形的向量

更多精彩請點擊 http://www.gopedu.com/


unity3D學誰可以教我完成裡面的功可以 分數全給了

這都是虛擬現實最基本的東西吧,不難,你是要思路?拖動圖片改變牆體顏色就是換材質球或者Maintexture,拖動圖片變成房間裡面的模型就是執行個體化模型,模型多就外部載入,少就resource動態載入,也可以直接情境中執行個體化,只是耗記憶體,點圖片,就要做好執行個體化的準備,放開滑鼠執行個體化,邏輯簡單,代碼也不難,這個視頻對於學生來說做的很不錯了,對於做虛擬現實的專業人員來說還需要提高,效果不行,用unity做這個不難,有哪些地方不明白的再問吧,我只給你思路,我這邊有類似工程只是不方便拿出來,建議去unity3D百度貼吧隨時提問,我每天都在,好多人會幫你解決的,祝你成功!
 
unity3d怎匯入已經做好的動畫?以及怎控制動畫的播放詳細過程

Unity3D中 Edit>>Project Setting>>Quality Setting 有個 Blend Weights
是配置一個頂點最多受幾個骨骼影響的,最大為4,預設為2
在做模型的時候要注意這個
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.