Unity3D面試總結(jié)(續(xù))

第二部分

1.以下哪一個(gè)選項(xiàng)不屬于Unity引擎所支持的視頻格式文件(D)

A.后綴為mov的文件B.后綴為mpg的文件

C.后綴為avi的文件D.后綴為swf的文件

2.Unity引擎使用的是左手坐標(biāo)系還是右手坐標(biāo)系(A)

A.左手坐標(biāo)系 B.右手坐標(biāo)系

C.可以通過(guò)ProjectSetting切換右手坐標(biāo)系 D.可以通過(guò)Reference切換左手坐標(biāo)系

3.什么是導(dǎo)航網(wǎng)格(NavMesh)(B)

A.一種用于描述相機(jī)軌跡的網(wǎng)格 B.一種用于實(shí)現(xiàn)自動(dòng)尋址的網(wǎng)格

C.一種被優(yōu)化過(guò)的物體網(wǎng)格 D.一種用于物理碰撞的網(wǎng)格

4.下列選項(xiàng)中有關(guān)Animator的說(shuō)法錯(cuò)誤的是?(D)

A.Animator是Unity引擎中內(nèi)置的組件

B.任何一個(gè)具有動(dòng)畫(huà)狀態(tài)機(jī)功能的GameObject都需要一個(gè)Anim組件

C.它主要用于角色行為的設(shè)置,包括StateMachine、混合樹(shù)BlendTrees以及同通過(guò)腳本控制的事件

D.Animator同Animation組件的用法是相同的

5.Application.loadLevel命令為(A)

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

6.下列選項(xiàng)中,關(guān)于Transform組件的Scale參數(shù)描述正確的是(A)

A.Transform組件的Scale參數(shù)不會(huì)影響ParticleSystem產(chǎn)生粒子的大小

B.Transform組件的Scale參數(shù)不會(huì)影響GUITexture的大小

C.添加Collider組件后的GameoObject,其 Collider組件的尺寸不受Transform組件的Scale參數(shù)影響

D.添加Rigidbody組件后的物體,大小將不再受Transform組件中 Scale參數(shù)的影響

7.在 Unity 中的場(chǎng)景中創(chuàng)建Camera時(shí),默認(rèn)情況下除了帶有Transform、Camera、GUILayer、Flare Layer 組件之外,還帶有以下哪種組件(C)

A.Mouse

Look B.FPS Input Controller C.Audio Listener D.Character Motor

8.如果將一個(gè)聲音剪輯文件從Project 視圖拖動(dòng)到 Inspector 視圖或者Scene視圖中的游戲?qū)ο笊?,該游戲?qū)ο髸?huì)自動(dòng)添加以下哪種組件(C)

A.Audio

Listener B.Audio Clip C.Audio Source D.Audio Reverb Zone

9.下列敘述中有關(guān) Prefab說(shuō)法錯(cuò)誤的是哪一項(xiàng)(B)

A.Prefab是一種資源類(lèi)型 B.Prefab 是一種可以反復(fù)使用的游戲?qū)ο?/p>

C.Prefab可以多次在場(chǎng)景進(jìn)行實(shí)例 D.當(dāng)一個(gè) Prefab添加到場(chǎng)景中時(shí),也就是創(chuàng)建了它的一個(gè)實(shí)例

10.關(guān)于 MonoBehaviour.LateUpdate 函數(shù)描述錯(cuò)誤的是:(B)

A.當(dāng) MonoBehaviour 類(lèi)被啟用后,每幀調(diào)用一次

B.常被用于處理 Rigidbody 的更新

C.在所有 Update 函數(shù)執(zhí)行后才能被調(diào)用

D.常被用于實(shí)現(xiàn)跟隨相機(jī)效果,且目標(biāo)物體的位置已經(jīng)在 Update 函數(shù)中被更新

11.下列哪個(gè)函數(shù)不屬于碰撞事件(C)

A.OnCollisionEnter

B.OnCollisionExit

C.OnCollisionUpdate

D.OnCollisionStay

12.以下關(guān)于MonoBehaviour.OnGUI()的描述錯(cuò)誤的是(D)

A.如果 MonoBehaviour 沒(méi)有被啟用,則OnGUI函數(shù)不會(huì)被調(diào)用

B.用于繪制和處理GUI events

C.每幀可能會(huì)被繪制多次,每次對(duì)應(yīng)于一個(gè)GUI event

D.每幀被調(diào)用一次

13.以下哪組攝像機(jī)中Normalized View Port

Rect 的數(shù)值設(shè)置可以使攝像機(jī)顯示的畫(huà)面位于1280*720分辨率的屏幕畫(huà)面右上角(D)

A.X=640,Y=360,W=640,H=360

B.X=640,Y=0,W=640,H=360

