Unity3D

第一部分

1.請簡述值類型與引用類型的區(qū)別答:區(qū)別:

1.值類型存儲(chǔ)在內(nèi)存棧中千所,引用類型數(shù)據(jù)存儲(chǔ)在內(nèi)存堆中廊鸥,而內(nèi)存單元中存放的是堆中存放的地址。

2.值類型存取快,引用類型存取慢。

3.值類型表示實(shí)際數(shù)據(jù)嗡载,引用類型表示指向存儲(chǔ)在內(nèi)存堆中的數(shù)據(jù)的指針和引用。

4.棧的內(nèi)存是自動(dòng)釋放的悲酷,堆內(nèi)存是.NET中會(huì)由GC來自動(dòng)釋放嘶卧。

5.值類型繼承自System.ValueType,引用類型繼承自System.Object。

可參考http://www.cnblogs.com/JimmyZhang/archive/2008/01/31/1059383.html

2.C#中所有引用類型的基類是什么

答:引用類型的基類是System.Object值類型的基類是System.ValueType

同時(shí)俯萎,值類型也隱式繼承自System.Object

3.請簡述ArrayListList的主要區(qū)別

答:ArrayList存在不安全類型‘(ArrayList會(huì)把所有插入其中的數(shù)據(jù)都當(dāng)做Object來處理)

裝箱拆箱的操作(費(fèi)時(shí))

List是接口傲宜,ArrayList是一個(gè)實(shí)現(xiàn)了該接口的類,可以被實(shí)例化夫啊。

4.請簡述GC(垃圾回收)產(chǎn)生的原因函卒,并描述如何避免?

答:GC回收堆上的內(nèi)存

避免:1)減少new產(chǎn)生對象的次數(shù)

2)使用公用的對象(靜態(tài)成員)

3)將String換為StringBuilder

5.請描述Interface與抽象類之間的不同

答:抽象類表示該類中可能已經(jīng)有一些方法的具體定義撇眯,但接口就是公公只能定義各個(gè)方法的界面 报嵌,不能具體的實(shí)現(xiàn)代碼在成員方法中。

類是子類用來繼承的熊榛,當(dāng)父類已經(jīng)有實(shí)際功能的方法時(shí)該方法在子類中可以不必實(shí)現(xiàn)锚国,直接引用父類的方法,子類也可以重寫該父類的方法玄坦。

實(shí)現(xiàn)接口的時(shí)候必須要實(shí)現(xiàn)接口中所有的方法血筑,不能遺漏任何一個(gè)。

參考http://www.cnblogs.com/seapub/archive/2012/08/08/2628433.html

6.下列代碼在運(yùn)行中會(huì)產(chǎn)生幾個(gè)臨時(shí)對象煎楣?

答:其實(shí)在C#中第一行是會(huì)出錯(cuò)的(Java中倒是可行)云挟。應(yīng)該這樣初始化:

string b = new string(new char[]{'a','b','c'});

7.下列代碼在運(yùn)行中會(huì)發(fā)生什么問題?如何避免转质?

答:會(huì)產(chǎn)生運(yùn)行時(shí)錯(cuò)誤园欣,因?yàn)閒oreach是只讀的。不能一邊遍歷一邊修改休蟹。

8.請簡述關(guān)鍵字Sealed用在類聲明和函數(shù)聲明時(shí)的作用

答:類聲明時(shí)可防止其他類繼承此類沸枯,在方法中聲明則可防止派生類重寫此方法日矫。

9.請簡述privatepublic绑榴,protected哪轿,internal的區(qū)別

答:

public:對任何類和成員都公開,無限制訪問

private:僅對該類公開

protected:對該類和其派生類公開

internal:只能在包含該類的程序集中訪問該類

protected internal:protected + internal

10.反射的實(shí)現(xiàn)原理翔怎?

答:審查元數(shù)據(jù)并收集關(guān)于它的類型信息的能力窃诉。

參考http://blog.163.com/xuanmingzhiyou@yeah/blog/static/1424776762011612115124188/

反射個(gè)人認(rèn)為,就是得到程序集中的屬性和方法赤套。

實(shí)現(xiàn)步驟:

1,導(dǎo)入using System.Reflection;

2飘痛,Assembly.Load("程序集")加載程序集,返回類型是一個(gè)Assembly

3,foreach (Type type in assembly.GetTypes())

{

string t = type.Name;

}

得到程序集中所有類的名稱

4,Type type = assembly.GetType("程序集.類名");獲取當(dāng)前類的類型

5,Activator.CreateInstance(type);創(chuàng)建此類型實(shí)例

6,MethodInfo mInfo = type.GetMethod("方法名");獲取當(dāng)前方法

7,mInfo.Invoke(null,方法參數(shù));11. .NetMono的關(guān)系容握?

答:Mono官網(wǎng)主頁

