红菊直播官方版-红菊直播免费版app下载-红菊直播永久免费版下载

史上最全Unity面試試題,你會幾個

更新時間:2024-08-09 22:30作者:小樂

轉(zhuǎn):https://blog.csdn.net/Sindywangkeai/article/details/77649471 locationNum=9fps=1

10:MeshRender中材質(zhì)和共享材質(zhì)有什么區(qū)別?

修改sharedMaterial將更改使用該材質(zhì)的所有對象的外觀,并且還將更改存儲在項目中的材質(zhì)設(shè)置。不建議修改sharedMaterial返回的材質(zhì)。如果要修改渲染器的材質(zhì),請改用材質(zhì)。

11:Unity提供了幾種光源,它們是什么?

四種。

定向光: 定向光

點光源:Point Light

聚光燈:聚光燈

區(qū)域光:區(qū)域光

12:簡單描述對象池。你認為FPS中的對象池適合什么用途?

對象池存放一塊需要重復(fù)調(diào)用的空間。當一個對象大量生成時,每次銷毀和創(chuàng)建都會非常耗時。對象池用于將暫時不用的對象放入池(即集合)中。 ),當想要重新生成這個對象時,首先去池中檢查是否有可用的對象。如果有,直接取出來使用即可,無需再次創(chuàng)建。如果池中沒有可用對象,則需要重新創(chuàng)建它。用空間交換時間,達到游戲的高速運行效果。 FPS游戲中經(jīng)常被大量復(fù)制的物體包括子彈、敵人、粒子等。

十三:CharacterController和Rigidbody的區(qū)別

Rigidbody具有完全真實的物理特性。它是Unity中物理系統(tǒng)最基本的組成部分,包含常用的物理特性。 CharacterController可以說是一個有限的Rigidbody,具有一定的物理效果但并不完全真實。這正是Unity 想要實現(xiàn)的目標。打包的組件使開發(fā)人員能夠輕松開發(fā)第一人稱視角游戲。

十四:簡述prefab的使用

游戲運行時實例化,prefab相當于一個模板,對你已有的材質(zhì)、腳本、參數(shù)進行默認配置,方便以后修改。同時,預(yù)制打包的內(nèi)容簡化了導(dǎo)出操作,方便團隊溝通。

十五:請簡要描述sealed關(guān)鍵字在類聲明和函數(shù)聲明中使用時的作用。

密封類是密封類。當類被聲明時,可以防止其他類繼承這個類。在方法中聲明它可以防止派生類重寫此方法。

16:請簡要描述私有、公共、受保護和內(nèi)部之間的區(qū)別

公開:對任何班級和會員開放,無限制訪問

private:僅對該類公開

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

內(nèi)部:只能在包含該類的程序集中訪問該類

十七:使用Unity3d實現(xiàn)2D游戲有多少種方式?

1.使用自己的GUI,Unity 4.6之后出現(xiàn)的UGUI

2.將相機的Projection值調(diào)整為Orthographic(正交投影),與z軸無關(guān);

3.使用2d插件,如:2DToolKit、NGUI

十八:物體碰撞的整個過程中,有幾個階段,分別列出了對應(yīng)的函數(shù)。

三個階段,1.OnCollisionEnter 2.OnCollisionStay 3.OnCollisionExit

十九:Unity3d的物理引擎中,施加力的方式有多種,分別介紹。

rigidbody.AddForce/AddForceAtPosition,都在rigidbody系列函數(shù)中。你可以自己查看rigidbody的API。

二十:什么是鏈條接頭?

鉸鏈關(guān)節(jié)可以模擬兩個物體用鏈條連接在一起的情況。它可以使兩個物體在固定距離內(nèi)相互移動而不產(chǎn)生任何力,但達到固定距離后會產(chǎn)生拉力。

二十一:用什么函數(shù)來旋轉(zhuǎn)物體本身?

變換.旋轉(zhuǎn)()

二十二:Unity3d提供了一個類(PlayerPrefs)用于保存和讀取數(shù)據(jù)。請列出保存和讀取塑料數(shù)據(jù)的功能。

PlayerPrefs.SetInt() PlayerPrefs.GetInt()

二十三:Unity3d腳本從覺醒到毀滅有一個比較完整的生命周期。請列出系統(tǒng)自帶的幾個重要方法。

Awake——OnEnableStart——Update——FixedUpdate——LateUpdate——OnGUI——OnDisable——OnDestroy

二十四:物理更新一般放在哪些系統(tǒng)功能中?

每繪制一個固定幀就會執(zhí)行一次FixedUpdate。與Update不同的是,F(xiàn)ixedUpdate是在渲染幀執(zhí)行的。如果你的渲染效率較低,F(xiàn)ixedUpdate 調(diào)用次數(shù)也會相應(yīng)減少。 FixUpdate更適合物理引擎計算,因為它與每一幀的渲染相關(guān)。更新更適合控制。

二十五:如果場景中放置多個Camera并且同時處于活動狀態(tài),會發(fā)生什么情況?

游戲界面可以看到很多攝像頭的混合體。

二十六:如何銷毀一個UnityEngine.Object及其子類?

使用Destroy() 方法;

二十七:請描述Unity3d中組件出現(xiàn)數(shù)據(jù)丟失的原因。

通常綁定到組件的對象會被刪除。

二十八:什么是LOD,它的優(yōu)點和缺點是什么?

LOD(細節(jié)級別)是最常用的游戲優(yōu)化技術(shù)。它根據(jù)模型的位置和重要性來決定對象渲染的資源分配,減少不重要對象的面數(shù)和細節(jié),從而實現(xiàn)高效的渲染操作。缺點是增加了內(nèi)存。

二十九:什么是MipMap,它有什么作用?

MipMapping:三維計算機圖形紋理渲染中常用的技術(shù)。為了加速渲染過程并減少圖像鋸齒,紋理被處理成由一系列預(yù)先計算和優(yōu)化的圖片組成的文件。這樣的紋理稱為MipMap。

三十:請描述Interface和抽象類的區(qū)別

抽象類是指類中可能已經(jīng)有一些方法的具體定義,但接口是公公只能定義各個方法的接口,具體的實現(xiàn)代碼不能在成員方法中。類由子類繼承。當父類已經(jīng)有具有實際功能的方法時,不需要在子類中實現(xiàn)該方法。而是直接引用父類的方法。子類也可以重寫父類的方法。實現(xiàn)接口時,必須實現(xiàn)接口中的所有方法,一個都不能漏掉。

三十一:Net和Mono是什么關(guān)系?

Mono是.net的一個開源跨平臺工具,類似于Java虛擬機。 Java本身并不是跨平臺的語言,但是運行在虛擬機上可以實現(xiàn)跨平臺。net只能運行在Windows下,而mono可以跨平臺運行,可以運行在Linux、Unix、Mac OS等操作系統(tǒng)上。

三十二:簡述Unity3D支持的腳本語言名稱

Unity的腳本語言運行在Mono的.Net平臺上,可以使用.NET庫,這也為XML、數(shù)據(jù)庫、正則表達式等問題提供了很好的解決方案。 Unity 中的腳本經(jīng)過編譯并且運行速度非???。這三種語言的實際功能和運行速度是相同的,差異主要體現(xiàn)在語言特性上。 JavaScript、C#、Boo

三十三:U3D中用于記錄節(jié)點空間幾何信息的組件名稱,及其父類名稱

Transform的父類是Component

三十四:向量的點積、叉積和歸一化是什么意思?

1.點積描述了兩個向量的相似度。結(jié)果越大,兩個向量越相似。它也可以代表投影。

2.叉積得到的向量垂直于原來的兩個向量

3、標準化向量:只關(guān)心方向而不關(guān)心大小時使用

三十五:為什么每個人都在尋找移動設(shè)備上U3D 原生GUI 的替代品

不美觀,OnGUI耗時、效率低、使用不方便

三十六:請簡述如何在不同分辨率下保持UI一致性