C.X=0,Y=0,W=0.5,H=0.5

D.X=0.5,Y=0.5,W=0.5,H=0.5

14.在Unity引擎中,Collider所指的是什么(D)

A.collider是Unity引擎中所支持的一種資源,可用作存儲(chǔ)網(wǎng)格信息

B.Collider是Unity引擎中內(nèi)置的一種組件,可用對(duì)網(wǎng)格進(jìn)行渲染

C.Collider是Unity引擎中所支持的一種資源,可用作游戲?qū)ο蟮淖鴺?biāo)轉(zhuǎn)換

D.Collider是Unity引擎中內(nèi)置的一種組件,可用作游戲?qū)ο笾g的碰撞檢測(cè)

15.以下關(guān)于WWW.LoadFromCacheOrDownload描述正確的是(C)

A.可被用于將 Text Assets 自動(dòng)緩存到本地磁盤(pán)

B.可被用于將Resource 自動(dòng)緩存到本地磁盤(pán)

C.可被用于將Asset Bundles 自動(dòng)緩存到本地磁盤(pán)

D.可被用于將任意格式的Unity資源文件自動(dòng)緩存到本地磁盤(pán)

16.如何實(shí)現(xiàn)加載外部視頻并播放?

外部視頻文件:目前測(cè)試僅支持ogg格式(設(shè)置網(wǎng)絡(luò)獲取視頻時(shí),必須將MIME設(shè)置.ogg為application/octet-stream)

場(chǎng)景設(shè)置:MainCamera上添加AudioSource腳本;播放物體上(如Plane)添加MovieTest腳本

MovieTest腳本:

usingUnityEngine;?

usingSystem.Collections;?


public classMovieTest : MonoBehaviour?

{?

??? //視頻紋理??

??? protected MovieTexture movTexture;


???AudioClip audio;

??? AudioSource AudioSource1;


??? voidStart()?

??? {?

??????? StartCoroutine(DownLoadMovie());??

??? }?


??? voidOnGUI()?

??? {?

??????? if (GUILayout.Button("播放/繼續(xù)"))?

??????? {?

??????? ????//播放/繼續(xù)播放視頻??

??????????? if(!movTexture.isPlaying)?

??????????? {?

??????????????? movTexture.Play();?

??????????????? AudioSource1.Play();

??????????? }?

??????? }?


??????? if (GUILayout.Button("暫停播放"))?

??????? {?

??????????? //暫停播放??

??????????? movTexture.Pause();?

??????????? AudioSource1.Pause();

??????? }?


??????? if (GUILayout.Button("停止播放"))?

??????? {?

??????????? //停止播放??

???????????movTexture.Stop();?

??????????? AudioSource1.Stop();

??????? }?

??? }?


??? IEnumerator DownLoadMovie()?

??? {?

??????? WWW www =new WWW ("http://127.0.0.1/Wildlife.ogg");//"file://" + Application.dataPath +"/Resources/Wildlife.ogg");?

??????? yield returnwww;??

??????? movTexture = www.movie;


??????? //獲取主相機(jī)的聲源

??????? AudioSource1 =Camera.main.GetComponent(typeof(AudioSource)) asAudioSource;

??????? //獲取視頻的聲音設(shè)置到聲源上

??????? AudioSource1.clip =movTexture.audioClip;

???????audio = AudioSource1.clip;



??????? //設(shè)置當(dāng)前對(duì)象的主紋理為電影紋理??

???????renderer.material.mainTexture = movTexture;?

??????? //設(shè)置電影紋理播放模式為循環(huán)

???????movTexture.loop =true;

??? }?

}


17.游戲?qū)ο驜是游戲?qū)ο驛的子物體,游戲?qū)ο驛經(jīng)過(guò)了旋轉(zhuǎn),請(qǐng)寫(xiě)出游戲B圍繞自身的Y軸進(jìn)行旋轉(zhuǎn)的腳本語(yǔ)句,以及游戲?qū)ο驜圍繞世界坐標(biāo)的Y軸旋轉(zhuǎn)的腳本語(yǔ)句。

繞世界坐標(biāo)旋轉(zhuǎn):transform.Rotate

(transform.up*speed*Time.deltatime);

繞自身Y軸旋轉(zhuǎn):transform.Rotate

(Vector.up*speed*Time.deltatime);

18.Unity中用過(guò)哪些插件?具體功能

FXMaker,制作粒子特效;NGUI,制作2D界面;EasyTouch,搖桿;shaderForge,制作shader;Itween,制作動(dòng)畫(huà);

19.當(dāng)刪除Unity工程Assets目錄下地meta文件時(shí)會(huì)導(dǎo)致什么?為什么?