Mono is a software platform designed to allow developers to easily create

cross platform applications. Sponsored by Xamarin, Mono is an open source

implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime.

mono是.net的一個(gè)開源跨平臺(tái)工具宣脉,就類似java虛擬機(jī),java本身不是跨平臺(tái)語言剔氏,但運(yùn)行在虛擬機(jī)上就能夠?qū)崿F(xiàn)了跨平臺(tái)塑猖。.net只能在windows下運(yùn)行,mono可以實(shí)現(xiàn)跨平臺(tái)跑谈跛,

可以運(yùn)行于linux羊苟,Unix,Mac OS等感憾。

12.簡述Unity3D支持的作為腳本的語言的名稱

答:Unity的腳本語言基于Mono的.Net平臺(tái)上運(yùn)行践险,可以使用.NET庫,這也為XML吹菱、數(shù)據(jù)庫、正則表達(dá)式等問題提供了很好的解決方案彭则。

Unity里的腳本都會(huì)經(jīng)過編譯鳍刷,他們的運(yùn)行速度也很快。這三種語言實(shí)際上的功能和運(yùn)行速度是一樣的俯抖,區(qū)別主要體現(xiàn)在語言特性上输瓜。

JavaScript:和網(wǎng)頁中常用的JavaScript不一樣,它編譯后的運(yùn)行速度很快芬萍,語法方面也會(huì)有不少區(qū)別尤揣。

C#

Boo:可以看做是Python語言的變種,又糅合了Ruby和C#的特性柬祠,它是靜態(tài)類型語言

13.Unity3D是否支持寫成多線程程序北戏?如果支持的話需要注意什么?

答:參考http://www.unitymanual.com/3821.html

僅能從主線程中訪問Unity3D的組件漫蛔,對象和Unity3D系統(tǒng)調(diào)用

支持:如果同時(shí)你要處理很多事情或者與Unity的對象互動(dòng)小可以用thread,否則使用coroutine嗜愈。

注意:C#中有l(wèi)ock這個(gè)關(guān)鍵字,以確保只有一個(gè)線程可以在特定時(shí)間內(nèi)訪問特定的對象

14.Unity3D的協(xié)程和C#線程之間的區(qū)別是什么旧蛾?

答:http://blog.csdn.net/kongbu0622/article/details/8775037

多線程程序同時(shí)運(yùn)行多個(gè)線程 ,而在任一指定時(shí)刻只有一個(gè)協(xié)程在運(yùn)行蠕嫁,并且這個(gè)正在運(yùn)行的協(xié)同程序只在必要時(shí)才被掛起锨天。除主線程之外的線程無法訪問Unity3D的對象、組件剃毒、方法病袄。

沒有多線程的概念,不過unity也給我們提供了StartCoroutine(協(xié)同程序)和LoadLevelAsync(異步加載關(guān)卡)后臺(tái)加載場景的方法赘阀。StartCoroutine為什么叫協(xié)同程序呢益缠,所謂協(xié)同,就是當(dāng)你在StartCoroutine的函數(shù)體里處理一段代碼時(shí)纤壁,利用yield語句等待執(zhí)行結(jié)果左刽,這期間不影響主程序的繼續(xù)執(zhí)行,可以協(xié)同工作酌媒。而LoadLevelAsync則允許你在后臺(tái)加載新資源和場景欠痴,所以再利用協(xié)同,你就可以前臺(tái)用loading條或動(dòng)畫提示玩家游戲未卡死秒咨,同時(shí)后臺(tái)協(xié)同處理加載的事宜asynchronous[e ?? s ?? kr ? n ? s] .synchronous同步喇辽。

15.U3D中用于記錄節(jié)點(diǎn)空間幾何信息的組件名稱,及其父類名稱

答:Transform父類是Component

16.簡述四元數(shù)的作用雨席,四元數(shù)對歐拉角的優(yōu)點(diǎn)菩咨?

答:四元數(shù)用于表示旋轉(zhuǎn)

相對歐拉角的優(yōu)點(diǎn):

1)能進(jìn)行增量旋轉(zhuǎn)

2)避免萬向鎖

3)給定方位的表達(dá)方式有兩種,互為負(fù)(歐拉角有無數(shù)種表達(dá)方式)

17.向量的點(diǎn)乘陡厘、叉乘以及歸一化的意義抽米?

1)點(diǎn)乘描述了兩個(gè)向量的相似程度,結(jié)果越大兩向量越相似糙置,還可表示投影

2)叉乘得到的向量垂直于原來的兩個(gè)向量

3)標(biāo)準(zhǔn)化向量:用在只關(guān)系方向云茸,不關(guān)心大小的時(shí)候

18.矩陣相乘的意義及注意點(diǎn)

用于表示線性變換:旋轉(zhuǎn)、縮放谤饭、投影标捺、平移、仿射