NGUI很好地解決了這個問題。屏幕分辨率適配的原理是計算屏幕的長寬比和原來預(yù)設(shè)的屏幕分辨率找到一個比較值,然后修改相機尺寸。 UGUI也通過錨點和中心點以及分辨率解決了這個問題

三十七:什么是LightMap?

LightMap:是指3D軟件中的光照,然后將場景各個表面的光照渲染輸出到貼圖上,最后通過引擎粘貼到場景上,讓物體有光照的感覺。

三十八:Unity和cocos2d的區(qū)別

1、Unity3D支持C#、javascript等,cocos2d-x支持c++、Html5、Lua等。

2.cocos2d開源且免費

3、Unity3D支持iOS、Android、Flash、Windows、Mac、Wii等平臺的游戲開發(fā),cocos2d-x支持iOS、Android、WP等。

三十九:C#和C++有什么區(qū)別?

簡單來說:當比較C#和C++時,最重要的特點是C#是一種完全面向?qū)ο蟮恼Z言,而C++則不是。此外,C#基于IL中間語言和.NET Framework CLR。在可移植性和可維護性方面,無論是性能還是健壯性都比C++有很大的提高。 C#的設(shè)計目標是開發(fā)快速、穩(wěn)定和可擴展的應(yīng)用程序。當然,一些底層操作也可以通過Interop和Pinvoke來完成。更詳細的區(qū)別可以參考這里

四十:結(jié)構(gòu)體和類有什么區(qū)別?

結(jié)構(gòu)體是值類型,而類是引用類型。 (根據(jù)數(shù)據(jù)存儲的角度來劃分值類型和引用類型)值類型用于存儲數(shù)據(jù)的值,引用類型用于存儲對實際數(shù)據(jù)的引用。然后將該結(jié)構(gòu)用作值,類通過引用對實際數(shù)據(jù)進行操作。

四十一:什么是ref參數(shù)和out參數(shù)?有什么不同?

ref 和out 參數(shù)具有相同的效果。他們使用關(guān)鍵字查找主函數(shù)中定義的變量的內(nèi)存地址,并通過方法體中的語法更改其大小。不同的是輸出參數(shù)必須初始化參數(shù)。 ref 必須被初始化,并且out 參數(shù)必須在函數(shù)中被賦值。 ref 參數(shù)是引用,out 參數(shù)是輸出參數(shù)。

四十二:C#的委托是什么?什么用途?

委托類似于安全指針引用。使用時,將其視為類而不是方法,相當于對方法列表的引用。有用性:使用委托允許程序員將方法引用封裝在委托對象中。然后,可以將該委托對象傳遞給可以調(diào)用引用方法的代碼,而無需在編譯時知道將調(diào)用哪個方法。與C 或C++ 中的函數(shù)指針不同,委托是面向?qū)ο笄翌愋桶踩摹?

四十三:C#中的排序方法有哪些?

選擇排序、冒泡排序、快速排序、插入排序、希爾排序、歸并排序

四十四:碰撞物體射線檢測原理是什么?

射線是從3D 世界中的一點向一個方向發(fā)射的一條無盡的線。當它與發(fā)射軌跡中的其他物體碰撞時,它將停止發(fā)射。

四十五:Unity中相機的裁剪平面有什么作用?調(diào)整Near和Fare值時需要注意什么?

剪裁平面。開始渲染和停止渲染時距相機的距離。

四十六:如何防止現(xiàn)有的GameObject在LoadLevel后被卸載?

void Awake(){ DontDestroyOnLoad(transform.gameObject);} 四十七:請簡單描述一下GC(垃圾回收)的原因,并描述如何避免?

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

避免: 1.減少new生成對象的次數(shù)

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

3.用StringBuilder替換String

四十八:反射的實現(xiàn)原理是什么?

能夠查看元數(shù)據(jù)并收集有關(guān)元數(shù)據(jù)的類型信息。實現(xiàn)原理:運行時根據(jù)程序集及其中的類型獲取元數(shù)據(jù)。以下是實施步驟:

1.使用System.Reflection導(dǎo)入;

2.Assembly.Load("Assembly")加載程序集,返回類型為Assembly

3.獲取程序集中所有類的名稱

foreach (Type type in assembly.GetTypes()){ string t=type.Name;}4. Type type=assembly.GetType("Assembly.Class Name");獲取當前類的類型

5. Activator.CreateInstance(類型);創(chuàng)建該類型的實例

6. MethodInfo mInfo=type.GetMethod("方法名稱");獲取當前方法

7. m.Info.Invoke(null, 方法參數(shù));

四十九:簡述四元數(shù)的作用以及四元數(shù)對于歐拉角的優(yōu)點?

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

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

1.能夠進行增量旋轉(zhuǎn)

2.避免通用鎖

3.給定方向有兩種表達方式,每種都是負數(shù)(歐拉角的表達方式有無數(shù)種)

五十:移動攝像機動作位于哪個函數(shù)中?為什么會出現(xiàn)在這個函數(shù)中呢?

LateUpdate 在所有更新完成后調(diào)用,更適合命令腳本的執(zhí)行。官網(wǎng)上的例子是攝像頭跟隨。相機跟隨是在所有更新操作完成后進行的。否則,攝像機可能已經(jīng)前進,但視角中沒有角色的空框。

第51章:GPU如何工作

簡而言之,GPU圖形(處理)管道完成以下工作:(不一定按以下順序) 頂點處理:在此階段,GPU讀取描述3D圖形外觀的頂點數(shù)據(jù),并確定3D圖形的形狀基于頂點數(shù)據(jù)的圖形。和位置關(guān)系來建立3D 圖形的骨架。在支持DX8和DX9規(guī)范的GPU中,這些任務(wù)是由硬件實現(xiàn)的Vertex Shader(定點著色器)完成的。光柵化計算:顯示器上實際顯示的圖像是由像素組成的。我們需要將上面生成的圖形上的點和線通過一定的算法轉(zhuǎn)換成對應(yīng)的像素。將矢量圖形轉(zhuǎn)換為一系列像素的過程稱為光柵化。例如,對角線段的數(shù)學(xué)表示最終會轉(zhuǎn)換為階梯狀的連續(xù)像素點。紋理映射:頂點單元生成的多邊形僅構(gòu)成3D物體的輪廓,而紋理映射完成多變形表面的映射。通俗地說,就是將相應(yīng)的圖片粘貼到多邊形表面上,從而生成“逼真”的圖形。 TMU(紋理映射單元)就是用來完成這項工作的。像素處理:在這個階段(每個像素的光柵化期間)GPU完成像素的計算和處理,以確定每個像素的最終屬性。在支持DX8和DX9規(guī)范的GPU中,這些任務(wù)由硬件實現(xiàn)的Pixel Shader完成。最終輸出:ROP(光柵化引擎)最終完成像素的輸出。一幀渲染完成后,會被發(fā)送到顯存幀緩沖區(qū)。

總結(jié):一般來說,GPU的工作就是完成3D圖形的生成,將圖形映射到對應(yīng)的像素上,計算每個像素以確定最終的顏色并完成輸出。

五十二:什么是渲染管線?

它是指為了在監(jiān)視器上顯示圖像而進行的一系列必要的操作。渲染管道中的許多步驟都涉及將幾何對象從一種坐標系轉(zhuǎn)換到另一種坐標系。主要步驟是:

局部坐標-視圖坐標-反向裁剪-光照-裁剪-投影-視圖變換-光柵化

五十三:如何優(yōu)化內(nèi)存?

方法有很多,比如

1、壓縮內(nèi)置類庫;

2、隱藏暫時不用的、以后需要用到的對象,而不是直接銷毀;

3、釋放AssetBundle占用的資源;

4.減少模型的邊數(shù),減少模型中的骨骼數(shù)量,減小紋理的尺寸;

5、使用光照貼圖、使用多層次細節(jié)(LOD)、使用著色器(Shader)、使用預(yù)制件(Prefab)。

6.代碼中生成的臨時變量較少

五十四:如何動態(tài)加載資源?它們之間的區(qū)別

1.Resources.Load();

2.資產(chǎn)包

差異參考