會(huì)導(dǎo)致在場(chǎng)景中游戲?qū)ο罂床坏?,或者?bào)錯(cuò),材質(zhì)找不到資源。多人協(xié)作的時(shí)候會(huì)導(dǎo)致資源的重復(fù)產(chǎn)生。因?yàn)槊總€(gè)資源文件都對(duì)應(yīng)一個(gè).meta文件,這個(gè).meta文件中的guid就是唯一標(biāo)識(shí)這個(gè)資源的。材質(zhì)就是通過(guò)這個(gè)guid來(lái)記錄自己使用了那些資源,而且同一個(gè)資源的guid會(huì)因?yàn)椴煌碾娔X而不同,所以當(dāng)你上傳了丟失了.meta文件的資源的時(shí)候,到了別人的機(jī)器上就會(huì)重新產(chǎn)生guid,那個(gè)這個(gè)資源就相當(dāng)于垃圾了。

20.頻繁創(chuàng)建GameObject會(huì)降低程序性能為什么?怎么解決?

頻繁創(chuàng)建游戲?qū)ο?,?huì)增加游戲的Drawcall數(shù),降低幀率,GPU會(huì)一直在渲染繪制??梢酝ㄟ^(guò)對(duì)象池來(lái)管理對(duì)象:當(dāng)需要?jiǎng)?chuàng)建一個(gè)游戲?qū)ο髸r(shí),先去對(duì)象池中查找一下對(duì)象池中是否存在沒(méi)有被正在使用的對(duì)象,如果有的話(huà)直接使用這個(gè)對(duì)象,并把它標(biāo)記為正在使用,沒(méi)有話(huà)就創(chuàng)建一個(gè),并把它添加到池中,然后標(biāo)記為使用中。一個(gè)游戲?qū)ο笫褂猛戤叺臅r(shí)候,不要銷(xiāo)毀掉,把它放在池中,標(biāo)記為未使用。

——————————-

21.關(guān)于Vector3 的API,以下說(shuō)法正確的是(BC)

A.Vector3.normalize 可以獲取一個(gè)三維向量的法線向量

B.Vector3.magnitude可以獲取一個(gè)三維向量的長(zhǎng)度

C.Vector3.forward與 Vector3(0,0,1)是一樣的意思

D.Vector3.Dot(向量A,向量B)是用來(lái)計(jì)算向量A與向量B的叉乘

22.以下哪個(gè)函數(shù)在游戲進(jìn)入新場(chǎng)景后會(huì)被馬上調(diào)用(B)

A.MonoBehaviour.OnSceneWastLoaded()

B.MonoBehaviour.OnSceneEnter()

C.MonoBehaviour.OnLevelEnter()

D.MonoBehaviour.OnLevelWastLoaded()

23.采用Input.mousePosition 來(lái)獲取鼠標(biāo)在屏幕上的位置,以下表達(dá)正確的是(C)

A.左上角為原點(diǎn)(0,0),右下角為(Screen.Width,

Screen.Height)

B.左下角為原點(diǎn)(0,0),右下角為(Screen.Height,

Screen.Width)

C.左下角為原點(diǎn)(0,0),右上角為(Screen.Width,

Screen.Height)

D.左上角為原點(diǎn)(0,0),右下角為(Screen.Height,

Screen.Width)

24.如何通過(guò)腳本來(lái)刪除其自身對(duì)應(yīng)的Gameobject(A)

A.Destroy(gameObject)

B.this.Destroy()

C.Destroy(this)

D.其他三項(xiàng)都可以

25.某個(gè)GameObject有一個(gè)名為MyScript的腳本,該腳本中有一個(gè)名為DoSomething 的函數(shù),則如何在該Gameobject的另外一個(gè)腳本中調(diào)用該函數(shù)?(A)

A.GetComponent().DoSomething()

B.GetComponent

C.GetComponent().Call(“DoSomething”)

D.GetComponent

26.Animator.CrossFade命令作用是:(B)

A.動(dòng)畫(huà)放大 B.動(dòng)畫(huà)轉(zhuǎn)換 C.Update() D.OnMouseButton()

27.OnEnable,Awake,Start運(yùn)行時(shí)的發(fā)生順序?(A)

A.Awake->OnEnable->Start

B.Awake->Start->OnEable

C.OnEnable-Awake->Start

D.Start->OnEnable->Awake

28.以下選項(xiàng)中,正確的是(D)

A.Mathf.Round方法作用是限制 B.Mathf.Clamp方法作用是插值

C.Mathf.Lerp方法作用是四舍五入 D.Mathf.Abs方法作用是取得絕對(duì)值

29.以下選項(xiàng)中,將游戲?qū)ο罄@Z軸逆時(shí)針旋轉(zhuǎn)90度(C)

A.transform.rotation

= Quaternion.Euler(0,0,90)

B.transform.rotation

= Quaternion.Angle(0,0,90)