注意矩陣的蠕變:誤差的積累

19.為何大家都在移動(dòng)設(shè)備上尋求U3D原生GUI的替代方案

不美觀揉抵,OnGUI很耗費(fèi)時(shí)間亡容,使用不方便,DrawCall

20.請簡述如何在不同分辨率下保持UI的一致性

NGUI很好的解決了這一點(diǎn)冤今,屏幕分辨率的自適應(yīng)性闺兢,原理就是計(jì)算出屏幕的寬高比跟原來的預(yù)設(shè)的屏幕分辨率求出一個(gè)對比值,然后修改攝像機(jī)的size戏罢。

原生GUI http://unity3d.9ria.com/?p=2587

NGUI http://blog.csdn.net/mfc11/article/details/17681429

21.為什么dynamic fontunicode環(huán)境下優(yōu)于static font

Unicode是國際組織制定的可以容納世界上所有文字和符號(hào)的字符編碼方案列敲。

使用動(dòng)態(tài)字體時(shí)阱佛,Unity將不會(huì)預(yù)先生成一個(gè)與所有字體的字符紋理。當(dāng)需要支持亞洲語言或者較大的字體的時(shí)候戴而,若使用正常紋理凑术,則字體的紋理將非常大。

22.Render的作用所意?描述MeshRenderSkinnedMeshRender的關(guān)系與不同

A renderer is what makes an object appear on the screen淮逊。

Mesh就是指模型的網(wǎng)格(同名組件是用于調(diào)整網(wǎng)格屬性的),MeshFilter一般是用于獲得模型網(wǎng)格的組件扶踊,而MeshRender是用于把網(wǎng)格渲染出來的組件泄鹏,

23.簡述SkinnedMesh的實(shí)現(xiàn)原理

http://blog.csdn.net/n5/article/details/3105872

24.在場景中放置多個(gè)Camera并同時(shí)處于活動(dòng)狀態(tài)會(huì)發(fā)生什么?

答:游戲界面可以看到很多攝像機(jī)的混合

25.Prefab的作用秧耗?如何在移動(dòng)環(huán)境的設(shè)備下恰當(dāng)?shù)厥褂盟?/b>

答:Prefab在實(shí)例化的時(shí)候用到备籽,主要用于經(jīng)常會(huì)用到的物體,屬性方便修改

http://www.cnblogs.com/88999660/archive/2013/03/15/2961663.html

26.如何銷毀一個(gè)UnityEngine.Object及其子類

答:Destory

27.為什么Unity3D中會(huì)發(fā)生在組件上出現(xiàn)數(shù)據(jù)丟失的情況分井?

答:組件上綁定的對象被刪除了

28.如何安全的在不同工程間安全地遷移asset數(shù)據(jù)车猬?三種方法

答:

將Assets目錄和Library目錄一起遷移

導(dǎo)出包

用unity自帶的assets Server功能

29.MeshCollider和其他Collider的一個(gè)主要不同點(diǎn)?

答:Meshcollider再快也是基于V3頂點(diǎn)~~建議還是用boxcollider尺锚,boxcollider本身是基于算法珠闰,沒有面的概念。

30.當(dāng)一個(gè)細(xì)小的高速物體撞向另一個(gè)較大的物體時(shí)瘫辩,會(huì)出現(xiàn)什么情況伏嗜?如何避免?

穿透(碰撞檢測失敺パ帷)

http://forum.unity3d.com/threads/3353-collision-detection-at-high-speed

(碰撞體變大承绸,F(xiàn)ixedUpdate,代碼限制)

31.OnEnableAwake挣轨、Start運(yùn)行時(shí)的發(fā)生順序军熏?哪些可能在同一個(gè)對象周期中反復(fù)的發(fā)生?

答:Awake -》OnEnable-》Start

OnEnable在同一周期中可以反復(fù)地發(fā)生

http://answers.unity3d.com/questions/217941/onenable-awake-start-order.html

32.請簡述OnBecameVisibleOnBecameInvisible的發(fā)生時(shí)機(jī)刃唐,以及這一對回調(diào)函數(shù)的意義?

答:當(dāng)物體是否可見切換之時(shí)界轩』ⅲ可以用于只需要在物體可見時(shí)才進(jìn)行的計(jì)算。

33.Unity3D如何獲知場景中需要加載的數(shù)據(jù)浊猾?

答:題目是獲取的意思抖甘?

Resource.Load

AssetBundle

34.MeshRendermaterialsharedmaterial的區(qū)別?

修改sharedMaterial將改變所有物體使用這個(gè)材質(zhì)的外觀葫慎,并且也改變儲(chǔ)存在工程里的材質(zhì)設(shè)置衔彻。

不推薦修改由sharedMaterial返回的材質(zhì)薇宠。如果你想修改渲染器的材質(zhì),使用material替代艰额。