五十五:請描述一下游戲動畫有哪些類型及其原理?

主要包括關(guān)節(jié)動畫、骨骼動畫、單網(wǎng)格模型動畫(關(guān)鍵幀動畫)。

聯(lián)合動畫:將角色分為幾個獨立的部分,一個部分對應(yīng)一個網(wǎng)格模型,各部分的動畫連接成一個整體動畫。人物性格更加靈活。 Quake2中使用了這種動畫;

骨骼動畫是一種廣泛使用的動畫方法,它綜合了以上兩種方法的優(yōu)點。骨骼根據(jù)人物的特征形成一定的層次結(jié)構(gòu)。它們通過關(guān)節(jié)連接,可以進行相對運動。皮膚充當骨骼外部的單個網(wǎng)格并決定角色。外貌;

單個網(wǎng)格模型動畫由一個完整的網(wǎng)格模型組成。將每個頂點的原始位置及其變化量記錄在動畫序列的關(guān)鍵幀中,然后進行插值操作以達到動畫效果,使角色動畫更加逼真。

五十六:阿爾法混合如何工作

Alpha Blend實現(xiàn)了透明效果,但只能對某個區(qū)域進行alpha操作,并且透明度可以設(shè)置。

五十七:編寫光照計算中diffuse的計算公式

漫反射=Kd x colorLight x max(N*L,0); Kd 漫反射系數(shù),colorLight 光的顏色,N 單位法向量,L 單位指向光源的向量,其中N 為點乘以L,如果結(jié)果小于等于0,則漫反射為0。

五十八:影子判斷的兩種方法及工作原理。

本影和半影:參考本影和半影

本影:場景表面上不直接被光源照亮的區(qū)域(全黑、輪廓清晰的區(qū)域)。

半影:場景表面上被某些特定光源直接照亮但并非全部特定光源照亮的區(qū)域(半明半暗區(qū)域)

工作原理:將光源發(fā)出的光投射到物體的所有可見表面上,將這些表面投影到場景中得到投影面,然后將這些投影面與場景中的其他平面相交得到陰影多邊形,并保存這些陰影多邊形信息。然后根據(jù)視點位置對場景進行相應(yīng)處理,得到所需的視圖(用空間換時間,每次只需要根據(jù)視點位置進行一次陰影計算,省去了消隱過程)

五十九:什么是Vertex Shader以及如何計算?

頂點著色器是在GPU上執(zhí)行的程序,用于替代固定管線中的變換和光照。頂點著色器主要操作頂點。

Vertex Shader 完成輸入頂點從局部空間到齊次空間(齊次空間)的變換過程。齊次空間是投影空間的下一個空間。這期間有幾個過程:世界變換、視圖變換、投影變換和光照。

六十:下面的代碼運行時會生成多少個臨時對象?