C.transform.Rotate(new

Vector3(0,0,90))

D.transform.Rotate(new

Vector3(90,0,0))

30.public

static function InitializeServer(connections:int,listenPort:int,useNat:bool):NetworkConnectionError;解釋一下函數(shù),參數(shù)以及返回值的意思。

初始化服務(wù)器。connections是允許的入站連接或玩家的數(shù)量,listenPort是要監(jiān)聽(tīng)的端口,useNat設(shè)置NAT穿透功能。如果你想要這個(gè)服務(wù)器能夠接受連接使用NAT穿透,使用facilitator,設(shè)置這個(gè)為true。如果有錯(cuò)誤會(huì)有返回錯(cuò)誤。

31.請(qǐng)寫(xiě)出以下函數(shù)的含義和運(yùn)算結(jié)果

delegate b Func<a,

b>(a a1);

static void

Main(string[] args)

{

??? Func mFunc = x => x ==5;

??? Console.WriteLine(mFunc(6));

}

false,就是定義一個(gè)delegate,返回值類(lèi)型為 b,有一個(gè)參數(shù),類(lèi)型為a。

32.編寫(xiě)一個(gè)函數(shù),輸入一個(gè)32位整數(shù),計(jì)算這個(gè)整數(shù)有多少個(gè)bit為1.

uint BitCount (uint

n)

{

??? uint c = 0; //計(jì)數(shù)器

??? while (n > 0) {

??????? if ((n & 1) == 1) //當(dāng)前位是1

??????????? ++c; //計(jì)數(shù)器加1

??????? n >>= 1; //移位

??? }

??? return c;

}

33.某游戲中的裝備系統(tǒng)有16種附加屬性,每種附加屬性使用一個(gè)32位的ID表示(比如10001表示加人物hp的附加屬性,10002表示加人物mp的附加屬性),一件裝備做多有4個(gè)附加屬性,請(qǐng)寫(xiě)一個(gè)程序輸出所有附加屬性的組合。

#

34.請(qǐng)實(shí)現(xiàn)如下函數(shù),在Unity中有一副骨骼樹(shù),請(qǐng)使用遞歸方式與非遞歸方式實(shí)現(xiàn)先序遍歷,在Unity的Console輸出所有骨骼名。

可能用到的函數(shù)

public Transform

GetChild(int

index);

public int

Transform.childCount

public void

OutputTree(Transform root)

{

}

#

35.簡(jiǎn)要解釋下數(shù)據(jù)庫(kù)中ACID的含義。

ACID是指在可靠數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)中,事務(wù)所具有的四個(gè)特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。

原子性是指事務(wù)是一個(gè)不可分割的工作單位,事務(wù)中的操作要么都發(fā)生,要么都不發(fā)生。

一致性是指在事務(wù)開(kāi)始之前和事務(wù)結(jié)束以后,數(shù)據(jù)庫(kù)的完整性約束沒(méi)有被破壞。這是說(shuō)數(shù)據(jù)庫(kù)事務(wù)不能破壞關(guān)系數(shù)據(jù)的完整性以及業(yè)務(wù)邏輯上的一致性。例如:對(duì)銀行轉(zhuǎn)帳事務(wù),不管事務(wù)成功還是失敗,應(yīng)該保證事務(wù)結(jié)束后ACCOUNT表中aaa和bbb的存款總額為2000元。

隔離性多個(gè)事務(wù)并發(fā)訪問(wèn)時(shí),事務(wù)之間是隔離的,一個(gè)事務(wù)不應(yīng)該影響其它事務(wù)運(yùn)行效果。這指的是在并發(fā)環(huán)境中,當(dāng)不同的事務(wù)同時(shí)操縱相同的數(shù)據(jù)時(shí),每個(gè)事務(wù)都有各自的完整數(shù)據(jù)空間。由并發(fā)事務(wù)所做的修改必須與任何其他并發(fā)事務(wù)所做的修改隔離。事務(wù)查看數(shù)據(jù)更新時(shí),數(shù)據(jù)所處的狀態(tài)要么是另一事務(wù)修改它之前的狀態(tài),要么是另一事務(wù)修改它之后的狀態(tài),事務(wù)不會(huì)查看到中間狀態(tài)的數(shù)據(jù)。

持久性,意味著在事務(wù)完成以后,該事務(wù)所對(duì)數(shù)據(jù)庫(kù)所作的更改便持久的保存在數(shù)據(jù)庫(kù)之中,并不會(huì)被回滾。即使出現(xiàn)了任何事故比如斷電等,事務(wù)一旦提交,則持久化保存在數(shù)據(jù)庫(kù)中。

36.32位整數(shù)256和255按位異或后的結(jié)果是(511)