第二部分

1.請描述游戲動(dòng)畫有哪幾種澄港,以及其原理。

主要有關(guān)節(jié)動(dòng)畫柄沮、單一網(wǎng)格模型動(dòng)畫(關(guān)鍵幀動(dòng)畫)回梧、骨骼動(dòng)畫。

關(guān)節(jié)動(dòng)畫把角色分成若干獨(dú)立部分祖搓,一個(gè)部分對應(yīng)一個(gè)網(wǎng)格模型狱意,部分的動(dòng)畫連接成一個(gè)整體的動(dòng)畫,角色比較靈活Quake2中使用了這種動(dòng)畫拯欧。

單一網(wǎng)絡(luò)模型動(dòng)畫由一個(gè)完整的網(wǎng)格模型構(gòu)成详囤,在動(dòng)畫序列的關(guān)鍵幀里記錄各個(gè)頂點(diǎn)的原位置及其改變量,然后插值運(yùn)算實(shí)現(xiàn)動(dòng)畫效果镐作,角色動(dòng)畫較真實(shí)藏姐。

骨骼動(dòng)畫,廣泛應(yīng)用的動(dòng)畫方式滑肉,集成了以上兩個(gè)方式的優(yōu)點(diǎn)包各,骨骼按角色特點(diǎn)組成一定的層次結(jié)構(gòu),由關(guān)節(jié)相連靶庙,可做相對運(yùn)動(dòng)问畅,皮膚作為單一網(wǎng)格蒙在骨骼之外,決定角色的外觀六荒。皮膚網(wǎng)格每一個(gè)頂點(diǎn)都會(huì)受到骨骼的影響护姆,從而實(shí)現(xiàn)完美的動(dòng)畫。(骨骼動(dòng)畫是由關(guān)節(jié)動(dòng)畫發(fā)展而來的掏击,如今基本都使用骨骼動(dòng)畫來實(shí)現(xiàn)角色動(dòng)畫)

2.alpha blend工作原理

實(shí)際顯示顏色=前景顏色*Alpha/255 +背景顏色*(255-Alpha)/255

3.寫光照計(jì)算中的diffuse的計(jì)算公式

實(shí)際光照強(qiáng)度I=環(huán)境光(Iambient) +漫反射光(Idiffuse) +鏡面高光(Ispecular);

環(huán)境光:Iambient= Aintensity* Acolor; (Aintensity表示環(huán)境光強(qiáng)度卵皂,Acolor表示環(huán)境光顏色)

漫反射光:Idiffuse = Dintensity*Dcolor*N.L;

(Dintensity表示漫反射強(qiáng)度,Dcolor表示漫反射光顏色砚亭,N為該點(diǎn)的法向量灯变,L為光源向量)

鏡面反射光:Ispecular = Sintensity*Scolor*(R.V)^n;

(Sintensity表示鏡面光照強(qiáng)度,Scolor表示鏡面光顏色捅膘,R為光的反射向量添祸,V為觀察者向量,n稱為鏡面光指數(shù))

4.lod是什么寻仗,優(yōu)缺點(diǎn)是什么

LOD技術(shù)即Levels of Detail的簡稱刃泌,意為多細(xì)節(jié)層次。LOD技術(shù)指根據(jù)物體模型的節(jié)點(diǎn)在顯示環(huán)境中所處的位置和重要度,決定物體渲染的資源分配耙替,降低非重要物體的面數(shù)和細(xì)節(jié)度亚侠,從而獲得高效率的渲染運(yùn)算。

優(yōu)點(diǎn):可根據(jù)距離動(dòng)態(tài)地選擇渲染不同細(xì)節(jié)的模型

缺點(diǎn):加重美工的負(fù)擔(dān)俗扇,要準(zhǔn)備不同細(xì)節(jié)的同一模型硝烂,同樣的會(huì)稍微增加游戲的容量。

5.兩種陰影判斷的方法工作原理

陰影由兩部分組成:本影與半影

本影:景物表面上那些沒有被光源直接照射的區(qū)域(全黑的輪廓分明的區(qū)域)

半影:景物表面上那些被某些特定光源直接照射但并非被所有特定光源直接照射的區(qū)域(半明半暗區(qū)域)

求陰影區(qū)域的方法:做兩次消隱過程

一次對每個(gè)光源進(jìn)行消隱狐援,求出對于光源而言不可見的區(qū)域L钢坦;

一次對視點(diǎn)的位置進(jìn)行消隱,求出對于視點(diǎn)而言可見的面S啥酱;

shadow area= L∩S

陰影分為兩種:自身陰影和投射陰影

自身陰影:因物體自身的遮擋而使光線照射不到它上面的某些可見面

工作原理:利用背面剔除的方法求出爹凹,即假設(shè)視點(diǎn)在點(diǎn)光源的位置。