字符串a(chǎn)=new string(\'abc\');a=(a.ToUpper() + \'123\').Substring(0, 2);在C#中,第一行就會報錯(在Java中是可行的)。

它應(yīng)該像這樣初始化:

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

答案是:5個臨時對象

六十一:下面的代碼運行時會出現(xiàn)什么問題?如何避免呢?

列表ls=new List(new int[] { 1, 2, 3, 4, 5 }); foreach (ls 中的int item){ Console.WriteLine(item * item); ls.Remove(item);} 生成執(zhí)行l(wèi)s.Remove(item) 行中發(fā)生錯誤,因為foreach 是只讀的。遍歷時無法修改。

六十二:Unity3D支持編寫多線程程序嗎?如果支持的話需要注意什么?

Unity3D組件、對象和Unity3D系統(tǒng)調(diào)用只能從主線程訪問

支持:如果要同時處理很多事情或者與Unity對象交互很少,可以使用線程,否則使用協(xié)程。

注意:C#中有一個lock關(guān)鍵字,用于保證在特定時間內(nèi)只有一個線程可以訪問特定對象。

六十三:Unity3D的協(xié)程和C#線程有什么區(qū)別?

多線程程序同時運行多個線程,在任何給定時間只有一個協(xié)程在運行,并且該正在運行的協(xié)程僅在必要時才被掛起。主線程以外的線程無法訪問Unity3D對象、組件和方法。

Unity3d沒有多線程的概念,但是unity也為我們提供了StartCoroutine(協(xié)程)和LoadLevelAsync(關(guān)卡異步加載)方法用于后臺加載場景。 StartCoroutine 為什么叫協(xié)程?所謂協(xié)作,是指當你在StartCoroutine的函數(shù)體中處理一段代碼時,使用yield語句來等待執(zhí)行結(jié)果。在此期間,不影響主程序的繼續(xù)執(zhí)行,可以協(xié)同工作。

六十四:矩陣乘法的含義及注意點

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

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

六十五:為什么unicode環(huán)境下動態(tài)字體比靜態(tài)字體好

Unicode是由國際組織制定的一種字符編碼方案,可以容納世界上所有的文字和符號。

使用動態(tài)字體時,Unity不會預(yù)先生成所有字體的字符紋理。當需要支持亞洲語言或者更大的字體時,如果使用普通紋理,字體紋理會很大。

六十六:當一個高速運動的小物體與另一個較大的物體相撞時會發(fā)生什么?如何避免呢?

穿透(碰撞檢測失?。?

六十七:請簡單描述一下OnBecameVisible和OnBecameInvisible的發(fā)生時機,以及這對回調(diào)函數(shù)的意義?

當切換對象是否可見時??捎糜趦H當對象可見時才需要執(zhí)行的計算。

六十八:什么是動態(tài)批處理?與靜態(tài)批處理有什么區(qū)別?

如果動態(tài)對象共享相同的材質(zhì),Unity 會自動批處理這些對象。動態(tài)批處理操作自動完成,不需要您執(zhí)行額外的操作。

區(qū)別:動態(tài)批處理中的一切都是自動的,不需要任何操作,并且可以移動對象,但有很多限制。靜態(tài)批處理:自由度高,限制少。缺點可能是占用內(nèi)存較多,并且所有靜態(tài)批處理后的對象都無法再移動。

參考

六十九:簡述StringBuilder和String的區(qū)別?

字符串是字符串常量。

StringBuffer是一個字符串變量并且是線程安全的。

StringBuilder 是一個字符串變量,并且是線程不安全的。

String 類型是不可變對象。每次改變一個String時,都需要生成一個新的String對象,然后指針指向一個新的對象。如果一個對象在循環(huán)中不斷變化,那么它也必須不斷變化。生成新的對象,所以效率很低。建議不要使用String 類型,因為String 對象不斷變化。

StringBuilder對象在執(zhí)行字符串連接操作時會修改原始字符串,從而提高性能。我們在日常使用中可能都知道這一點。當連接操作頻繁時,使用StringBuilder對象。

七十:Unity3D Shader有哪些類型,有什么區(qū)別?

表面著色器具有更高的抽象級別,可以輕松地以簡潔的方式實現(xiàn)復(fù)雜的著色。表面著色器在前向和延遲渲染模式下都能正常工作。

頂點片段著色器可以非常靈活地達到想要的效果,但是需要編寫更多的代碼,并且很難與Unity的渲染管線完美集成。

固定功能管線著色器可用作前兩個著色器的備份選項。當硬件無法運行那些很酷的Shaders時,你還可以使用固定功能的管線著色器來繪制一些基本的內(nèi)容。

七十一:已知strcpy函數(shù)的原型為:char * strcpy(char * strDest, const char * strSrc); 1、實現(xiàn)strcpy函數(shù),不調(diào)用庫函數(shù)。 2.解釋為什么返回char *

char * strcpy(char * strDest,const char * strSrc){ if ((strDest==NULL)||(strSrc==NULL)) throw \'無效參數(shù)\'; char * strDestCopy=strDest; while ( (*strDest++=*strSrc++)!='\0'); return strDestCopy;}72: C# 中的四個訪問修飾符是什么?有什么不同?

1. 屬性修飾符2. 訪問修飾符3. 類修飾符4. 成員修飾符。

屬性修飾符:

可序列化:按值將對象編組到遠程服務(wù)器。

STATread:表示單線程套件,是一種線程模型。

MATAThread:意思是多線程套件,也是一種線程模型。

訪問修飾符:

公共:不受限制的訪問。

private:只有包含該成員的類才能訪問它。

內(nèi)部:只有當前項目可以訪問它。

protected:只有包含該成員的類和派生類才能訪問它。

類修飾符:

抽象:抽象類。表示一個類只能作為其他類的基類。

密封:密封類。表示類不能被繼承。當然,密封類不能同時是抽象類,因為抽象總是希望被繼承。

會員修改器:

Abstract:表示該方法或?qū)傩晕磳崿F(xiàn)。

密封:密封方法。可以防止此方法在派生類中被重寫。并非類的每個成員方法都可以用作密封方法。必須重載基類的虛方法來提供具體的實現(xiàn)方法。因此,在方法的聲明中,sealed修飾符總是與override修飾符一起使用。

代表:代表。用于定義函數(shù)指針。 C#中的事件驅(qū)動是基于委托+事件。

const:指定該成員的值是只讀的,不允許修改。

事件:聲明一個事件。

extern:表示該方法是外部實現(xiàn)的

現(xiàn)。 override:重寫。對由基類繼承成員的新實現(xiàn)。 readonly:指示一個域只能在聲明時以及相同類的內(nèi)部被賦值。 static:指示一個成員屬于類型本身,而不是屬于特定的對象。即在定義后可不經(jīng)實例化,就可使用。 virtual:指示一個方法或存取器的實現(xiàn)可以在繼承類中被覆蓋。 new:在派生類中隱藏指定的基類成員,從而實現(xiàn)重寫的功能。 若要隱藏繼承類的成員,請使用相同名稱在派生類中聲明該成員,并用 new 修飾符修飾它。 七十三:Heap與Stack有何區(qū)別? 1.heap是堆,stack是棧。 2.stack的空間由操作系統(tǒng)自動分配和釋放,heap的空間是手動申請和釋放的,heap常用new關(guān)鍵字來分配。 3.stack空間有限,heap的空間是很大的自由區(qū)。 七十四:值類型和引用類型有何區(qū)別? 1.值類型的數(shù)據(jù)存儲在內(nèi)存的棧中;引用類型的數(shù)據(jù)存儲在內(nèi)存的堆中,而內(nèi)存單元中只存放堆中對象的地址。 2.值類型存取速度快,引用類型存取速度慢。 3.值類型表示實際數(shù)據(jù),引用類型表示指向存儲在內(nèi)存堆中的數(shù)據(jù)的指針或引用 4.值類型繼承自System.ValueType,引用類型繼承自System.Object 5.棧的內(nèi)存分配是自動釋放;而堆在.NET中會有GC來釋放 6.值類型的變量直接存放實際的數(shù)據(jù),而引用類型的變量存放的則是數(shù)據(jù)的地址,即對象的引用。 七十五:請寫出求斐波那契數(shù)列任意一位的值得算法 遞歸實現(xiàn): int Fib1(int index){ if(index迭代實現(xiàn): int Fib5(int index){ if(index參看更多實現(xiàn)方法 七十六:協(xié)同程序的執(zhí)行代碼是什么?有何用處,有何缺點? function Start() { // 協(xié)同程序WaitAndPrint在Start函數(shù)內(nèi)執(zhí)行,可以視同于它與Start函數(shù)同步執(zhí)行. StartCoroutine(WaitAndPrint(2.0)); print (\"Before WaitAndPrint Finishes \" + Time.time );} function WaitAndPrint (waitTime : float) { // 暫停執(zhí)行waitTime秒 yield WaitForSeconds (waitTime); print (\"WaitAndPrint \"+ Time.time );} 作用:一個協(xié)同程序在執(zhí)行過程中,可以在任意位置使用yield語句。yield的返回值控制何時恢復(fù)協(xié)同程序向下執(zhí)行。協(xié)同程序在對象自有幀執(zhí)行過程中堪稱優(yōu)秀。協(xié)同程序在性能上沒有更多的開銷。 缺點:協(xié)同程序并非真線程,可能會發(fā)生堵塞。 七十七:什么是里氏代換元則? 里氏替換原則(Liskov Substitution Principle LSP)面向?qū)ο笤O(shè)計的基本原則之一。通俗點:就是子類對象可以賦值給基類對象,基類對象不能賦值給子類對象 參考 七十八:Mock和Stub有何區(qū)別? Mock與Stub的區(qū)別:Mock:關(guān)注行為驗證。細粒度的測試,即代碼的邏輯,多數(shù)情況下用于單元測試。Stub:關(guān)注狀態(tài)驗證。粗粒度的測試,在某個依賴系統(tǒng)不存在或者還沒實現(xiàn)或者難以測試的情況下使用,例如訪問文件系統(tǒng),數(shù)據(jù)庫連接,遠程協(xié)議等。 七十九:概述序列化: 序列化簡單理解成把對象轉(zhuǎn)換為容易傳輸?shù)母袷降倪^程。比如,可以序列化一個對象,然后使用HTTP通過Internet在客戶端和服務(wù)器端之間傳輸該對象 八十:堆和棧的區(qū)別? 棧通常保存著我們代碼執(zhí)行的步驟,如在代碼段1中 AddFive()方法,int pValue變量,int result變量等等。而堆上存放的則多是對象,數(shù)據(jù)等。我們可以把棧想象成一個接著一個疊放在一起的盒子。當我們使用的時候,每次從最頂部取走一個盒子。棧也是如此,當一個方法(或類型)被調(diào)用完成的時候,就從棧頂取走,接著下一個。堆則不然,像是一個倉庫,儲存著我們使用的各種對象等信息,跟棧不同的是他們被調(diào)用完畢不會立即被清理掉。 八十一:概述c#中代理和事件? 代理就是用來定義指向方法的引用。 C#事件本質(zhì)就是對消息的封裝,用作對象之間的通信;發(fā)送方叫事件發(fā)送器,接收方叫事件接收器 八十二:客戶端與服務(wù)器交互方式有幾種? socket通常也稱作”套接字”,實現(xiàn)服務(wù)器和客戶端之間的物理連接,并進行數(shù)據(jù)傳輸,主要有UDP和TCP兩個協(xié)議。Socket處于網(wǎng)絡(luò)協(xié)議的傳輸層。 http協(xié)議傳輸?shù)闹饕衕ttp協(xié)議 和基于http協(xié)議的Soap協(xié)議(web service),常見的方式是 http 的post 和get 請求,web 服務(wù)。 八十三:Unity和Android與iOS如何交互? Unity可以到處Android和iOS的工程,然后通過安卓或者iOS的類去給Unity發(fā)消息,調(diào)用Unity中的方法 八十四:如何在Unity3D中查看場景的面試,頂點數(shù)和Draw Call數(shù)?如何降低Draw Call數(shù)? 在Game視圖右上角點擊Stats。降低Draw Call 的技術(shù)是Draw Call Batching 這個在5.0以后在window-》Profiler下面,快捷鍵是cmd + 7(ctl + 7 八十五:請問alpha test在何時使用?能達到什么效果? Alpha Test ,中文就是透明度測試。簡而言之就是V&F shader中最后fragment函數(shù)輸出的該點顏色值(即上一講frag的輸出half4)的alpha值與固定值進行比較。AlphaTest語句通常于Pass{}中的起始位置。Alpha Test產(chǎn)生的效果也很極端,要么完全透明,即看不到,要么完全不透明。 八十六:UNITY3d在移動設(shè)備上的一些優(yōu)化資源的方法 1.使用assetbundle,實現(xiàn)資源分離和共享,將內(nèi)存控制到200m之內(nèi),同時也可以實現(xiàn)資源的在線更新 2.頂點數(shù)對渲染無論是cpu還是gpu都是壓力最大的貢獻者,降低頂點數(shù)到8萬以下,fps穩(wěn)定到了30幀左右 3.只使用一盞動態(tài)光,不是用陰影,不使用光照探頭 粒子系統(tǒng)是cpu上的大頭 4.剪裁粒子系統(tǒng) 5.合并同時出現(xiàn)的粒子系統(tǒng) 6.自己實現(xiàn)輕量級的粒子系統(tǒng) animator也是一個效率奇差的地方 7.把不需要跟骨骼動畫和動作過渡的地方全部使用animation,控制骨骼數(shù)量在30根以下 8.animator出視野不更新 9.刪除無意義的animator 10.animator的初始化很耗時(粒子上能不能盡量不用animator) 11.除主角外都不要跟骨骼運動apply root motion 12.絕對禁止掉那些不帶剛體帶包圍盒的物體(static collider )運動 NUGI的代碼效率很差,基本上runtime的時候?qū)pu的貢獻和render不相上下 13每幀遞歸的計算finalalpha改為只有初始化和變動時計算 14去掉法線計算 15不要每幀計算viewsize 和windowsize 16filldrawcall時構(gòu)建頂點緩存使用array.copy 17.代碼剪裁:使用strip level ,使用.net2.0 subset 18.盡量減少smooth group 19.給美術(shù)定一個嚴格的經(jīng)過科學(xué)驗證的美術(shù)標準,并在U3D里面配以相應(yīng)的檢查工具 八十七:四元數(shù)有什么作用? 對旋轉(zhuǎn)角度進行計算時用到四元數(shù) 八十八:將Camera組件的ClearFlags選項選成Depth only是什么意思?有何用處? 如果把攝像機的ClearFlags勾選為Deapth Only,那么攝像機就會只渲染看得見的對象,把背景會完全透明,這種情況一般用在兩個攝像機以上的場景中 八十九:在編輯場景時將GameObject設(shè)置為Static有何作用? 設(shè)置游戲?qū)ο鬄镾tatic時,這些部分被靜態(tài)物體擋住而不可見時,將會剔除(或禁用)網(wǎng)格對象。因此,在你的場景中的所有不會動的物體都應(yīng)該標記為Static。 九十:有A和B兩組物體,有什么辦法能夠保證A組物體永遠比B組物體先渲染? 把A組物體的渲染對列大于B物體的渲染隊列,通過shader里面的渲染隊列來渲染 九十一:將圖片的TextureType選項分別選為““Texture”和“Sprite”有什么區(qū)別 Sprite作為UI精靈使用,Texture作用模型貼圖使用。Sprite需要2的整次冪,打包圖片省資源 九十二:問一個Terrain,分別貼3張,4張,5張地表貼圖,渲染速度有什么區(qū)別?為什么? 沒有區(qū)別,因為不管幾張貼圖只渲染一次。 九十三:什么是DrawCall?DrawCall高了又什么影響?如何降低DrawCall? Unity中,每次引擎準備數(shù)據(jù)并通知GPU的過程稱為一次Draw Call。DrawCall越高對顯卡的消耗就越大。降低DrawCall的方法: 1. Dynamic Batching 2. Static Batching 3. 高級特性Shader降級為統(tǒng)一的低級特性的Shader。 九十四:實時點光源的優(yōu)缺點是什么? 可以有cookies – 帶有 alpha通道的立方圖(Cubemap )紋理。點光源是最耗費資源的。 九十五:Unity的Shader中,Blend SrcAlpha OneMinusSrcAlpha這句話是什么意思? 作用就是Alpha混合。公式:最終顏色 = 源顏色 x 源透明值 + 目標顏色 x(1 - 源透明值) 九十六:簡述水面倒影的渲染原理 原理就是對水面的貼圖紋理進行擾動,以產(chǎn)生波光玲玲的效果。用shader可以通過GPU在像素級別作擾動,效果細膩,需要的頂點少,速度快 九十七:簡述NGUI中Grid和Table的作用? 對Grid和Table下的子物體進行排序和定位 九十八:請簡述NGUI中Panel和Anchor的作用 1. 只要提供一個half-pixel偏移量,它可以讓一個控件的位置在Windows系統(tǒng)上精確的顯示出來(只有這個Anchor的子控件會受到影響) 2. 如果掛載到一個對象上,那么他可以將這個對象依附到屏幕的角落或者邊緣 3.UIPanel用來收集和管理它下面所有widget的組件。通過widget的geometry創(chuàng)建實際的draw call。沒有panel所有東西都不能夠被渲染出來,你可以把UIPanel當做Renderer 九十九:能用foreach遍歷訪問的對象需要實現(xiàn)_接口或聲明____方法的類型 IEnumerable;GetEnumerator 第二部分 1.以下哪一個選項不屬于Unity引擎所支持的視頻格式文件(D) A.后綴為mov的文件 B.后綴為mpg的文件 C.后綴為avi的文件 D.后綴為swf的文件 2.Unity引擎使用的是左手坐標系還是右手坐標系(A) A.左手坐標系 B.右手坐標系 C.可以通過ProjectSetting切換右手坐標系 D.可以通過Reference切換左手坐標系 3.什么是導(dǎo)航網(wǎng)格(NavMesh)(B) A.一種用于描述相機軌跡的網(wǎng)格 B.一種用于實現(xiàn)自動尋址的網(wǎng)格 C.一種被優(yōu)化過的物體網(wǎng)格 D.一種用于物理碰撞的網(wǎng)格 4.下列選項中有關(guān)Animator的說法錯誤的是?(D) A.Animator是Unity引擎中內(nèi)置的組件 B.任何一個具有動畫狀態(tài)機功能的GameObject都需要一個Anim組件 C.它主要用于角色行為的設(shè)置,包括StateMachine、混合樹BlendTrees以及同通過腳本控制的事件 D.Animator同Animation組件的用法是相同的 5.Application.loadLevel命令為(A) A.加載關(guān)卡 B.異步加載關(guān)卡 C.加載動作 D.加載動畫 6.下列選項中,關(guān)于Transform組件的Scale參數(shù)描述正確的是(A) A.Transform組件的Scale參數(shù)不會影響ParticleSystem產(chǎn)生粒子的大小 B.Transform組件的Scale參數(shù)不會影響GUITexture的大小 C.添加Collider組件后的GameoObject,其 Collider 組件的尺寸不受Transform組件的Scale參數(shù)影響 D.添加Rigidbody組件后的物體,大小將不再受Transform組件中 Scale 參數(shù)的影響 7.在 Unity 中的場景中創(chuàng)建 Camera 時,默認情況下除了帶有Transform、Camera、GUILayer、Flare Layer 組件之外,還帶有以下哪種組件(C) A.Mouse Look B.FPS Input Controller C.Audio Listener D.Character Motor 8.如果將一個聲音剪輯文件從Project 視圖拖動到 Inspector 視圖或者 Scene 視圖中的游戲?qū)ο笊?,該游戲?qū)ο髸詣犹砑右韵履姆N組件(C) A.Audio Listener B.Audio Clip C.Audio Source D.Audio Reverb Zone 9.下列敘述中有關(guān) Prefab 說法錯誤的是哪一項(B) A.Prefab 是一種資源類型 B.Prefab 是一種可以反復(fù)使用的游戲?qū)ο? C.Prefab 可以多次在場景進行實例 D.當一個 Prefab 添加到場景中時,也就是創(chuàng)建了它的一個實例 10.關(guān)于 MonoBehaviour.LateUpdate 函數(shù)描述錯誤的是:(B) A.當 MonoBehaviour 類被啟用后,每幀調(diào)用一次 B.常被用于處理 Rigidbody 的更新 C.在所有 Update 函數(shù)執(zhí)行后才能被調(diào)用 D.常被用于實現(xiàn)跟隨相機效果,且目標物體的位置已經(jīng)在 Update 函數(shù)中被更新 11.下列哪個函數(shù)不屬于碰撞事件(C) A.OnCollisionEnter B.OnCollisionExit C.OnCollisionUpdate D.OnCollisionStay 12.以下關(guān)于 MonoBehaviour.OnGUI()的描述錯誤的是(D) A.如果 MonoBehaviour 沒有被啟用,則OnGUI函數(shù)不會被調(diào)用 B.用于繪制和處理 GUI events C.每幀可能會被繪制多次,每次對應(yīng)于一個 GUI event D.每幀被調(diào)用一次 13.以下哪組攝像機中 Normalized View Port Rect 的數(shù)值設(shè)置可以使攝像機顯示的畫面位于1280*720分辨率的屏幕畫面右上角(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引擎中所支持的一種資源,可用作存儲網(wǎng)格信息 B.Collider 是Unity引擎中內(nèi)置的一種組件,可用對網(wǎng)格進行渲染 C.Collider 是Unity引擎中所支持的一種資源,可用作游戲?qū)ο蟮淖鴺宿D(zhuǎn)換 D.Collider 是Unity引擎中內(nèi)置的一種組件,可用作游戲?qū)ο笾g的碰撞檢測 15.以下關(guān)于WWW.LoadFromCacheOrDownload描述正確的是(C) A.可被用于將 Text Assets 自動緩存到本地磁盤 B.可被用于將 Resource 自動緩存到本地磁盤 C.可被用于將 Asset Bundles 自動緩存到本地磁盤 D.可被用于將任意格式的Unity資源文件自動緩存到本地磁盤 16.如何實現(xiàn)加載外部視頻并播放? 外部視頻文件:目前測試僅支持ogg格式(設(shè)置網(wǎng)絡(luò)獲取視頻時,必須將MIME設(shè)置.ogg為application/octet-stream) 場景設(shè)置:MainCamera上添加AudioSource腳本;播放物體上(如Plane)添加MovieTest腳本 MovieTest腳本: 17.游戲?qū)ο驜是游戲?qū)ο驛的子物體,游戲?qū)ο驛經(jīng)過了旋轉(zhuǎn),請寫出游戲B圍繞自身的Y軸進行旋轉(zhuǎn)的腳本語句,以及游戲?qū)ο驜圍繞世界坐標的Y軸旋轉(zhuǎn)的腳本語句。 繞世界坐標旋轉(zhuǎn):transform.Rotate (transform.up*speed*Time.deltatime); 繞自身Y軸旋轉(zhuǎn):transform.Rotate (Vector.up*speed*Time.deltatime); 18.Unity中用過哪些插件?具體功能 FXMaker,制作粒子特效;NGUI,制作2D界面;EasyTouch,搖桿;shaderForge,制作shader;Itween,制作動畫; 19.當刪除Unity工程Assets目錄下地meta文件時會導(dǎo)致什么?為什么? 會導(dǎo)致在場景中游戲?qū)ο罂床坏剑蛘邎箦e,材質(zhì)找不到資源。多人協(xié)作的時候會導(dǎo)致資源的重復(fù)產(chǎn)生。因為每個資源文件都對應(yīng)一個.meta文件,這個.meta文件中的guid就是唯一標識這個資源的。材質(zhì)就是通過這個guid來記錄自己使用了那些資源,而且同一個資源的guid會因為不同的電腦而不同,所以當你上傳了丟失了.meta文件的資源的時候,到了別人的機器上就會重新產(chǎn)生guid,那個這個資源就相當于垃圾了。 20.頻繁創(chuàng)建GameObject會降低程序性能為什么?怎么解決? 頻繁創(chuàng)建游戲?qū)ο?,會增加游戲的Drawcall數(shù),降低幀率,GPU會一直在渲染繪制。可以通過對象池來管理對象:當需要創(chuàng)建一個游戲?qū)ο髸r,先去對象池中查找一下對象池中是否存在沒有被正在使用的對象,如果有的話直接使用這個對象,并把它標記為正在使用,沒有話就創(chuàng)建一個,并把它添加到池中,然后標記為使用中。一個游戲?qū)ο笫褂猛戤叺臅r候,不要銷毀掉,把它放在池中,標記為未使用。 ——————————-21.關(guān)于Vector3 的API,以下說法正確的是(BC) A.Vector3.normalize 可以獲取一個三維向量的法線向量 B.Vector3.magnitude 可以獲取一個三維向量的長度 C.Vector3.forward 與 Vector3(0,0,1)是一樣的意思 D.Vector3.Dot(向量A,向量B)是用來計算向量A與向量B的叉乘 22.以下哪個函數(shù)在游戲進入新場景后會被馬上調(diào)用(B) A.MonoBehaviour.OnSceneWastLoaded() B.MonoBehaviour.OnSceneEnter() C.MonoBehaviour.OnLevelEnter() D.MonoBehaviour.OnLevelWastLoaded() 23.采用Input.mousePosition 來獲取鼠標在屏幕上的位置,以下表達正確的是(C) A.左上角為原點(0,0),右下角為(Screen.Width, Screen.Height) B.左下角為原點(0,0),右下角為(Screen.Height, Screen.Width) C.左下角為原點(0,0),右上角為(Screen.Width, Screen.Height) D.左上角為原點(0,0),右下角為(Screen.Height, Screen.Width) 24.如何通過腳本來刪除其自身對應(yīng)的Gameobject(A) A.Destroy(gameObject) B.this.Destroy() C.Destroy(this) D.其他三項都可以 25.某個GameObject有一個名為MyScript的腳本,該腳本中有一個名為DoSomething 的函數(shù),則如何在該Gameobject的另外一個腳本中調(diào)用該函數(shù)?(A) A.GetComponent().DoSomething() B.GetComponent C.GetComponent().Call(“DoSomething”) D.GetComponent 26.Animator.CrossFade 命令作用是:(B) A.動畫放大 B.動畫轉(zhuǎn)換 C.Update() D.OnMouseButton() 27.OnEnable,Awake,Start 運行時的發(fā)生順序?(A) A.Awake->OnEnable->Start B.Awake->Start->OnEable C.OnEnable-Awake->Start D.Start->OnEnable->Awake 28.以下選項中,正確的是(D) A.Mathf.Round方法作用是限制 B.Mathf.Clamp方法作用是插值 C.Mathf.Lerp方法作用是四舍五入 D.Mathf.Abs方法作用是取得絕對值 29.以下選項中,將游戲?qū)ο罄@Z軸逆時針旋轉(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)聽的端口,useNat設(shè)置NAT穿透功能。如果你想要這個服務(wù)器能夠接受連接使用NAT穿透,使用facilitator,設(shè)置這個為true。如果有錯誤會有返回錯誤。 31.請寫出以下函數(shù)的含義和運算結(jié)果 delegate b Func(a a1);static void Main(string[] args){ Func mFunc = x => x == 5; Console.WriteLine(mFunc(6));}false,就是定義一個delegate,返回值類型為 b,有一個參數(shù),類型為a。 32.編寫一個函數(shù),輸入一個32位整數(shù),計算這個整數(shù)有多少個bit為1. uint BitCount (uint n){ uint c = 0; // 計數(shù)器 while (n > 0) { if ((n & 1) == 1) // 當前位是1 ++c; // 計數(shù)器加1 n >>= 1; // 移位 } return c;}33.某游戲中的裝備系統(tǒng)有16種附加屬性,每種附加屬性使用一個32位的ID表示(比如10001表示加人物hp的附加屬性,10002表示加人物mp的附加屬性),一件裝備做多有4個附加屬性,請寫一個程序輸出所有附加屬性的組合。 # 34.請實現(xiàn)如下函數(shù),在Unity中有一副骨骼樹,請使用遞歸方式與非遞歸方式實現(xiàn)先序遍歷,在Unity的Console輸出所有骨骼名。 可能用到的函數(shù) public Transform GetChild(int index);public int Transform.childCountpublic void OutputTree(Transform root){}# 35.簡要解釋下數(shù)據(jù)庫中ACID的含義。 ACID是指在可靠數(shù)據(jù)庫管理系統(tǒng)(DBMS)中,事務(wù)所具有的四個特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。 原子性是指事務(wù)是一個不可分割的工作單位,事務(wù)中的操作要么都發(fā)生,要么都不發(fā)生。 一致性是指在事務(wù)開始之前和事務(wù)結(jié)束以后,數(shù)據(jù)庫的完整性約束沒有被破壞。這是說數(shù)據(jù)庫事務(wù)不能破壞關(guān)系數(shù)據(jù)的完整性以及業(yè)務(wù)邏輯上的一致性。例如:對銀行轉(zhuǎn)帳事務(wù),不管事務(wù)成功還是失敗,應(yīng)該保證事務(wù)結(jié)束后ACCOUNT表中aaa和bbb的存款總額為2000元。 隔離性多個事務(wù)并發(fā)訪問時,事務(wù)之間是隔離的,一個事務(wù)不應(yīng)該影響其它事務(wù)運行效果。這指的是在并發(fā)環(huán)境中,當不同的事務(wù)同時操縱相同的數(shù)據(jù)時,每個事務(wù)都有各自的完整數(shù)據(jù)空間。由并發(fā)事務(wù)所做的修改必須與任何其他并發(fā)事務(wù)所做的修改隔離。事務(wù)查看數(shù)據(jù)更新時,數(shù)據(jù)所處的狀態(tài)要么是另一事務(wù)修改它之前的狀態(tài),要么是另一事務(wù)修改它之后的狀態(tài),事務(wù)不會查看到中間狀態(tài)的數(shù)據(jù)。 持久性,意味著在事務(wù)完成以后,該事務(wù)所對數(shù)據(jù)庫所作的更改便持久的保存在數(shù)據(jù)庫之中,并不會被回滾。即使出現(xiàn)了任何事故比如斷電等,事務(wù)一旦提交,則持久化保存在數(shù)據(jù)庫中。 36.32位整數(shù)256和255按位異或后的結(jié)果是(511) 37.unix/linux 系統(tǒng)將所有的I/O設(shè)備模型化為文件,c語言中的(stdin),(stdout)和(stderr)分別表示標準輸入,標準輸出,標準錯誤。 38.k層二叉樹最多有 2^k - 1 個結(jié)點。 39.中綴算式(8 + x*y)-2x/3的后綴算式是_。 40.對以下二叉樹進行前序遍歷的結(jié)果是(ABDGCEHF) 41.寫出一個C類ip地址(192.168.1.105),該ip地址一個合法的網(wǎng)格掩碼是(255.255.255.224). 42.c/c++程序運行時有堆內(nèi)存與棧內(nèi)存之分,請寫一個語句在堆中分配一個整數(shù):(int a = new int(4)),在棧內(nèi)存中分配一個整數(shù):(int a = 5)。 43.簡述從C/C++源代碼生成可執(zhí)行文件所經(jīng)歷的幾個過程和每個過程中所做的事情。 預(yù)編譯-》編譯-》鏈接-》執(zhí)行 44.簡述TCP建立連接的過程,最好能畫出時序圖。 三次握手; 45.有一個c語言函數(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;}請問這個函數(shù)的功能是什么? 返回的結(jié)果是v 或者 2 ^ 跟下v次方 + 1(比如125返回128,128返回的就是128) 46.列出c語言中static關(guān)鍵字的用法。 static 關(guān)鍵字至少有下列幾個作用: (1)函數(shù)體內(nèi)static 變量的作用范圍為該函數(shù)體,不同于auto 變量,該變量的內(nèi)存只被分配一次,因此其值在下次調(diào)用時仍維持上次的值; (2)在模塊內(nèi)的static 全局變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問; (3)在模塊內(nèi)的static 函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用,這個函數(shù)的使用范圍被限制在聲明它的模塊內(nèi); (4)在類中的static 成員變量屬于整個類所擁有,對類的所有對象只有一份拷貝; (5)在類中的static 成員函數(shù)屬于整個類所擁有,這個函數(shù)不接收this 指針,因而只能訪問類的static 成員變量。 47.解釋一下Unity3D中的協(xié)程(coroutine)是什么?并舉例說明 在主線程運行的同時開啟另一段邏輯處理,來協(xié)助當前程序的執(zhí)行,協(xié)程很像多線程,但是不是多線程,Unity的協(xié)程實在每幀結(jié)束之后去檢測yield的條件是否滿足。 48.物體自旋轉(zhuǎn)使用的函數(shù)叫什么?物體繞某點旋轉(zhuǎn)使用函數(shù)叫什么? 物體自旋轉(zhuǎn)函數(shù)transform.Rotate,物體繞某點旋轉(zhuǎn)函數(shù):transform.RotateAround 49.使用prefab預(yù)制物體有什么好處? 1.Prefab一個重要的優(yōu)勢就是編輯prefab資源后,場景中所有使用Prefab克隆的游戲?qū)ο髮⑷渴褂眯戮庉嫷馁Y源,無需一個一個的給場景中的對象賦值。 2.當游戲中需要頻繁創(chuàng)建一個物體時,使用Prefab能夠節(jié)省內(nèi)存。 3.當你在一個場景中增加一個Prefabs,你就實例化了一個Prefabs。 50.設(shè)有如下關(guān)系表R1和R2 R1(NO, NAME, SEX, AGE, CLASS) R2(NO, SUBJECT, SCORE) 主關(guān)鍵字是NO,其中NO為學(xué)號,NAME為姓名,SEX為性別,AGE為年齡,CLASS為班號,SUBJECT為科目,SCORE為成績。寫出實現(xiàn)下列功能的SQL語句。查找學(xué)號為20的學(xué)生的姓名,科目,成績。 SELECT NAME,SUBJECT,SCORE FORM R1 INNER JOIN R2 ON R1.NO=R2.NO WHERE R1.NO = 20 51.描述多人聯(lián)網(wǎng)中位置的同步和聊天通訊的實現(xiàn)方法,并編程寫出如何實現(xiàn)多人協(xié)同中交互操作。(交互操作例如,血值為100的兩個角色人物可以相互射擊雙方,射擊一次減去血值10,當血值為0的時候證明已經(jīng)死亡) # 52.當實例化一個prefab對象,prefab對象上面掛載了一個繼承MonoBehaviour的腳本 1.請問這個腳本分別會按順序調(diào)用哪些函數(shù),并列出哪些函數(shù)是反復(fù)進去的 # 2.請問當這個實例化對象先調(diào)用了SetActive(false),然后又調(diào)用了SetActive(true),那么這個腳本依次會調(diào)用哪些函數(shù)方法? # 3.如果在腳本的Awake()函數(shù)中,調(diào)用了this.gameObject.AddComponent()(PS:GameController為另一個繼承Mono的腳本類),請問此時腳本函數(shù)的調(diào)用順序是否發(fā)生變化? 53.if(go.CompareTag(“Enemy”))和if(go.tag == “Enemy”)兩種判斷方法哪種是合適的,為什么? 第一種合適,因為第二種會占用更多內(nèi)存。 54.DestroyImmediate和Destroy的區(qū)別是? DestroyImmeditate 銷毀對象的時候,會立即釋放資源。Destroy只是從該場景銷毀,但是還在內(nèi)存當中。 55.詳細說明Unity中資源加載的方法,以及他們的區(qū)別? 1.通過Resources模塊,調(diào)用它的load函數(shù):可以直接load并返回某個類型的Object,前提是要把這個資源放在Resource命名的文件夾下,Unity不關(guān)有沒有場景引用,都會將其全部打入到安裝包中。 2.通過bundle的形式:即將資源打成 asset bundle 放在服務(wù)器或本地磁盤,然后使用WWW模塊get 下來,然后從這個bundle中l(wèi)oad某個object。 56.從代碼角度上如何進行內(nèi)存優(yōu)化? # 57.分別寫出Invoke和協(xié)程的幾種用法? # 58.以下函數(shù)的功能是計算斐波那契數(shù)列的第n項,請?zhí)羁? int func(int n){ if(n<=2) return 1; return n + func(n-1);}59.C語言中宏定義中若有多行,可以使用字符(\). 60.C語言中32位整數(shù)能表達的最小的數(shù)是-2^31~2^31-1. 61.使用(點乘)向量運算可以很方便地計算出三維空間中兩個單位向量之間夾角的cos值。 62.類unix系統(tǒng)中某文件的權(quán)限為:drw-r–r–,用八進制數(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;則與上述程序段功能等價的賦值語句是(B) A.s = a + b B.s = a + c C.s = s + c D.s = b + c 64.簡述static和const關(guān)鍵字的作用 static 關(guān)鍵字至少有下列幾個作用: (1)函數(shù)體內(nèi)static 變量的作用范圍為該函數(shù)體,不同于auto 變量,該變量的內(nèi)存只被分配一次,因此其值在下次調(diào)用時仍維持上次的值; (2)在模塊內(nèi)的static 全局變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問; (3)在模塊內(nèi)的static 函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用,這個函數(shù)的使用范圍被限制在聲明它的模塊內(nèi); (4)在類中的static 成員變量屬于整個類所擁有,對類的所有對象只有一份拷貝; (5)在類中的static 成員函數(shù)屬于整個類所擁有,這個函數(shù)不接收this 指針,因而只能訪問類的static 成員變量。 const 關(guān)鍵字至少有下列幾個作用: (1)欲阻止一個變量被改變,可以使用const 關(guān)鍵字。在定義該const 變量時,通常需要對它進行初始化,因為以后就沒有機會再去改變它了; (2)對指針來說,可以指定指針本身為const,也可以指定指針所指的數(shù)據(jù)為const,或二者同時指定為const; (3)在一個函數(shù)聲明中,const 可以修飾形參,表明它是一個輸入?yún)?shù),在函數(shù)內(nèi)部不能改變其值; (4)對于類的成員函數(shù),若指定其為const 類型,則表明其是一個常函數(shù),不能修改類的成員變量 ; (5)對于類的成員函數(shù),有時候必須指定其返回值為const 類型,以使得其返回值不為“左值”。 65.用你熟悉的語言及你認為最簡潔的方法書寫計算 s = 1!+2!+3!+…+num!的代碼。num為輸入,s為輸出。(!代表階乘 3!= 1 * 2 * 3 66.用你熟悉的語言從一個字符串中去掉相連的重復(fù)字符,例如原字符串“adffjkljaalkjhl”變?yōu)椤癮dfjkljalkjhl” 第三部分1.哪種實時光源是Unity中沒有的?(D) A.點光源 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.以下哪種操作步驟可以在場景中添加“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)建一個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.下列哪一項不屬于Camera中的“Clear Flags”?(D) A.Skybox B.Solid Color C.Depth Only D.Background 6.以下哪種腳本語言是Unity編輯器所不支持的?(D) A.Javascript B.C# C.Boo D.Perl 7.對于Prefab,以下說法錯誤的是?(D) A.Prefab資源可以在項目中多次重復(fù)使用 B.由Prefab實例出的GameObject,其在Hierarchy試圖中表現(xiàn)為藍色 C.Prefab上的組件信息一經(jīng)改變,其實例出的GameObject也會自動改變 D.實例出的GameObject上的組件信息一經(jīng)改變,其對應(yīng)出的Prefab也會自動改變 8.下面哪種做法可以打開Unity的Asset Store?(A) A.Windows->Asset Store B.Edit->Asset Store C.File->Asset Store D.Assets->Asset Store 9.在哪個面板中可以修改物體的空間屬性,如位置,朝向,大小等(B) A.Project B.Inspector C.Hierarchy D.Toolbar 10.如何為一個Asset 資源設(shè)定一個Label,從而能夠方便準確的搜索到?(D) A.在Project窗口中選中一個Asset,右鍵->Create->Label B.在Project窗口中選中一個Asset,右鍵->Add Label C.在Project窗口中選中一個Asset,在Inspector窗口中點擊添加Label的圖標 D.在Project窗口中選中一個Asset,在Inspector窗口中點擊按鈕“Add Label” 11.Mecanim系統(tǒng)中,Body Mask的作用是?(D) A指定身體的某一部分是否參與骨骼動畫 B.指定身體的某一部分是否參與物理模擬 C.指定身體的某一部分是否可以輸出骨骼信息 D.指定身體的某一部分是否參與渲染 12.以下哪種操作步驟可以打開Unity編輯器的Lightmapping視圖?(C) A.File->Lightmapping B.Assets->Lightmapping C.Windows->Lightmapping D.Component->Lightmapping 13.下列關(guān)于光照貼圖,說法錯誤的是?(C) A.使用光照貼圖比使用實時光源渲染要快 B.可以降低游戲內(nèi)存消耗 C.可以增加場景真實感 D.多個物體可以使用同一張光照貼圖 14.如何為物體添加光照貼圖所使用的UV (B) A.不用添加,任何時候都會自動生成 B.更改物體導(dǎo)入設(shè)置,勾選“Generate Lighting UVs” C.更改物體導(dǎo)入設(shè)置,勾選“Swap UVs” D.更改物體導(dǎo)入設(shè)置,在UVs選項中選擇“Use Lightmaps” 15.在哪個模塊下可以修改Render Path?(A) A.Camera B.Light C.Render Settings D.Project Setting->Quality 16.以下哪項技術(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,以下說法正確的是?(C) A.Vector3.normalize可以獲取一個三維向量的法線向量 B.Vector3.magnitude可以獲取一個三維向量的長度 C.Vector3.forward與Vector3(0,0,1)是一樣的 D.Vector3.Dot(向量A,向量B)是用來計算向量A與向量B的叉乘 18.下列那些選項不是網(wǎng)格層屬性的固有選項?(B) A.Default B.Walkable C.Not Walkable D.Jump

為您推薦

2020考研英語長難句解析(16)(考研英語長難句精解70句)

( 2015年考研試題 Section Ⅱ Reading Comprehension Part A Text2 第4段第1句)They should start by discarding California’s lame argume

2024-08-09 22:31

雅思寫作口語8.0+必備替換詞 雅思口語高級詞匯替換

如何讓你的口語用詞脫穎而出?寫作時突然想不起這個單詞怎么辦?如果有另外一個甚至幾個詞換一下不但解決了你詞荒的困境還能讓你拿高分如何?今天從口語寫作方面,總結(jié)了幾個中國考生最喜歡用的“考高分級”單詞,并找到了高分各類高分替換詞,幫大家做到不落

2024-08-09 22:31

雅思寫作口語8.5+必備替換詞 雅思聽力替換詞整理

如何讓你的口語用詞脫穎而出?寫作時突然想不起這個單詞怎么辦?如果有另外一個甚至幾個詞換一下不但解決了你詞荒的困境還能讓你拿高分如何?今天從口語寫作方面,總結(jié)了幾個中國考生最喜歡用的“考高分級”單詞,并找到了高分各類高分替換詞,幫大家做到不落

2024-08-09 22:30

計算機四級嵌入式題庫,還有易錯題總結(jié)哦

很多人都在考計算機四級嵌入式,為的是有一個更好的工作,嵌入式四級四級,聽名字就知道他不簡單,對于嵌入式四級來說,包含的知識點比較多,有編程開發(fā)方向的,有操作系統(tǒng)方面的都是這種有難度的題型,介于這個,我總結(jié)出了一些嵌入式四級題,計算機四級考

2024-08-09 22:29

五個 SQL 查詢性能測試題,只有 40% 及格率,你敢來挑戰(zhàn)嗎? sql測試數(shù)據(jù)

原文地址:https://blog.csdn.net/horses/article/details/103028340下面是 5 個關(guān)于索引和 SQL 查詢性能的測試題;其中 4 個題目都是答案二選一,1 個題目是三選一。只要答對 3 個就

2024-08-09 22:29

很細心!Java 超全面試題整理(非常值得一看的java面試題)

Java 基礎(chǔ)篇Java 有哪些特點并發(fā)性的: 你可以在其中執(zhí)行許多語句,而不必一次執(zhí)行它面向?qū)ο蟮模夯陬惡兔嫦驅(qū)ο蟮木幊陶Z言。獨立性的: 支持一次編寫,到處運行的獨立編程語言,即編譯后的代碼可以在支持 Java 的所有平臺上運行。Jav

2024-08-09 22:28

加載中...