Unity面试题加强版之二《unity编辑器基础》
Unity面試題加強版之二Unity編輯器基礎
unity超全面試題,掌握輕輕松松拿Offer,碼住學習
40.請描述游戲動畫有幾種,以及其原理。
主要有關節動畫、單一網格模型動畫(關鍵幀動畫)、骨骼動畫。關節動畫把角色分成若干獨立部分,一個部分對應一個網格模型,部分的動畫連接成一個整體的動畫,角色比較靈活 Quake2 中使用了這種動畫。單一網絡模型動畫由一個完整的網格模型構成, 在動畫序列的關鍵幀里記錄各個頂點的原位置及其改變量,然后插值運算實現動畫效果,角色動畫較真實。骨骼動畫,廣泛應用的動畫方式,集成了以上兩個方式的優點,骨骼按角色特點組成一定的層次結構,由關節相連,可做相對運動,皮膚作為單一網格蒙在骨骼之外,決定角色的外觀。皮膚網格每一個頂點都會受到骨骼的影響,從而實現完美的動畫。(骨骼動畫是由關節動畫發展而來的,如今基本都使用骨骼動畫來實現角色動畫)
41.物體發生碰撞的必要條件
物體 A 必須帶有(collider+rigidbody)或者 CharacterController,另一個物體也必須至少帶有 collider
42.GUI與UGUI的優點和缺點
GUI不方便控制,UGUI所見即所得,方便控制。GUI使用在生命周期函數OnGUI中使用,腳本來書寫控制。UGUI使用Canvas畫布和事件系統。UGUI適應屏幕上比GUI簡單。
43.一個場景放置多個carmera并同時處于活動狀態,會發生什么
實際看到的畫面由多個 camera 的畫面組成,由 depth、Clear Flag、Culling Mask 都會影響最終合成效果。
44.使用過哪些第三方插件?
一、界面制作 推薦:NGUI
二、2D 游戲制作 推薦:2D Toolkit //[?tu:lk?t] 工具包,工具箱
三、可視化編程 推薦:PlayMaker
四、插值插件 推薦:iTween,HOTween
五、路徑搜尋 推薦:Simple Path
六、美術及動畫制作 推薦:RageSpline,Smooth Moves
七、畫面增強 推薦:Bitmap2Material,Strumpy Shader Editor
八、攝像機管理 推薦:Security Camera
九、資源包 推薦:Nature Pack
十、造路插件 EasyRoads3D
45.U3D 中用于記錄節點空間幾何信息的組件名稱,及其父類名稱
Transform 父類是 Component
46.為何大家都在移動設備上尋求 U3D 原生 GUI 的替代方案
不美觀,OnGUI 很耗費時間,使用不方便 ,DrawCall
47.請簡述如何在不同分辨率下保持 UI 的一致性
NGUI 很好的解決了這一點,屏幕分辨率的自適應性,原理就是計算出屏幕的寬高比跟原來的預設的屏幕分辨率求出一個對比值,然后修改攝像機的 size。
48.為什么 dynamic font 在 unicode 環境下優于 static font
Unicode 是國際組織制定的可以容納世界上所有文字和符號的字符編碼方案。使用動態字體時,Unity 將不會預先生成一個與所有字體的字符紋理。當需要支持亞洲語言或者較大的字體的時候,若使用正常紋理,則字體的紋理將非常大。
49.Render 的作用?描述 MeshRender 和 SkinnedMeshRender 的關系與不同
Mesh 就是指模型的網格(同名組件是用于調整網格屬性的),MeshFilter 一般是用于獲得模型網格的組件,而 MeshRender 是用于把網格渲染出來的組件
50.簡述 SkinnedMesh 的實現原理
Skinned Mesh 中文一般稱作骨骼蒙皮動畫.這種動畫中包含骨骼( Bone )和蒙皮 (Skinned Mesh) 兩個部分, Bone 的層次結構和關節動畫類似, Mesh 則和關節動畫不同:關節動畫中是使用多個分散的 Mesh, 而 Skinned Mesh 中 Mesh 是一個整體,也就是說只有一個 Mesh, 實際上如果沒有骨骼讓 Mesh 運動變形, Mesh 就和靜態模型一樣了。Skinned Mesh 技術的精華在于蒙皮,所謂的皮并不是模型的貼圖。而是 Mesh 本身,蒙皮是指將 Mesh 中的頂點附著(綁定)在骨骼之上,而且每個頂點可以被多個骨骼所控制,這樣在關節處的頂點由于同時受到父子骨骼的拉扯而改變位置就消除了裂縫。可以理解為具有蒙皮信息的 Mesh 或可當做皮膚用的 Mesh ,這個皮膚就是 Mesh 。而為了有皮膚功能, Mesh 還需要蒙皮信息,即 Skin 數據,沒有 Skin 數據就是一個普通的靜態 Mesh 了。 Skin 數據決定頂點如何綁定到骨骼上。頂點的 Skin 數據包括頂點受哪些骨骼影響以及這些骨骼影響該頂點時的權重 (weight) ,另外對于每塊骨骼還需要骨骼偏移矩陣 (BoneOffsetMatrix) 用來將頂點從 Mesh 空間變換到骨骼空間。
51.Prefab 的作用?如何在移動環境的設備下恰當地使用它?
在游戲運行時實例化,prefab 相當于一個模版,對你已有的素材、腳本、參數做一個默認配置,以便于以后修改,同時 prefab 打包的內容簡化了導出的操作,便于團隊的交流。
52.如何銷毀一個 UnityEngine.Object 及其子類
Destory();
53.為什么Unity3D 中會發生在組件上出現數據丟失的情況?
組件上綁定的對象被刪除了
54.MeshCollider 和其他 Collider 的一個主要不同點?
Meshcollider 是基于頂點的。建議還是用 boxcollider,boxcollider 本身是基于算法,沒有面的概念。
55.當一個細小的高速物體撞向另一個較大的物體時,會出現什么情況?如何避免?
穿透(碰撞檢測失敗)(碰撞體變大,FixedUpdate, 代碼限制)
56.MeshRender 中 material 和 sharedmaterial 的區別?
修改 sharedMaterial 將改變所有物體使用這個材質的外觀,并且也改變儲存在工程里的材質設置。
不推薦修改由 sharedMaterial 返回的材質。如果你想修改渲染器的材質,使用 material替代。
57.用 u3d 實現 2d 游戲,有幾種方式?
1.利用引擎自帶的 GUI和2D系統
2.把攝像機設為 Orthographic,用面片作為 2d 元素
3.利用第三方插件:NGUI、2dToolkit
58.u3d 中碰撞器和觸發器的區別?
collider 碰撞器會有碰撞的效果,IsTrigger = false, 可以調用OnCollisionEnter/Stay/Exit 函數trigger 觸發器沒有碰撞效果, isTrigger = true,可以調用 OnTriggerEnter/stay/exit 函數
59.CharacterController 和 Rigidbody 的區別
Rigidbody 具有完全真實物理的特性, 而 CharacterController 可以說是受限的 Rigidbody,具有一定的物理效果但不是完全真實的。
60.什么叫做鏈條關節
Hinge Joint ,他可以模擬兩個物體間用一根鏈條連接在一起的情況,能保持兩個物體在一個固定距離內部相互移動而不產生作用力,但是達到固定距離后就會產生拉力。 (簡單說就是彈簧)
61.unity3d 提供了幾種光源,分別是什么
平行光:Directional Light
聚光燈:Spot Light
點光源:Point Light
區域光源:Area Light(只用于烘培)
62.u3d 下如何安全的在不同工程遷移 asset 數據
方法 1,可以把 assets 目錄和 Library 目錄一起遷移,
方法 2,導出包
方法 3,用 unity 帶的 assets server 功能
63.Unity3d 中的碰撞器和觸發器的區別?
觸發器只是碰撞器身上的一個屬性,碰撞器是觸發器的載體。
碰撞器有碰撞的效果,IsTrigger=false,可以調用OnCollisionEnter/Stay/Exit 函數;
觸發器沒有碰撞效果,IsTrigger=true,可以調用OnTriggerEnter/Stay/Exit 函數。
a.如果不想讓碰撞檢測影響物體移動但是又想檢測到碰撞這時用到觸發器(Trigger)
b.觸發器用來檢測一個物件是否經過空間中的某個區域
64.動畫層(Animation Layers)的作用是什么?
動畫層作為一個具有層級動畫編輯概念的工具, 可以用來制作和處理任何類型的動畫
65.Material 和 Physic Material 區別?
PhysicMaterial 物理材質:物理材質描述,如何處理物體碰撞(摩擦,彈性)。Material 材質(材質類)為了獲得一個對象使用的材質,可以使用 Renderer.materia 屬性
66.什么是導航網格(NavMesh)?
一種用于實現自動尋路的網格
67.請簡述 NGUI 中 Panel 和 Anchor 的作用
Anchor 包含 UIAnchor 腳本。 UIAnchor 的功能是把對象錨定在屏幕的邊緣 (左上, 左中,左下,上,中,下,右上,右中,右下),或縮放物體使其匹配屏幕的尺寸
Panel 對象有 UIPanel 腳本,UIPanel 是一個容器,它將包含所有 UI 小部件,并負責將所包含的部件組合優化,以減少繪制命令的調用。
68.Unity 攝像機有幾種工作方式,分別是什么?
perspective透視攝像機和orthographic正交攝像機
69.LayerMask.NameToLayer()這個方法有什么作用?
LayerMask 的使用是按位操作的,LayerMask.NameToLayer(“Players”) 返回該 Layer的編號。
70.NGUI與UGUI的優點和缺點
71.是否熟悉UGUI
熟悉,之前在一些項目用UGUI做過界面,和NGUI很相似。
72.會寫插件么?
了解過,但在公司這塊用的比較少,沒怎么寫過,不過我能很快學會。
73.UGUI和NGUI的區別?為什么不使用NGUI?
1、uGUI的Canvas 有世界坐標和屏幕坐標,NGUI有2D和3D區別。
2、uGUI的Image可以使用material。
3、UGUI通過Mask來裁剪,而NGUI通過Panel的Clip
4、NGUI的渲染前后順序是通過Widget的Depth,而UGUI渲染順序根據Hierarchy的順序,越下面渲染在頂層。
7、UGUI沒有Atlas一說,使用Sprite Packer。
8、UGUI的Navgation在Scene中能可視化。
9、UGUI的事件需要實現事件系統的接口,但寫起來也算簡單。
10、NGUI功能更豐富一些
之所以不用NGUI是因為UGUI是Unity官方推出的,慢慢會成為制作UI的主要工具,配套的插件也越來越多,但是具體使用NGUI還是UGUI還要看公司這邊,因為這兩個我都用過一段時間。
74.UI用的是NGUI還是UGUI?
兩個都用過。之前用的NGUI后來用了UGUI。
75.Unity3d中static batching和dynamic batching 各有什么用?
Dynamic Batching不需要任何操作,只要共享材質(即使是不同的Mesh模型也可以),就會自動被合并。可以自由移動旋轉。但有以下使用要求:
(1) 模型文件共計點數不超過900。(重復使用同一個Mesh不計)
(2) 單個物體可以不超過300點,Shader可以有法線UV。 但如果Shader使用了 UV0 UV1兩套UV,或者Tangent切線的話,單個物體只能不超過180點
(3)游戲對象使用相同模型和材質時,只有相同縮放(即xyz等比縮放,浮點尾數可以有細微差)的會被合并。如
(1,1,1)與(1,1,1)
(2,2,2)與(2,2,2)
(0.5,0.5,0.5)與 (0.5,0.5,0.5)
(2,2,2)與(2,2,2.0001)
(4)場景烘焙:烘焙后同材質將不會被烘焙。lightmap 有隱藏的材質參數:offset/scale, 所以使用lightmap的物體不會被合并
(5)Shader不能使用多Pass:多Pass的Shader會破壞Dynamic Batching
Static Batching
原理:運行游戲后將一組游戲對象的多個模型會被動態合并為1個。這組游戲對象所有使用同一材質的在一個DrawCall來完成。這些游戲對象運行后無法移動縮放旋轉。但是Drawcall一定是最大化合并的,并且不受動態合并的諸多限制(見下文詳述)。
注意:即使物體都使用了同樣的模型,在batch后每一個物體都會創建一份模型對應的geometry,在新的Combined Mesh里。所以過多的batch會增加內存占用。例如場景里的樹群就不適合Static Batch,而適合動態合并。
實現方法:
(1)MeshRenderer勾選Batching Static: 勾了即可
(2)代碼中使用UnityEngine.StaticBatchingUtility實現(可以在任何平臺調用):
1)將所有要合并的靜態物體(不須勾Batching Static)放入統一一個root
2)StaticBatchingUtility.Combine(root); 之后就合并好了!
區別:勾選Batching Static:完全自動合并,在MeshFilter里顯示的是 Combined Mesh(root:scene)。合并后不能移動
StaticBatchingUtility:合并到一個游戲對象下。合并后可以移動父節點游戲對象"
76.Unity3d中Awake和Start 誰先執行,update和fixedUpdate 有什么區別?
Awake先執行。Update是在每次渲染新的一幀的時候才會調用,FixedUpdate,是在固定的時間間隔執行,不受游戲幀率(fps)的影響 ,FixedUpdate的時間間隔可以在項目設置中更改,Edit->Project Setting->time 找到Fixed timestep。就可以修改了
77.Unity引擎中以下對Mesh Renderer組件描述正確的是哪一項? C
A.Mesh Renderer組件決定了場景中游戲對象的位置,旋轉和縮放
B.為場景中的某一游戲對象增添物理的特性,需要為該游戲對象添加Mesh Renderer組件
C.Mesh Renderer組件從Mesh Filter組件中獲得網格信息,病根據物體的Transform組件所定義的位置進行渲染
D.Mesh Renderer是從網格資源中獲取網格信息的組件
78.哪種實時光源是 Unity 中沒有的?D
A:點光源
B:方向光
C:聚光燈
D:日光燈
79.如何在 Unity 中創建地形系統?A
A:Terrain->Create Terrain
B:Component->Create Terrain
C:Asset->Create Terrain
D:Windows->Create Terrain
80.以下哪種操作步驟可以在場景中添加“Wind Zone”?B
A:Terrain -> Wind Zone
B:GameObject -> Create Other -> Wind Zone
C:Component -> Physics -> Wind Zone
D:Assets -> Create -> Wind Zone
81.在 Unity 編輯器中創建一個 Directional Light,以下步驟正確的是? B
A:Edit -> Rendering Setting -> Directional Light
B:GameObject -> Create Other -> Directional Light
C:Component -> Rendering -> Directional Light
D:Assets -> Directional Light
82.下列哪一項不屬于 Camera 中的“Clear Flags”?D
A:Skybox
B:Solid Color
C:Depth Only
D:Background
83.以下哪種腳本語言是 Unity 編輯器所不支持的? D
A:JavaScript
B:C#
C:Boo
D:Perl
84.對于 Prefab,以下說法錯誤的是? D
A:Prefab 資源可以在項目中多次重復使用
B:由 Prefab 實例出的 GameObject,其在 Hierarchy 視圖中表現為藍色
C:Prefab 上的組件信息一經改變,其實例出的 GameObject 也會自動改變
D:實例出的 GameObject 上的組件信息一經改變,其對應的 Prefab 也會自動改變
85.下面哪種做法可以打開 Unity 的 Asset Store? A
A:Windows -> Asset Store
B:Edit -> Asset Store
C:File -> Asset Store
D:Assets -> Asset Store
86.在哪個面板中可以修改物體的空間屬性,如位置、朝向、大小等?B
A:Project
B:Inspector
C:Hierarchy
D:Toolbar
87.如何為一個 Asset 資源設定一個 Label,從而能夠方便準確的搜索到? D
A:在 Project 窗口中選中一個 Asset,右鍵->Create->Label
B:在 Project 窗口中選中一個 Asset,右鍵->Add Label
C:在 Project 窗口中選中一個 Asset,在 Inspector 窗口中點擊添加 Label 的圖標
D:在 Project 窗口中選中一個 Asset,在 Inspector 窗口中點擊按鈕“Add Label”
88.Mecanim 系統中,Body Mask 的作用是?D
A:指定身體的某一部分是否參與骨骼動畫
B:指定身體的某一部分是否參與物理模擬
C:指定身體的某一部分是否可以輸出骨骼信息
D:指定身體的某一部分是否參與渲染
89.以下哪種操作步驟可以打開 Unity 編輯器的 Lightmapping 視圖? C
A:File --> Lightmapping
B:Assets --> Lightmapping
C:Windows --> Lightmapping
D:Component --> Lightmapping
90.下列關于光照貼圖,說法錯誤的是? C
A:使用光照貼圖比使用實時光源渲染要快
B:可以降低游戲內存消耗
C:可以增加場景真實感
D:多個物體可以使用同一張光照貼圖
91.如何為物體添加光照貼圖所使用的 UV? B
A:不用添加,任何時候都會自動生成
B:更改物體導入設置,勾選“Generate Lightmap UVs”
C:更改物體導入設置,勾選“Swap UVs”
D:更改物體導入設置,在 UVs 選項中選擇“Use Lightmaps”
92.在哪個模塊下可以修改 Render Path? A
A:Camera
B:Light
C:Render Settings
D:Project Settings->Quality
93.以下哪項技術不是目前 Unity 所支持的 Occlusion Culling 技術? D
A:PVS only
B:PVS and dynamic objects
C:Automatic Portal Generation
D:Dynamic Only
94.關于 Vector3 的 API,以下說法正確的是? C
A:Vector3.normalize 可以獲取一個三維向量的法線向量;
B:Vector3.magnitude 可以獲取一個三維向量的長度;
C:Vector3.forward 與 Vector3(0,0,1)是一樣的意思;
D:Vector3.Dot(向量 A,向量 B)是用來計算向量 A 與向量 B 的叉積
95.下列那些選項不是網格層屬性的固有選項? A
A:Default
B:Walkable
C:Not Walkable
D:Jump
96.什么是導航網格(NavMesh)? D
A:一種用于描述相機軌跡的網格
B:一種被優化過的物體網格
C:一種用于物理碰撞的網格
D:一種用于實現自動尋路的網格
97.以下哪一個選項不屬于Unity引擎所支持的視頻格式文件 D
A.后綴名為mov的文件
B.后綴名為mpg的文件
C.后綴名為avi的文件
D. 后綴名為swf的文件
98.Unity引擎使用的是左手坐標系還是右手坐標系? A
A.左手坐標系
B.右手坐標系
C.可以通過Project Setting 切換左右手坐標系
D.可以通過Reference切換左右手坐標系
99.以下哪組攝像機中Normalized View Port Rect的數值設置可以使得攝像機顯示的畫面位于1280*720分辨率的屏幕畫面的右上角 D
A. x = 640, Y = -360 , W = 360,H = 360
B. x =640, Y = -360 , W = 360,H = 360
C. x =0.5, Y = 0 , W = 0.5,H = 0.5
C. x =0.5, Y = 0.5 , W = 0.5,H = 0.5
100.以下哪個組件是任何GameObject必備的組件 B
A.Mesh Renderer
B.Trtansform
C.Game Object
D.Main camera
101.在Unity編輯器中,停止對Game視圖進行預覽播放的快捷鍵操作是以下哪一項 A
A.CTRL/CMD + P
B.CTRL/CMD + Shift +P
C.CTRL/CMD + Alt +P
D.CTRL/CMD + S
102.在Unity引擎中,Depth屬性值最大的攝像機會比Depth屬性值小的攝像機更晚繪制么? A
A.是
B.否
103.下列選項中有關Animator的說法錯誤的是 D
A.Animasstor是Unity引擎內置組件
B.任何一個具有動畫狀態機功能的GameObject都需要一個Animator組件
C.它主要用于角色行為的設置,包括StateMachines,混合Blend trees以及通過腳本控制的事件
D.Animator同Animation組件的用法是相同的
104.下列哪個視圖主要用于顯示和編輯所選游戲對象或資源的相關屬性 C
A.Scene
B.Project
C.Inspector
D.Hierarchy
105.簡述Prefab的使用?Editor下動態創建Prefab的方式 "u3d里動態創建對象,需要使用prefab而創建的時候 MonoBehaviour.Instantiate (GameObject orignal) 需要一個作為原型的對象。三種方式獲得prefab對象。
方式一:使用腳本的public字段
直接在Project視圖里找到做好的prefab,將其拖拽到指定腳本的指定public GameObject 字段。
方式二:Resource類
1、在Assets目錄下的任意位置創建一個名為resources的文件夾,將做好的prefab放到這個文件夾下,path形式如下: Assets…\resources\prefabName.prefab
2、在代碼里使用Resource.Load 或 LoadAll 函數,獲得原型對象。指定prefab時不需要指定擴展名(.prefab),形式如下:GameObject prototype = Resource.Load(“prefabName”) as GameObject; 可以有任意數量的resources文件夾,懷疑是Resource類初始化的時候會搜集所有resources文件夾里的文件名。
方式三:加載到場景
一般我們制作Perfab的時候,都是在Hierarchy視圖里創建GameObject,然后再搭建Prefab。事后根據需要刪除這個原始的GameObject。因此我們可以保留這個GameObject,然后在場景加載后Find這個對象(代碼方式),或者使用腳本public字段(編輯器方式)
106.NGUI的自適應性是?如果此時屏幕比例變化,屏幕出現黑邊怎么辦?(注:改變NGUI和UGUI的Fixed size with Screen不可行)
NGUI根目錄的UIRoot組件自帶了根據高度自適應分辨率的功能。
Scaling Style屬性可選擇三種不同的縮放策略。
PixelPerfect 完美像素:直接顯示設定好的像素。當屏幕高度低于minimum Height時按比例縮小,當屏幕高度大于maximum Height時按比例擴大。
FixedSize 按比例縮放:在設定好的基礎上,直接按比例縮放。
FixedSizeOnMobiles 合體版,android和ios為FixedSize方式,其它按照PixelPerfect方式。
總結
以上是生活随笔為你收集整理的Unity面试题加强版之二《unity编辑器基础》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 立创开源 | 户外太阳能自动灌溉系统
- 下一篇: HTML显示姓名加学号,补充博士学位信息