投射陰影:因不透明物體遮擋光線使得場景中位于該物體后面的物體或區(qū)域受不到光照照射而形成的陰影

工作原理:從光源處向物體的所有可見面投射光線镶殷,將這些面投影到場景中得到投影面禾酱,再將這些投影面與場景中的其他平面求交得出陰影多邊形,保存這些陰影多邊形信息绘趋,然后再按視點(diǎn)位置對場景進(jìn)行相應(yīng)處理得到所要求的視圖(利用空間換時(shí)間颤陶,每次只需依據(jù)視點(diǎn)位置進(jìn)行一次陰影計(jì)算即可,省去了一次消隱過程)

若是動(dòng)態(tài)光源此方法就無效了陷遮。

5.Vertex Shader是什么滓走?怎么計(jì)算?

頂點(diǎn)著色器是一段執(zhí)行在GPU上的程序帽馋,用來取代fixed pipeline中的transformation和lighting搅方,Vertex Shader主要操作頂點(diǎn)。

Vertex Shader對輸入頂點(diǎn)完成了從local space到homogeneous space(齊次空間)的變換過程绽族,homogeneous space即projection space的下一個(gè)space姨涡。在這其間共有world transformation, view transformation和projection transformation及l(fā)ighting幾個(gè)過程。

6.MipMap是什么吧慢?作用涛漂?

在三維計(jì)算機(jī)圖形的貼圖渲染中有一個(gè)常用的技術(shù)被稱為Mipmapping。為了加快渲染速度和減少圖像鋸齒检诗,貼圖被處理成由一系列被預(yù)先計(jì)算和優(yōu)化過的圖片組成的文件,這樣的貼圖被稱為MIP map或者mipmap匈仗。

7.用u3d實(shí)現(xiàn)2d游戲,有幾種方式逢慌?

1.利用引擎自帶的GUI

2.把攝像機(jī)設(shè)為Orthographic悠轩,用面片作為2d元素

3.利用第三方插件:NGUI、2dToolkit

8.u3d中碰撞器和觸發(fā)器的區(qū)別涕癣?

collider碰撞器會(huì)有碰撞的效果哗蜈,IsTrigger = false,可以調(diào)用OnCollisionEnter/Stay/Exit函數(shù)

trigger觸發(fā)器沒有碰撞效果,isTrigger = true,可以調(diào)用OnTriggerEnter/stay/exit函數(shù)

9.物體發(fā)生碰撞的必要條件

物體A必須帶有(collider+rigidbody)或者CharacterController坠韩,另一個(gè)物體也必須至少帶有collider

10.CharacterController和Rigidbody的區(qū)別

Rigidbody具有完全真實(shí)物理的特性距潘,而CharacterController可以說是受限的Rigidbody,具有一定的物理效果但不是完全真實(shí)的只搁。

11.物體發(fā)生碰撞時(shí)音比,有幾個(gè)階段,分別對應(yīng)的函數(shù)

三個(gè)階段氢惋,OnCollisionEnter/Stay/Exit函數(shù)

12.u3d中洞翩,幾種施加力的方式,描述出來

rigidbody.AddForce/AddForceAtPosition焰望,都是rigidbody的成員函數(shù)

13.什么叫做鏈條關(guān)節(jié)

Hinge Joint骚亿,他可以模擬兩個(gè)物體間用一根鏈條連接在一起的情況,能保持兩個(gè)物體在一個(gè)固定距離內(nèi)部相互移動(dòng)而不產(chǎn)生作用力熊赖,但是達(dá)到固定距離后就會(huì)產(chǎn)生拉力来屠。(簡單說就是彈簧)

14.物體自旋轉(zhuǎn)使用的函數(shù)叫什么

transform.Rotate

15.物體繞某點(diǎn)旋轉(zhuǎn)使用函數(shù)叫什么

transform.RotateAround

16.u3d提供了一個(gè)用于保存讀取數(shù)據(jù)的類,(playerPrefs)震鹉,請列出保存讀取整形數(shù)據(jù)的函數(shù)

PlayerPrefs.SetInt與PlayerPrefs.GetInt

17.unity3d提供了幾種光源俱笛,分別是什么

平行光:Directional Light

聚光燈:Spot Light

點(diǎn)光源:Point Light

區(qū)域光源:Area Light(只用于烘培)

18.unity3d從喚醒到銷毀有一段生命周期,請列出系統(tǒng)自己調(diào)用的幾個(gè)重要方法传趾。

Awake –>OnEnable –> Start–> Update –> FixedUpdate –> LateUpdate –> OnGUI –> Reset –> OnDisable –> OnDestroy

19.物理更新一般在哪個(gè)系統(tǒng)函數(shù)里迎膜?