37.unix/linux系統(tǒng)將所有的I/O設(shè)備模型化為文件,c語(yǔ)言中的(stdin),(stdout)和(stderr)分別表示標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出,標(biāo)準(zhǔn)錯(cuò)誤。

38.k層二叉樹(shù)最多有 2^k - 1 個(gè)結(jié)點(diǎn)。

39.中綴算式(8 + x*y)-2x/3的后綴算式是_。

40.對(duì)以下二叉樹(shù)進(jìn)行前序遍歷的結(jié)果是(ABDGCEHF)


41.寫(xiě)出一個(gè)C類(lèi)ip地址(192.168.1.105),該ip地址一個(gè)合法的網(wǎng)格掩碼是(255.255.255.224).

42.c/c++程序運(yùn)行時(shí)有堆內(nèi)存與棧內(nèi)存之分,請(qǐng)寫(xiě)一個(gè)語(yǔ)句在堆中分配一個(gè)整數(shù):(int a = new int(4)),在棧內(nèi)存中分配一個(gè)整數(shù):(int a = 5)。

43.簡(jiǎn)述從C/C++源代碼生成可執(zhí)行文件所經(jīng)歷的幾個(gè)過(guò)程和每個(gè)過(guò)程中所做的事情。

預(yù)編譯-》編譯-》鏈接-》執(zhí)行

44.簡(jiǎn)述TCP建立連接的過(guò)程,最好能畫(huà)出時(shí)序圖。

三次握手;

45.有一個(gè)c語(yǔ)言函數(shù)

unsigned int

getN(unsigned int v){

??? v--;

??? v |= v >> 1;

??? v |= v >> 2;

??? v |= v >> 4;

??? v |= v >> 8;

??? v |= v >> 16;

??? v++;

??? return v;

}

請(qǐng)問(wèn)這個(gè)函數(shù)的功能是什么?

返回的結(jié)果是v 或者 2 ^ 跟下v次方 + 1(比如125返回128,128返回的就是128)

46.列出c語(yǔ)言中static關(guān)鍵字的用法。

static關(guān)鍵字至少有下列幾個(gè)作用:

(1)函數(shù)體內(nèi)static 變量的作用范圍為該函數(shù)體,不同于auto 變量,該變量的內(nèi)存只被分配一次,因此其值在下次調(diào)用時(shí)仍維持上次的值;

(2)在模塊內(nèi)的static 全局變量可以被模塊內(nèi)所用函數(shù)訪問(wèn),但不能被模塊外其它函數(shù)訪問(wèn);

(3)在模塊內(nèi)的static 函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用,這個(gè)函數(shù)的使用范圍被限制在聲明它的模塊內(nèi);

(4)在類(lèi)中的static 成員變量屬于整個(gè)類(lèi)所擁有,對(duì)類(lèi)的所有對(duì)象只有一份拷貝;

(5)在類(lèi)中的static 成員函數(shù)屬于整個(gè)類(lèi)所擁有,這個(gè)函數(shù)不接收this 指針,因而只能訪問(wèn)類(lèi)的static 成員變量。

47.解釋一下Unity3D中的協(xié)程(coroutine)是什么?并舉例說(shuō)明

在主線程運(yùn)行的同時(shí)開(kāi)啟另一段邏輯處理,來(lái)協(xié)助當(dāng)前程序的執(zhí)行,協(xié)程很像多線程,但是不是多線程,Unity的協(xié)程實(shí)在每幀結(jié)束之后去檢測(cè)yield的條件是否滿(mǎn)足。

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

物體自旋轉(zhuǎn)函數(shù)transform.Rotate,物體繞某點(diǎn)旋轉(zhuǎn)函數(shù):transform.RotateAround

49.使用prefab預(yù)制物體有什么好處?

1.Prefab一個(gè)重要的優(yōu)勢(shì)就是編輯prefab資源后,場(chǎng)景中所有使用Prefab克隆的游戲?qū)ο髮⑷渴褂眯戮庉嫷馁Y源,無(wú)需一個(gè)一個(gè)的給場(chǎng)景中的對(duì)象賦值。

2.當(dāng)游戲中需要頻繁創(chuàng)建一個(gè)物體時(shí),使用Prefab能夠節(jié)省內(nèi)存。

3.當(dāng)你在一個(gè)場(chǎng)景中增加一個(gè)Prefabs,你就實(shí)例化了一個(gè)Prefabs。

50.設(shè)有如下關(guān)系表R1和R2

R1(NO,

NAME, SEX, AGE, CLASS)

R2(NO,

SUBJECT, SCORE)

主關(guān)鍵字是NO,其中NO為學(xué)號(hào),NAME為姓名,SEX為性別,AGE為年齡,CLASS為班號(hào),SUBJECT為科目,SCORE為成績(jī)。寫(xiě)出實(shí)現(xiàn)下列功能的SQL語(yǔ)句。查找學(xué)號(hào)為20的學(xué)生的姓名,科目,成績(jī)。

