今年3月份面試unity3d游戲程序,先做的面試題,然后人事問了我?guī)讉€(gè)之前游戲開發(fā)的問題,問我英語怎么樣等等,介紹了公司情況和對(duì)unity3d程序的要求。之后就回來了,總共面了不到1個(gè)半小時(shí)吧。筆試答得不好。下面分享一下這次我的unity3d筆試題,答案是我做的,如果有什么錯(cuò)誤或者更好的回答,歡迎大家吐槽糾正。1、C#程序題
PRivate static void aaa(int x) { x = 10; }private static void bbb(ref int x) { x = 10; } static void Main(string[] args) { int x = 0; aaa(x); //現(xiàn)在x的值是:___ bbb(ref x); //現(xiàn)在x的值是:___}
答案:0,,10。
詳細(xì)解答:一個(gè)是復(fù)制一份值過去,一個(gè)是把地址傳過去
2、英文翻譯題(把下面文字翻譯成中文)
Transform.LocalPosition
var localPosition:Vector3;
Description:
Position of the transform relative to the parent transform.
If the transform has no parent,it is the same as Transform.position.
Note that the parent transform's world rotation and scale are appliedto the local position whencalculating the world position.This means that while 1 unit in Transform.position is always 1 unit in transform.localPosition will get scaled by the scale of all ancestors.
描述:
相對(duì)于父級(jí)的變換的位置。
如果該變換沒有父級(jí),那么等同于Transform.position。
注意當(dāng)計(jì)算世界的位置時(shí),父級(jí)變換的世界旋轉(zhuǎn)和縮放被應(yīng)用到自身的位置。意思是說Transform.position的1個(gè)單位是1個(gè)單位,Transform.localPosition的1個(gè)單位將由所有祖先的縮放獲得縮放,簡單來所自身位置的1單位將受它所有上級(jí)的縮放影響。
詳細(xì)解答:文章來自于《unity圣典》,參考http://game.ceeger.com/Script/Transform/Transform.localPosition.html
3、U3D提供了一個(gè)用于保存讀取數(shù)據(jù)的類,(playerprefs),請(qǐng)列出保存讀取整形數(shù)據(jù)的函數(shù)。
答案:PlayerPrefs.SetInt();
詳細(xì)解答:
PlayerPrefs類可保存與讀取3種基本的數(shù)據(jù)類型,它們是浮點(diǎn)型、整形和字符串型,涉及的方法如下:
SetFloat();保存浮點(diǎn)類型
SetInt();保存整形
SetString();保存字符串型
GetFloat();獲取浮點(diǎn)類型
GetInt();獲取整形
GetString();獲取字符串
4、請(qǐng)簡述向量點(diǎn)乘的含義:
向量u點(diǎn)乘向量v;u的長度與v在u上的投影長度的乘積,它是一個(gè)標(biāo)量,而且可正可負(fù)。
物理意義:叉乘點(diǎn)乘,也叫向量的內(nèi)積、數(shù)量積。顧名思義,求下來的結(jié)果是一個(gè)數(shù)。向量a·向量b=|a||b|cos<a,b>在物理學(xué)中,已知力與位移求功,實(shí)際上就是求向量F與向量s的內(nèi)積,即要用點(diǎn)乘。叉乘,也叫向量的外積、向量積。顧名思義,求下來的結(jié)果是一個(gè)向量,記這個(gè)向量為c。|向量c|=|向量a×向量b|=|a||b|sin<a,b>向量c的方向與a,b所在的平面垂直,且方向要用“右手法則”判斷(用右手的四指先表示向量a的方向,然后手指朝著手心的方向擺動(dòng)到向量b的方向,大拇指所指的方向就是向量c的方向)。因此向量的外積不遵守乘法交換率,因?yàn)橄蛄縜×向量b=-向量b×向量a在物理學(xué)中,已知力與力臂求力矩,就是向量的外積,即叉乘。將向量用坐標(biāo)表示(三維向量),若向量a=(a1,b1,c1),向量b=(a2,b2,c2),則向量a·向量b=a1a2+b1b2+c1c2向量a×向量b=|ijk||a1b1c1||a2b2c2|=(b1c2-b2c1,c1a2-a1c2,a1b2-a2b1)(i、j、k分別為空間中相互垂直的三條坐標(biāo)軸的單位向量)。
參考:
http://hi.baidu.com/cly84920/item/7bc79fdf97ff4f91260ae733
http://wenku.baidu.com/link?url=9Nq1MttA0DqgPgYWYIix7hpqUTDv8ifyq4xK09LtzaWpLNxYpnsjhqU1kWS5Tg4ZiLPTAJsqCB4U3Ka_4L4lL1oKfb1yTXSHck6DX1QRrdO
5、物體發(fā)生碰撞的必要條件是什么。
答案:兩個(gè)物體都必須帶有碰撞器(Collider),其中一個(gè)物體還必須帶有Rigidbody剛體。
6、程序題:aaa()函數(shù)的意義,以及test()執(zhí)行以后在控制臺(tái)輸出什么?
public delegate void DoHurt();
protected DoHurt hurtCall;
public void aaa(DoHurt call){this.hurtCall=(DoHurt)Delegate.Combine(this.hurtCall,call);}public void myHurt001(){Debug.log("調(diào)用1");}public void myhurt002(int a,int b){Debug.Log("調(diào)用2");}public void test(){this.aaa(myHurt001);this.aaa(myHurt002);this.hurtCall();}
答案:貌似this.aaa(myHurt002)會(huì)報(bào)錯(cuò)。
詳細(xì)解答:如果hurtCall為null,call不為null時(shí),hurtCall這個(gè)委托變量就指向call指向的方法,如果hurtCall不為null,call為null時(shí),hurtCall這個(gè)委托變量就指向hurtCall指向的方法。aaa方法的參數(shù)為一個(gè)無參的委托變量,這里面指向了myHurt002,而myHurt002是一個(gè)有參數(shù)的方法。這道題歡迎探討。
7、游戲?qū)ο驜是游戲?qū)ο驛的子物體,游戲?qū)ο驛經(jīng)過了旋轉(zhuǎn),請(qǐng)寫出游戲?qū)ο驜圍繞自身的Y軸進(jìn)行旋轉(zhuǎn)的腳本語句,以及游戲?qū)ο驜圍繞世界坐標(biāo)的Y軸旋轉(zhuǎn)的腳本語句。
對(duì)象B圍繞自身的Y軸進(jìn)行旋轉(zhuǎn):B.transform.Rotate(Vector.up);
對(duì)象B圍繞世界坐標(biāo)的Y軸旋轉(zhuǎn):B.transform.RotateAround(Vector.up);
詳細(xì)解答:transform.Rotate();用于設(shè)置模型自身旋轉(zhuǎn);transform.RotateAround();用于設(shè)置模型圍繞某一個(gè)點(diǎn)旋轉(zhuǎn)。
Vector.right:X軸方向;
Vector.up:Y軸方向;
Vector.forward:Z軸方向。
8、已知三維空間中的A、B兩個(gè)點(diǎn)的坐標(biāo),請(qǐng)寫出在X-Z平面上,兩個(gè)之間的距離的計(jì)算函數(shù)。
其實(shí)就是求A、B兩個(gè)點(diǎn)在XOZ平面上的投影的距離。投影以后,Y坐標(biāo)等于0,X、Z不變,AB投影的距離就是兩個(gè)X坐標(biāo)和兩個(gè)Z坐標(biāo)的差的平方的和,再開方。
9、假設(shè)一個(gè)只能火力點(diǎn),它將攻擊任何出現(xiàn)在其正前方30度內(nèi)的、距離在10米之內(nèi)的敵人,請(qǐng)為其書寫開火判斷AI腳本。
AI不熟悉,在研究中...
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注