FixedUpdate,每固定幀繪制時(shí)執(zhí)行一次浆兰,和update不同的是FixedUpdate是渲染幀執(zhí)行磕仅,如果你的渲染效率低下的時(shí)候FixedUpdate調(diào)用次數(shù)就會(huì)跟著下降。FixedUpdate比較適用于物理引擎的計(jì)算镊讼,因?yàn)槭歉繋秩居嘘P(guān)宽涌。Update就比較適合做控制。

20.移動(dòng)相機(jī)動(dòng)作在哪個(gè)函數(shù)里蝶棋,為什么在這個(gè)函數(shù)里卸亮。

LateUpdate,,是在所有update結(jié)束后才調(diào)玩裙,比較適合用于命令腳本的執(zhí)行兼贸。官網(wǎng)上例子是攝像機(jī)的跟隨,都是在所有update操作完才跟進(jìn)攝像機(jī)吃溅,不然就有可能出現(xiàn)攝像機(jī)已經(jīng)推進(jìn)了溶诞,但是視角里還未有角色的空幀出現(xiàn)。

21.當(dāng)游戲中需要頻繁創(chuàng)建一個(gè)物體對象時(shí)决侈,我們需要怎么做來節(jié)省內(nèi)存螺垢。

做一個(gè)pool,游戲開始時(shí)預(yù)先實(shí)例化足夠的數(shù)量,然后用的時(shí)候取不用的時(shí)候收回

22.一個(gè)場景放置多個(gè)camera并同時(shí)處于活動(dòng)狀態(tài)枉圃,會(huì)發(fā)生什么

實(shí)際看到的畫面由多個(gè)camera的畫面組成功茴,由depth、Clear Flag孽亲、Culling Mask都會(huì)影響最終合成效果坎穿。

23.簡述prefab的用處和環(huán)境

在游戲運(yùn)行時(shí)實(shí)例化,prefab相當(dāng)于一個(gè)模版返劲,對你已有的素材玲昧、腳本、參數(shù)做一個(gè)默認(rèn)配置篮绿,以便于以后修改孵延,同時(shí)prefab打包的內(nèi)容簡化了導(dǎo)出的操作,便于團(tuán)隊(duì)的交流亲配。

24.如何銷毀一個(gè)UnityEngine.Object以及其子類

Destroy

25.為什么u3d會(huì)出現(xiàn)組件上數(shù)據(jù)丟失的情況

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

26.u3d下如何安全的在不同工程遷移asset數(shù)據(jù)

方法1隙袁,可以把a(bǔ)ssets目錄和Library目錄一起遷移,

方法2弃榨,導(dǎo)出包

方法3菩收,用unity帶的assets server功能

第三部分

1.什么是渲染管道?

是指在顯示器上為了顯示出圖像而經(jīng)過的一系列必要操作鲸睛。 渲染管道中的很多步驟娜饵,都要將幾何物體從一個(gè)坐標(biāo)系中變換到另一個(gè)坐標(biāo)系中去。

主要步驟有:

本地坐標(biāo)->視圖坐標(biāo)->背面裁剪->光照->裁剪->投影->視圖變換->光柵化官辈。

2.如何優(yōu)化內(nèi)存箱舞?

有很多種方式,例如

1.壓縮自帶類庫拳亿;

2.將暫時(shí)不用的以后還需要使用的物體隱藏起來而不是直接Destroy掉晴股;

3.釋放AssetBundle占用的資源;

4.降低模型的片面數(shù)肺魁,降低模型的骨骼數(shù)量电湘,降低貼圖的大小鹅经;

5.使用光照貼圖寂呛,使用多層次細(xì)節(jié)(LOD),使用著色器(Shader)瘾晃,使用預(yù)設(shè)(Prefab)贷痪。

3、動(dòng)態(tài)加載資源的方式蹦误?(有時(shí)候也問區(qū)別劫拢,具體請百度)

1.Resources.Load();

2.AssetBundle

4肉津、什么是協(xié)同程序?

在主線程運(yùn)行時(shí)同時(shí)開啟另一段邏輯處理舱沧,來協(xié)助當(dāng)前程序的執(zhí)行阀圾。換句話說,開啟協(xié)程就是開啟一個(gè)線程狗唉。可以用來控制運(yùn)動(dòng)涡真、序列以及對象的行為分俯。

5、你用過哪些插件哆料?

(最好多熟悉幾個(gè)插件缸剪,問的時(shí)候好回答)

第四部分

1.反向旋轉(zhuǎn)動(dòng)畫的方法是什么?

2.碰撞檢測需要物體具備什么屬性东亦?

3.用代碼實(shí)現(xiàn)第三角色控制器

4.實(shí)現(xiàn)吊機(jī)吊物體的功能

5.獲取杏节、增加、刪除組件的命令分別是什么典阵?

獲确苡妗:GetComponent

