unity游戏中提示信息如何实现_Unity编辑器操作面试题集锦(上)
1.請(qǐng)描述游戲動(dòng)畫(huà)有幾種,以及其原理。
答案:主要有關(guān)節(jié)動(dòng)畫(huà)、單一網(wǎng)格模型動(dòng)畫(huà)(關(guān)鍵幀動(dòng)畫(huà))、骨骼動(dòng)畫(huà)。
關(guān)節(jié)動(dòng)畫(huà)把角色分成若干獨(dú)立部分,一個(gè)部分對(duì)應(yīng)一個(gè)網(wǎng)格模型,部分的動(dòng)畫(huà)連接成一個(gè)整
體的動(dòng)畫(huà),角色比較靈活 Quake2 中使用了這種動(dòng)畫(huà)。
單一網(wǎng)絡(luò)模型動(dòng)畫(huà)由一個(gè)完整的網(wǎng)格模型構(gòu)成, 在動(dòng)畫(huà)序列的關(guān)鍵幀里記錄各個(gè)頂點(diǎn)的原位
置及其改變量,然后插值運(yùn)算實(shí)現(xiàn)動(dòng)畫(huà)效果,角色動(dòng)畫(huà)較真實(shí)。
骨骼動(dòng)畫(huà),廣泛應(yīng)用的動(dòng)畫(huà)方式,集成了以上兩個(gè)方式的優(yōu)點(diǎn),骨骼按角色特點(diǎn)組成一定的
層次結(jié)構(gòu),由關(guān)節(jié)相連,可做相對(duì)運(yùn)動(dòng),皮膚作為單一網(wǎng)格蒙在骨骼之外,決定角色的外觀。
皮膚網(wǎng)格每一個(gè)頂點(diǎn)都會(huì)受到骨骼的影響,從而實(shí)現(xiàn)完美的動(dòng)畫(huà)。(骨骼動(dòng)畫(huà)是由關(guān)節(jié)動(dòng)畫(huà)
發(fā)展而來(lái)的,如今基本都使用骨骼動(dòng)畫(huà)來(lái)實(shí)現(xiàn)角色動(dòng)畫(huà))
2.物體發(fā)生碰撞的必要條件
答案:物體 A 必須帶有(collider+rigidbody)或者 CharacterController,另一個(gè)物體也必須至少帶有 collider。
3.GUI與UGUI的優(yōu)點(diǎn)和缺點(diǎn)
答案:GUI不方便控制,UGUI所見(jiàn)即所得,方便控制。GUI使用在生命周期函數(shù)OnGUI中使用,腳本來(lái)書(shū)寫(xiě)控制。UGUI使用Canvas畫(huà)布和事件系統(tǒng)。UGUI適應(yīng)屏幕上比GUI簡(jiǎn)單。
4.一個(gè)場(chǎng)景放置多個(gè)carmera并同時(shí)處于活動(dòng)狀態(tài),會(huì)發(fā)生什么
答案:實(shí)際看到的畫(huà)面由多個(gè) camera 的畫(huà)面組成,由 depth、Clear Flag、Culling Mask 都會(huì)影響最終合成效果。
5.U3D 中用于記錄節(jié)點(diǎn)空間幾何信息的組件名稱(chēng),及其父類(lèi)名稱(chēng)
答案:Transform 父類(lèi)是 Component。
6.請(qǐng)簡(jiǎn)述如何在不同分辨率下保持 UI 的一致性
答案:NGUI 很好的解決了這一點(diǎn),屏幕分辨率的自適應(yīng)性,原理就是計(jì)算出屏幕的寬高比跟原來(lái)的預(yù)設(shè)的屏幕分辨率求出一個(gè)對(duì)比值,然后修改攝像機(jī)的 size。
7.為什么 dynamic font 在 unicode 環(huán)境下優(yōu)于 static font
答案:Unicode 是國(guó)際組織制定的可以容納世界上所有文字和符號(hào)的字符編碼方案。
使用動(dòng)態(tài)字體時(shí),Unity 將不會(huì)預(yù)先生成一個(gè)與所有字體的字符紋理。當(dāng)需要支持亞洲語(yǔ)言
或者較大的字體的時(shí)候,若使用正常紋理,則字體的紋理將非常大。
8.Render 的作用?描述 MeshRender 和 SkinnedMeshRender 的關(guān)系與不同
答案:Mesh 就是指模型的網(wǎng)格(同名組件是用于調(diào)整網(wǎng)格屬性的),MeshFilter 一般是用于獲得模型網(wǎng)格的組件,而 MeshRender 是用于把網(wǎng)格渲染出來(lái)的組件
9.簡(jiǎn)述 SkinnedMesh 的實(shí)現(xiàn)原理
答案:Skinned Mesh 中文一般稱(chēng)作骨骼蒙皮動(dòng)畫(huà).這種動(dòng)畫(huà)中包含骨骼( Bone )和蒙皮 (Skinned Mesh) 兩個(gè)部分, Bone 的層次結(jié)構(gòu)和關(guān)節(jié)動(dòng)畫(huà)類(lèi)似, Mesh 則和關(guān)節(jié)動(dòng)畫(huà)不同:關(guān)節(jié)動(dòng)畫(huà)中是使用多個(gè)分散的 Mesh, 而 Skinned Mesh 中 Mesh 是一個(gè)整體,也就是說(shuō)只有一個(gè) Mesh, 實(shí)際上如果沒(méi)有骨骼讓 Mesh 運(yùn)動(dòng)變形, Mesh 就和靜態(tài)模型一樣了。Skinned Mesh 技術(shù)的精華在于蒙皮,所謂的皮并不是模型的貼圖。而是 Mesh 本身,蒙皮是指將 Mesh 中的頂點(diǎn)附著(綁定)在骨骼之上,而且每個(gè)頂點(diǎn)可以被多個(gè)骨骼所控制,這樣在關(guān)節(jié)處的頂點(diǎn)由于同時(shí)受到父子骨骼的拉扯而改變位置就消除了裂縫。可以理解為具有蒙皮信息的 Mesh 或可當(dāng)做皮膚用的 Mesh ,這個(gè)皮膚就是 Mesh 。而為了有皮膚功能, Mesh 還需要蒙皮信息,即 Skin 數(shù)據(jù),沒(méi)有 Skin 數(shù)據(jù)就是一個(gè)普通的靜態(tài) Mesh 了。 Skin 數(shù)據(jù)決定頂點(diǎn)如何綁定到骨骼上。頂點(diǎn)的 Skin 數(shù)據(jù)包括頂點(diǎn)受哪些骨骼影響以及這些骨骼影響該頂點(diǎn)時(shí)的權(quán)重 (weight) ,另外對(duì)于每塊骨骼還需要骨骼偏移矩陣 (BoneOffsetMatrix) 用來(lái)將頂點(diǎn)從 Mesh 空間變換到骨骼空間。
10.Prefab 的作用?如何在移動(dòng)環(huán)境的設(shè)備下恰當(dāng)?shù)厥褂盟?#xff1f;
答案:在游戲運(yùn)行時(shí)實(shí)例化,prefab 相當(dāng)于一個(gè)模版,對(duì)你已有的素材、腳本、參數(shù)做一個(gè)默認(rèn)配置,以便于以后修改,同時(shí) prefab 打包的內(nèi)容簡(jiǎn)化了導(dǎo)出的操作,便于團(tuán)隊(duì)的交流。
11.如何銷(xiāo)毀一個(gè) UnityEngine.Object 及其子類(lèi)
答案:調(diào)用Destory()方法。
12.為什么 Unity3D 中會(huì)發(fā)生在組件上出現(xiàn)數(shù)據(jù)丟失的情況?
答案:組件上綁定的對(duì)象被刪除了。
13.如何安全的在不同工程間安全地遷移 asset 數(shù)據(jù)?三種方法
答案:1.將 Assets 目錄和 ProjectSetting 目錄一起遷移。
2.導(dǎo)出包。
3.使用版本控制器Git/SVN。
14.MeshCollider 和其他 Collider 的一個(gè)主要不同點(diǎn)?
答案:Meshcollider 是基于頂點(diǎn)的。建議還是用 boxcollider,boxcollider 本身
是基于算法,沒(méi)有面的概念。
15.當(dāng)一個(gè)細(xì)小的高速物體撞向另一個(gè)較大的物體時(shí),會(huì)出現(xiàn)什么情況?如何避免?
答案:穿透(碰撞檢測(cè)失敗)(避免方法:碰撞體變大,FixedUpdate, 代碼限制)
16.MeshRender 中 material 和 sharedmaterial 的區(qū)別?
答案:修改 sharedMaterial 將改變所有物體使用這個(gè)材質(zhì)的外觀,并且也改變儲(chǔ)存在工程里的材質(zhì)設(shè)置。
不推薦修改由 sharedMaterial 返回的材質(zhì)。如果你想修改渲染器的材質(zhì),使用 material替代。
17.用 u3d 實(shí)現(xiàn) 2d 游戲,有幾種方式?
答案:1.利用引擎自帶的 GUI和2D系統(tǒng)。
2.把攝像機(jī)設(shè)為 Orthographic,用面片作為 2d 元素。
3.利用第三方插件:NGUI、2dToolkit。
18.u3d 中碰撞器和觸發(fā)器的區(qū)別?
答案:1.collider 碰撞器會(huì)有碰撞的效果,IsTrigger = false,可以調(diào)用。
2.OnCollisionEnter/Stay/Exit 函數(shù)。
3.trigger 觸發(fā)器沒(méi)有碰撞效果,isTrigger = true,可以調(diào)用 OnTriggerEnter/stay/exit 函
數(shù)。
19.CharacterController 和 Rigidbody 的區(qū)別
答案:Rigidbody 具有完全真實(shí)物理的特性, 而 CharacterController 可以說(shuō)是受限的 Rigidbody,具有一定的物理效果但不是完全真實(shí)的。
20.什么叫做鏈條關(guān)節(jié)
答案:Hinge Joint ,他可以模擬兩個(gè)物體間用一根鏈條連接在一起的情況,能保持兩個(gè)物體在一個(gè)固定距離內(nèi)部相互移動(dòng)而不產(chǎn)生作用力,但是達(dá)到固定距離后就會(huì)產(chǎn)生拉力。 (簡(jiǎn)單說(shuō)就是彈簧).
21.unity3d 提供了幾種光源,分別是什么
答案:平行光:Directional Light
聚光燈:Spot Light
點(diǎn)光源:Point Light
區(qū)域光源:Area Light(只用于烘培)
22.u3d 下如何安全的在不同工程遷移 asset 數(shù)據(jù)
答案:方法 1,可以把 assets 目錄和 Library 目錄一起遷移,
方法 2,導(dǎo)出包
方法 3,用 unity 帶的 assets server 功能
總結(jié)
以上是生活随笔為你收集整理的unity游戏中提示信息如何实现_Unity编辑器操作面试题集锦(上)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 189 元,OPPO Enco Air3
- 下一篇: 递归循环一个无限极数组_理解递归、尾调用