SELECT

NAME,SUBJECT,SCORE FORM R1 INNER JOIN R2 ON R1.NO=R2.NO WHERE R1.NO = 20

51.描述多人聯(lián)網(wǎng)中位置的同步和聊天通訊的實(shí)現(xiàn)方法,并編程寫(xiě)出如何實(shí)現(xiàn)多人協(xié)同中交互操作。(交互操作例如,血值為100的兩個(gè)角色人物可以相互射擊雙方,射擊一次減去血值10,當(dāng)血值為0的時(shí)候證明已經(jīng)死亡)

#

52.當(dāng)實(shí)例化一個(gè)prefab對(duì)象,prefab對(duì)象上面掛載了一個(gè)繼承MonoBehaviour的腳本

1.請(qǐng)問(wèn)這個(gè)腳本分別會(huì)按順序調(diào)用哪些函數(shù),并列出哪些函數(shù)是反復(fù)進(jìn)去的

#

2.請(qǐng)問(wèn)當(dāng)這個(gè)實(shí)例化對(duì)象先調(diào)用了SetActive(false),然后又調(diào)用了SetActive(true),那么這個(gè)腳本依次會(huì)調(diào)用哪些函數(shù)方法?

#

3.如果在腳本的Awake()函數(shù)中,調(diào)用了this.gameObject.AddComponent()(PS:GameController為另一個(gè)繼承Mono的腳本類(lèi)),請(qǐng)問(wèn)此時(shí)腳本函數(shù)的調(diào)用順序是否發(fā)生變化?

53.if(go.CompareTag(“Enemy”))和if(go.tag == “Enemy”)兩種判斷方法哪種是合適的,為什么?

第一種合適,因?yàn)榈诙N會(huì)占用更多內(nèi)存。

54.DestroyImmediate和Destroy的區(qū)別是?

DestroyImmeditate銷(xiāo)毀對(duì)象的時(shí)候,會(huì)立即釋放資源。Destroy只是從該場(chǎng)景銷(xiāo)毀,但是還在內(nèi)存當(dāng)中。

55.詳細(xì)說(shuō)明Unity中資源加載的方法,以及他們的區(qū)別?

1.通過(guò)Resources模塊,調(diào)用它的load函數(shù):可以直接load并返回某個(gè)類(lèi)型的Object,前提是要把這個(gè)資源放在Resource命名的文件夾下,Unity不關(guān)有沒(méi)有場(chǎng)景引用,都會(huì)將其全部打入到安裝包中。

2.通過(guò)bundle的形式:即將資源打成asset bundle 放在服務(wù)器或本地磁盤(pán),然后使用WWW模塊get 下來(lái),然后從這個(gè)bundle中l(wèi)oad某個(gè)object。

56.從代碼角度上如何進(jìn)行內(nèi)存優(yōu)化?

#

57.分別寫(xiě)出Invoke和協(xié)程的幾種用法?

#

58.以下函數(shù)的功能是計(jì)算斐波那契數(shù)列的第n項(xiàng),請(qǐng)?zhí)羁?/p>

int func(int n)

{

??? if(n<=2)return 1;

??? return n + func(n-1);

}

59.C語(yǔ)言中宏定義中若有多行,可以使用字符(\).

60.C語(yǔ)言中32位整數(shù)能表達(dá)的最小的數(shù)是-2^31~2^31-1.

61.使用(點(diǎn)乘)向量運(yùn)算可以很方便地計(jì)算出三維空間中兩個(gè)單位向量之間夾角的cos值。

62.類(lèi)unix系統(tǒng)中某文件的權(quán)限為:drw-r–r–,用八進(jìn)制數(shù)值形式表示該權(quán)限為(411),首位d代表目錄(文件夾)

63.若有如下程序段,其中s,a,b,c均已定義為整型變量,且a,c均已賦值(c大于0)

s = a;

for(b = 1; b <= c;

b++)

??? s = s + 1;

則與上述程序段功能等價(jià)的賦值語(yǔ)句是(B)

A.s

= a + b B.s = a + c C.s = s + c D.s = b + c

64.簡(jiǎn)述static和const關(guān)鍵字的作用

static關(guān)鍵字至少有下列幾個(gè)作用:

(1)函數(shù)體內(nèi)static 變量的作用范圍為該函數(shù)體,不同于auto 變量,該變量的內(nèi)存只被分配一次,因此其值在下次調(diào)用時(shí)仍維持上次的值;

(2)在模塊內(nèi)的static 全局變量可以被模塊內(nèi)所用函數(shù)訪問(wèn),但不能被模塊外其它函數(shù)訪問(wèn);