增加:AddComponent

刪除:Destroy

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

A.動(dòng)畫放大B.動(dòng)畫轉(zhuǎn)換C.動(dòng)畫的淡入為其他動(dòng)畫

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

A.加載關(guān)卡B.異步加載關(guān)卡C.加載動(dòng)作

8.調(diào)試記錄到控制臺(tái)的命令是什么?

Debug.Log();

9.編輯器類存放路徑是什么壮啊?

工程目錄下的Assets/Editor文件夾下嫉鲸。

10.使用原生GUI創(chuàng)建一個(gè)可以拖動(dòng)的窗口命令是什么?

GUI.DragWindow();

11.localPosition與Position的使用區(qū)別歹啼?

localPosition:自身位置玄渗,相對于父級(jí)的變換的位置。Position:在世界坐標(biāo)transform的位置

12.意義連線

Mathf.Round四舍五入

Mathf.Clamp限制

Mathf.Lerp插值

13.寫一個(gè)計(jì)時(shí)器工具狸眼,從整點(diǎn)開始計(jì)時(shí)藤树,格式為:00:00:00

14.寫出Animation的五個(gè)方法

15.怎么拿到一個(gè)對象上腳本的方法

GameObject.GetComponent<>();

16.上機(jī)題:用鼠標(biāo)實(shí)現(xiàn)在場景中拖動(dòng)物體,用鼠標(biāo)滾輪實(shí)現(xiàn)縮放(用一個(gè)Cube即可)拓萌。

17.請簡述向量的點(diǎn)乘岁钓,向量的叉乘以及向量歸一化的幾何意義?

點(diǎn)乘的幾何意義是:計(jì)算兩個(gè)向量之間的夾角微王,以及在某一方向上的投影甜紫;

叉乘的幾何意義是:創(chuàng)建垂直于平面,三角形骂远,或者多邊形的向量囚霸;參考:http://blog.sina.com.cn/s/blog_9283b6f601017hfw.html

第五部分

1,在類的構(gòu)造函數(shù)前加上static會(huì)報(bào)什么錯(cuò)?為什么?

構(gòu)造函數(shù)格式為public+類名如果加上static會(huì)報(bào)錯(cuò)(靜態(tài)構(gòu)造函數(shù)不能有訪問修飾符)

原因:靜態(tài)構(gòu)造函數(shù)不允許訪問修飾符激才,也不接受任何參數(shù)拓型;

無論創(chuàng)建多少類型的對象额嘿,靜態(tài)構(gòu)造函數(shù)只執(zhí)行一次;

運(yùn)行庫創(chuàng)建類實(shí)例或者首次訪問靜態(tài)成員之前劣挫,運(yùn)行庫調(diào)用靜態(tài)構(gòu)造函數(shù)册养;

靜態(tài)構(gòu)造函數(shù)執(zhí)行先于任何實(shí)例級(jí)別的構(gòu)造函數(shù);

顯然也就無法使用this和base來調(diào)用構(gòu)造函數(shù)压固。

2球拦,C# String類型比stringBuilder類型的優(yōu)勢是什么?

如果是處理字符串的話,用string中的方法每次都需要?jiǎng)?chuàng)建一個(gè)新的字符串對象并且分配新的內(nèi)存地址帐我,而stringBuilder是在原來的內(nèi)存里對字符串進(jìn)行修改坎炼,所以在字符串處理方面還是建議用stringBuilder這樣比較節(jié)約內(nèi)存。但是string類的方法和功能仍然還是比stringBuilder類要強(qiáng)拦键。

string類由于具有不可變性(即對一個(gè)string對象進(jìn)行任何更改時(shí)谣光,其實(shí)都是創(chuàng)建另外一個(gè)string類的對象),所以當(dāng)需要頻繁的對一個(gè)string類對象進(jìn)行更改的時(shí)候芬为,建議使用StringBuilder類萄金,StringBuilder類的原理是首先在內(nèi)存中開辟一定大小的內(nèi)存空間,當(dāng)對此StringBuilder類對象進(jìn)行更改時(shí)媚朦,如果內(nèi)存空間大小不夠氧敢,會(huì)對此內(nèi)存空間進(jìn)行擴(kuò)充,而不是重新創(chuàng)建一個(gè)對象询张,這樣如果對一個(gè)字符串對象進(jìn)行頻繁操作的時(shí)候福稳,不會(huì)造成過多的內(nèi)存浪費(fèi),其實(shí)本質(zhì)上并沒有很大區(qū)別瑞侮,都是用來存儲(chǔ)和操作字符串的的圆,唯一的區(qū)別就在于性能上。

String主要用于公共API半火,通用性好越妈、用途廣泛、讀取性能高钮糖、占用內(nèi)存小梅掠。

StringBuilder主要用于拼接String,修改性能好店归。

不過現(xiàn)在的編譯器已經(jīng)把String的+操作優(yōu)化成StringBuilder了阎抒,所以一般用String就可以了

String是不可變的,所以天然線程同步消痛。

StringBuilder可變且叁,非線程同步。

http://zhidao.baidu.com/question/240364840.html?qbl=relate_question_0&word=String%C0%E0%D0%CD%B1%C8stringBuilder%C0%E0%D0%CD%B5%C4%D3%C5%CA%C63秩伞,C#函數(shù)Func(string a, string b)用Lambda表達(dá)式怎么寫?

答:https://msdn.microsoft.com/zh-cn/library/bb397687.aspx

4,數(shù)列1,1,2,3,5,8,13...第n位數(shù)是多少?用C#遞歸算法實(shí)現(xiàn)

通項(xiàng)公式應(yīng)該是an = a(n-1) + a(n-2)

a3=2=1+1

a4=3=1+1+1

a5=1+1+1+2

a6=1+1+1+2+3

.........

an=1+1+1+2+3+...+(n-2)+(n-3)

=2+(n-2)(n-3)/2 (n>=3)這是通項(xiàng)公式逞带,至于遞歸欺矫?…

5,一個(gè)簡單的游戲,怪物會(huì)走動(dòng)\攻擊\死亡,游戲角色會(huì)走動(dòng),跳躍\攻擊\格擋\死亡,還會(huì)接受玩家從輸入端輸入的指令,NPC會(huì)走動(dòng),他們彼此之間可以互相通信.請畫出以上三種角色的UML圖示.

答:

6展氓,NGUI Button怎樣接受用戶點(diǎn)擊并調(diào)用函數(shù),具體方法名稱是什么

OnClick()

主要是在UICamera腳本中用射線判斷點(diǎn)擊的物體并通過SendMessage調(diào)用OnClick() OnPress()等函數(shù)穆趴,可以說NGUI的按鈕是通過發(fā)消息這個(gè)方式調(diào)用的。

7遇汞,怎么判斷兩個(gè)平面是否相交?不能用碰撞體,說出計(jì)算方法

答:

https://www.baidu.com/s?wd=怎么判斷兩個(gè)平面是否相交&rsv_spt=1&issp=1&f=3&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=0&rsv_pq=abcac720000083b6&rsv_t=ecdctoXQNURcfX%2FVm8MQdPtiBLttYO4HqJrZ1yNsNcxUqDe6DM4ovlQT4HdHZJMh6guT&inputT=2590&oq=C%23%20lamb&rsv_n=2&bs=c%23%20lambda

8, <憤怒的小鳥>給予初速度以后,怎么讓小鳥受到重力和空氣阻力的影響而繪制拋物線軌跡,說出具體的計(jì)算方法.

Vector3 v代表初速度v'代表現(xiàn)在的速度未妹,假設(shè)小鳥是沿的z軸也就是transform.forward方向運(yùn)動(dòng)的質(zhì)量為1,那么v‘=v-new Vector3(0,g*t,f*t)空入,transform.Translate(v')做的就是拋物線運(yùn)動(dòng)(g為重力加速度不要用現(xiàn)實(shí)中的需要自己調(diào)試络它,f為阻力也要自己調(diào)試設(shè)置,t為時(shí)間

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末执庐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子导梆,更是在濱河造成了極大的恐慌轨淌,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件看尼,死亡現(xiàn)場離奇詭異递鹉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)藏斩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門躏结,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人狰域,你說我怎么就攤上這事媳拴。” “怎么了兆览?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵屈溉,是天一觀的道長。 經(jīng)常有香客問我抬探,道長子巾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任小压,我火速辦了婚禮线梗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘怠益。我一直安慰自己仪搔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布蜻牢。 她就那樣靜靜地躺著僻造,像睡著了一般憋他。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上髓削,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天竹挡,我揣著相機(jī)與錄音,去河邊找鬼立膛。 笑死揪罕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宝泵。 我是一名探鬼主播好啰,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼儿奶!你這毒婦竟也來了框往?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤闯捎,失蹤者是張志新(化名)和其女友劉穎椰弊,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓤鼻,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秉版,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茬祷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片清焕。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖祭犯,靈堂內(nèi)的尸體忽然破棺而出秸妥,到底是詐尸還是另有隱情,我是刑警寧澤沃粗,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布筛峭,位于F島的核電站,受9級(jí)特大地震影響陪每,放射性物質(zhì)發(fā)生泄漏影晓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一檩禾、第九天 我趴在偏房一處隱蔽的房頂上張望挂签。 院中可真熱鬧,春花似錦盼产、人聲如沸饵婆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侨核。三九已至草穆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間搓译,已是汗流浹背悲柱。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留些己,地道東北人豌鸡。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像段标,于是被迫代替她去往敵國和親涯冠。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容