(3)在模塊內(nèi)的static 函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用,這個(gè)函數(shù)的使用范圍被限制在聲明它的模塊內(nèi);

(4)在類(lèi)中的static 成員變量屬于整個(gè)類(lèi)所擁有,對(duì)類(lèi)的所有對(duì)象只有一份拷貝;

(5)在類(lèi)中的static 成員函數(shù)屬于整個(gè)類(lèi)所擁有,這個(gè)函數(shù)不接收this 指針,因而只能訪問(wèn)類(lèi)的static 成員變量。

const關(guān)鍵字至少有下列幾個(gè)作用:

(1)欲阻止一個(gè)變量被改變,可以使用const 關(guān)鍵字。在定義該const 變量時(shí),通常需要對(duì)它進(jìn)行初始化,因?yàn)橐院缶蜎](méi)有機(jī)會(huì)再去改變它了;

(2)對(duì)指針來(lái)說(shuō),可以指定指針本身為const,也可以指定指針?biāo)傅臄?shù)據(jù)為const,或二者同時(shí)指定為const;

(3)在一個(gè)函數(shù)聲明中,const 可以修飾形參,表明它是一個(gè)輸入?yún)?shù),在函數(shù)內(nèi)部不能改變其值;

(4)對(duì)于類(lèi)的成員函數(shù),若指定其為const 類(lèi)型,則表明其是一個(gè)常函數(shù),不能修改類(lèi)的成員變量

??? ;

(5)對(duì)于類(lèi)的成員函數(shù),有時(shí)候必須指定其返回值為const 類(lèi)型,以使得其返回值不為“左值”。

65.用你熟悉的語(yǔ)言及你認(rèn)為最簡(jiǎn)潔的方法書(shū)寫(xiě)計(jì)算 s = 1!+2!+3!+…+num!的代碼。num為輸入,s為輸出。(!代表階乘 3!= 1 * 2 * 3

Console.ReadLine(num)

int s = 0;

for(int i = 1; i

<= num; i++)

{

??? s += JieCheng(num);

}

public int

JieCheng(int num)

{

??? if(num < 0)

??? {

??????? Console.WriteLine("error");

??????? return;

??? }

??? if(num <=1)

??? {

??????? return 1;

??? }

??? else {

??????? return num * JieCheng(num - 1)

??? }

}

66.用你熟悉的語(yǔ)言從一個(gè)字符串中去掉相連的重復(fù)字符,例如原字符串“adffjkljaalkjhl”變?yōu)椤癮dfjkljalkjhl”

int GetResult(char[]input, char[] output)?

{?

??? int i, j, k = 0;?

??? int flag;?

??? int length;?

??? if(input == NULL || output == NULL)?

??? {?

??????? return -1;?

??? }?

??? length=strlen(input);//求數(shù)組的長(zhǎng)度?

??? for(i = 0; i

??? {?

??????? flag = 1;?

??????? for(j = 0; j < i; j++)?

??????? {?

??????????? if(output[j] == input [i])?

??????????? flag = 0;?

??????? }?

??????? if(flag)?

??????? output[k++] = input[i];?

??? }?

??? printf("最終的字符串為:");?

??? output[k] = '\0';?

??? for(int m = 0; m < output.Length; m++)

??? {

??????? print (output [m]);

??? }

??? return 0;?

}?

第三部分

1.哪種實(shí)時(shí)光源是Unity中沒(méi)有的?(D)

A.點(diǎn)光源 B.方向光 C.聚光燈 D.日光燈

2.如何在Unity中創(chuàng)建地形系統(tǒng)?(D)

A.Terrain->Create

Terrain B.Component->Create Terrain

C.Asset->Create

Terrain D.Windows->Create Terrain

3.以下哪種操作步驟可以在場(chǎng)景中添加“Wind Zone”?(B)

A.Terrain->Wind

Zone B.GameObject->Create other->Wind Zone

C.Component->Physics->Wind

Zone D.Assets->Create->Wind Zone

4.在Unity編輯器中創(chuàng)建一個(gè)Directional Light,以下步驟正確的是?(B)

A.Edit->Rendering

Setting->Directional Light

B.GameObject->Create

Other->Directional Light

C.Component->Rendering->Directional

Light

D.Assets->Directional

Light

5.下列哪一項(xiàng)不屬于Camera中的“Clear Flags”?(D)

A.Skybox

B.Solid Color C.Depth Only D.Background

6.以下哪種腳本語(yǔ)言是Unity編輯器所不支持的?(D)

A.Javascript

B.C# C.Boo D.Perl

7.對(duì)于Prefab,以下說(shuō)法錯(cuò)誤的是?(D)

A.Prefab資源可以在項(xiàng)目中多次重復(fù)使用

B.由Prefab實(shí)例出的GameObject,其在Hierarchy試圖中表現(xiàn)為藍(lán)色

C.Prefab上的組件信息一經(jīng)改變,其實(shí)例出的GameObject也會(huì)自動(dòng)改變

D.實(shí)例出的GameObject上的組件信息一經(jīng)改變,其對(duì)應(yīng)出的Prefab也會(huì)自動(dòng)改變

8.下面哪種做法可以打開(kāi)Unity的Asset Store?(A)

A.Windows->Asset

Store

B.Edit->Asset Store

C.File->Asset

Store

D.Assets->Asset

Store

9.在哪個(gè)面板中可以修改物體的空間屬性,如位置,朝向,大小等(B)

A.Project

B.Inspector C.Hierarchy D.Toolbar

10.如何為一個(gè)Asset 資源設(shè)定一個(gè)Label,從而能夠方便準(zhǔn)確的搜索到?(D)

A.在Project窗口中選中一個(gè)Asset,右鍵->Create->Label

B.在Project窗口中選中一個(gè)Asset,右鍵->Add Label

C.在Project窗口中選中一個(gè)Asset,在Inspector窗口中點(diǎn)擊添加Label的圖標(biāo)

D.在Project窗口中選中一個(gè)Asset,在Inspector窗口中點(diǎn)擊按鈕“Add Label”

11.Mecanim系統(tǒng)中,Body Mask的作用是?(D)

A指定身體的某一部分是否參與骨骼動(dòng)畫(huà)

B.指定身體的某一部分是否參與物理模擬

C.指定身體的某一部分是否可以輸出骨骼信息

D.指定身體的某一部分是否參與渲染

12.以下哪種操作步驟可以打開(kāi)Unity編輯器的Lightmapping視圖?(C)

A.File->Lightmapping

B.Assets->Lightmapping

C.Windows->Lightmapping

D.Component->Lightmapping

13.下列關(guān)于光照貼圖,說(shuō)法錯(cuò)誤的是?(C)

A.使用光照貼圖比使用實(shí)時(shí)光源渲染要快

B.可以降低游戲內(nèi)存消耗

C.可以增加場(chǎng)景真實(shí)感

D.多個(gè)物體可以使用同一張光照貼圖

14.如何為物體添加光照貼圖所使用的UV?(B)

A.不用添加,任何時(shí)候都會(huì)自動(dòng)生成

B.更改物體導(dǎo)入設(shè)置,勾選“Generate Lighting UVs”

C.更改物體導(dǎo)入設(shè)置,勾選“Swap UVs”

D.更改物體導(dǎo)入設(shè)置,在UVs選項(xiàng)中選擇“Use Lightmaps”

15.在哪個(gè)模塊下可以修改Render Path?(A)

A.Camera

B.Light C.Render Settings D.Project Setting->Quality

16.以下哪項(xiàng)技術(shù)下不是目前Unity所支持的Occlusion Culling技術(shù)?(D)

A.PVS

only B.PVS and dynamic objets

C.Automatic

Portal Generation D.Dynamic Only

17.關(guān)于Vector3的API,以下說(shuō)法正確的是?(C)

A.Vector3.normalize可以獲取一個(gè)三維向量的法線向量

B.Vector3.magnitude可以獲取一個(gè)三維向量的長(zhǎng)度

C.Vector3.forward與Vector3(0,0,1)是一樣的

D.Vector3.Dot(向量A,向量B)是用來(lái)計(jì)算向量A與向量B的叉乘

18.下列那些選項(xiàng)不是網(wǎng)格層屬性的固有選項(xiàng)?(B)

A.Default

B.Walkable C.Not Walkable D.Jump

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 專(zhuān)業(yè)考題類(lèi)型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚(yú)閱讀 10,541評(píng)論 0 13
  • 更新:【面試題含答案】http://bbs.9ria.com/thread-288394-1-1.html 高頻問(wèn)...
    好怕怕閱讀 5,086評(píng)論 3 53
  • Unity編輯器基礎(chǔ) 1.請(qǐng)描述游戲動(dòng)畫(huà)有幾種,以及其原理。 主要有關(guān)節(jié)動(dòng)畫(huà)、單一網(wǎng)格模型動(dòng)畫(huà)(關(guān)鍵幀動(dòng)畫(huà))、骨骼...
    豆錚閱讀 4,941評(píng)論 0 6
  • Unity腳本基礎(chǔ) 1.Unity3D中的協(xié)程(coroutine)和C#線程之間的區(qū)別是什么? 多線程程序同時(shí)運(yùn)...
    豆錚閱讀 3,919評(píng)論 0 3
  • This article is a record of my journey to learn Game Deve...
    蔡子聰閱讀 4,121評(píng)論 0 9

友情鏈接更多精彩內(nèi)容