第一篇:對Unity3D一周所學總結(定稿)
對Unity3D一周所學的總結
一、Transform
游戲對象的Transform屬性可以進行位置、旋轉、大小的設置。
屬性:
1、transform.position在世界空間坐標transform的位置
如:transform.position = Vector3(0, 0,100);//移動物體到(0, 0, 100)
2、transform.rotaition//旋轉
如:transform.rotation = Quaternion.identity;//重設世界的旋轉角度
3、transform.scale//縮放
如:transform.localScale += Vector3(0.1,0,0);//擴大物體的x軸向0.1個單位
transform.localScale-= Vector3(0.5, 0, 0);
方法:
1、位移:transform.Translate
如:transform.Translate(Vector3.forward);//對象向前位移
transform.Translate(new Vector3(10,0,0));//對象向x軸方向位移
2、旋轉:transform.Rotate
如:transform.Rotate(new Vector3(0,10,0));對象繞y軸旋轉
3、圍繞旋轉:transform.RotateAround
如: transform.RotateAround(Vector3.zero, Vector3.up, 20 * Time.deltaTime);
//圍繞世界坐標原點,每秒20度物體自旋
查找:
Transform.Find //通過名字查找子物體并返回它
如: //查找到a物體并旋轉它
function Update()
{
a = transform.Find(“a/b/c/d”);
a.Rotate(Time.deltaTime*20, 0, 0);
}
二、Input
想要讀取軸向使用Input.GetAxis方法獲取下列默認軸: “Horizontal” 和“Vertical” 映射于控制桿、A、W、S、D和箭頭鍵(方向鍵)。“Mouse X” 和“Mouse Y” 映射于鼠標,“Fire1”, “Fire2” “Fire3”映射于鍵盤的Ctrl、Alt、Cmd鍵和鼠標中鍵或控制器的按鈕。新的輸入設置可以使用輸入管理器來添加。
如:
if(Input.GetKey(KeyCode.E)){}//當按下鍵盤上的E鍵時發生
if(Input.GetMouseButton(0)){}//當點擊鼠標左鍵,0、1、2表示鼠標左鍵右鍵中鍵 if(Input.GetButton(“Fire1”)){}//當點擊鼠標時發生 float x = Input.GetAxis(“Horizontal”);//水平float z = Input.GetAxis(“Vertical”);//垂直
//transform.Translate(x*speed*Time.deltaTime,0,z*speed*Time.deltaTime);//控制對象的前后左右的位移
三、GameObject對象
GameObject是Unity場景里面所有實體的基類.游戲對象的創建
如:GameObject cube=GameObject.CreatePrimitive(PrimitiveType.Cube);//創建一個cube對象
克隆對象:
如:GameObject.Instantiate(cube);//克隆一個cube對象
GameObject.Instantiate(cube, cube.transform.position, Quaternion.identity);//克隆一個cube對象,獲取它的位置,不旋轉
銷毀對象:
如:GameObject.Destroy(cube);//銷毀一個cube對象
GameObject.Destroy(cube, 2f);//兩秒之后cube對象銷毀
對象的查找:
GameObject go=GameObject.Find(“Cube”);//通過對象名稱Cube查找
GameObject go2=GameObject.FindWithTag(“cube”);//通對象的標簽cube查找 GameObject go3=GameObject.FindGameObjectWithTag(“cube”);//通對象的標簽cube查找
獲取對象腳本:
如:Player player=sphere.GetComponent
();//獲取腳本Player
print(player.myRocket);//獲取腳本中公共的對象myRochet Time:
屬性:Time.deltaTime
//計時
如:float a=3.0f;
void Update(){//三秒倒計時
a-=Time.delatTime;
print(a);
}
Random
int b=Random.Range(0,100)
包括最大和最小
float c=Random.Range(0.0f,1.0f);
包括最小但不包括最大
協程(Coroutine)
開啟協程的兩種方式: StartCoroutine(“Do”);StartCoroutine(Do());如:
void Start(){
print(“Start開始”);
StartCoroutine(“Do”);
print(“Do調用后”);
} IEnumerator Do(){
print(“Do開始”);
yield return new WaitForSeconds(3.0f);
print(“暫停3秒后”);}
消息傳遞
同級別對象之間
transform.SendMessage(“Get”);transform.SendMessage(“Get”,“aaaaaaaaaa”);
子對象向父對象發送
transform.SendMessageUpwards(“Get”);transform.SendMessageUpwards(“Get”,“aaaaaaaaaa”);父對象向子對象發送
transform.BroadcastMessage(“Get”);transform.BroadcastMessage(“Get”,“aaaaaaaaaa”);
碰撞檢測:碰撞器(Collision)
觸發器(Trigger)
碰撞器(Collision)
OnCollisionEnter(Collision col){}//進入 OnCollisionStay(Collision col){}//逗留 OnCollisionExit(Collision col){}//退出
觸發器(Trigger)
OnTriggerEnter(Collider col){}//進入 OnTriggerStay(Collider col){}//逗留 OnTriggerExit(Collider col){}//退出
區別:是否勾選IsTrigger,觸發器必須勾選上Is Trigger,碰撞器不需要。
狗刨學習網,學的更多、免費資源、免費視頻下載
第二篇:小班一周所學6 6
小班一周所學
一、拼音
1復習單韻母a o e i u ü
b p m f以及書本上學過的內容。
二、數學
1、復習數字寶寶1 2 3 4 5 6 8 9
2、認識數字寶寶10像鉛筆加雞蛋
三、語言、復習漢字寶寶:天
紅
并學習兒歌《小雪人》小雪人,白又胖。大眼睛,鼻子長。頭上戴頂歪歪帽,紅紅圍巾套脖上。
四、三字經
復習人之初……養不教,父之過。教不嚴,師之惰。學習
子不學,非所宜。幼不學,老何為。玉不琢,不成器,人不學,不知義。為人子,方少時。親師友,習禮儀。香九齡,能溫席。孝于親,所當值。融四歲,能讓梨。弟于長,宜先知。融四歲,能讓梨。弟于長,宜先知。
學習
首孝悌,次見聞。知某數,識某文。一而十,十而百。百而千,千而萬。
五、兒歌
復習《新年好》新年好呀,新年好呀,祝福大家新年好,我們唱歌,我們跳舞,祝福大家新年好。
六、社會
學習書本第二十七頁《學做家務事》。
七、英語
復習英語單詞:鼻子鼻子鼻子 nose
嘴巴嘴巴嘴巴mouth
眼睛眼睛eye 手 手hand 手臂手臂是arm
腳腳是foot
腿腿是leg
耳朵耳朵ear
1是one
2是Two
3是 Three 4是Four 5是Five 6是six 7是seven
8是eighe
學習英語9是nine 10是Ten
八、唐詩
《憫農》
春種一粒粟,秋收萬顆子。四海無閑田,農夫猶餓死。
第三篇:Unity3d面試題總結
本人總結的一些Unity3d高頻面試題目,希望可以幫助到大家。限于個人水平有限,只附上一些參考答案。
======================================= 數據結構和算法很重要,圖形學也很重要!大的游戲公司很看重個人基礎、綜合能力; 小公司看你實際工作能力,看你的Demo。
高頻問答的問題: 一.什么是渲染管道?
是指在顯示器上為了顯示出圖像而經過的一系列必要操作。渲染管道中的很多步驟,都要將幾何物體從一個坐標系中變換到另一個坐標系中去。主要步驟有:
本地坐標->視圖坐標->背面裁剪->光照->裁剪->投影->視圖變換->光柵化。
二.如何優化內存? 有很多種方式,例如 1.壓縮自帶類庫;
2.將暫時不用的以后還需要使用的物體隱藏起來而不是直接Destroy掉;
3.釋放AssetBundle占用的資源; 4.降低模型的片面數,降低模型的骨骼數量,降低貼圖的大小; 5.使用光照貼圖,使用多層次細節(LOD),使用著色器(Shader),使用預設(Prefab)。
三、動態加載資源的方式?(有時候也問區別,具體請百度)1.Resources.Load();2.AssetBundle
四、什么是協同程序?
在主線程運行時同時開啟另一段邏輯處理,來協助當前程序的執行。換句話說,開啟協程就是開啟一個線程。可以用來控制運動、序列以及對象的行為。
五、你用過哪些插件?
(最好多熟悉幾個插件,問的時候好回答)====== 1.使用Unity3d實現2d游戲,有幾種方式? 1.使用本身的GUI;
2.把攝像機的Projection(投影)值調為Orthographic(正交投影),不考慮z軸;
3.使用2d插件,如:2DToolKit;
2.Unity3d中的碰撞器和觸發器的區別?
碰撞器有碰撞的效果,IsTrigger=false,可以調用OnCollisionEnter/Stay/Exit函數;
觸發器沒有碰撞效果,IsTrigger=true,可以調用OnTriggerEnter/Stay/Exit函數。
3.物體發生碰撞的必要條件
兩個物體都必須帶有碰撞器(Collider),其中一個物體還必須帶有Rigidbody剛體。
4.CharacterController和Rigidbody的區別?
CharacterController自帶膠囊碰撞器,里面包含有剛體的屬性; Rigidbody就是剛體,使物體帶有剛體的特征。
5.在物體發生碰撞的整個過程中,有幾個階段,分別列出對應的函數 三個階段
1.OnCollisionEnter 2.OnCollisionStay 3.OnCollisionExit
6.Unity3d的物理引擎中,有幾種施加力的方式,分別描述出來 rigidbody.AddForce/AddForceAtPosition,都在rigidbody系列函數中。7.什么叫做鏈條關節?
Hinge Joint,可以模擬兩個物體間用一根鏈條連接在一起的情況,能保持兩個物體在一個固定距離內部相互移動而不產生作用力,但是達到固定距離后就會產生拉力。
8.物體自身旋轉使用的函數? Transform.Rotate()
9.物體圍繞某點旋轉使用的函數? Transform.RotateAround()
10.Unity3d提供了一個用于保存和讀取數據的類(PlayerPrefs),請列出保存和讀取整形數據的函數 PlayerPrefs.SetInt()
11.Unity3d提供了幾種光源類型,分別是哪幾種? 四種。
平行光:Directional Light 聚光燈:Spot Light
12.Unity3d腳本從喚醒到銷毀有著一套比較完整的生命周期,請列出系統自帶的幾個重要的方法。
點光源:Point Light 區域光源:Area Light
PlayerPrefs.GetInt()Awake——>Start——>Update——>FixedUpdate——>LateUpdate——>OnGUI——>Reset——>OnDisable——>OnDestroy
13.物理更新一般放在哪個系統函數里?
FixedUpdate,每固定幀繪制時執行一次,和Update不同的是FixedUpdate是渲染幀執行,如果你的渲染效率低下的時候FixedUpdate調用次數就會跟著下降。FixedUpdate比較適用于物理引擎的計算,因為是跟每幀渲染有關。Update就比較適合做控制。
14.移動攝像機的動作放在哪個系統函數中,為什么放在這個函數中?
LateUpdate,在每幀執行完畢調用,它是在所有Update結束后才調,比較適合用于命令腳本的執行。官網上例子是攝像機的跟隨,都是在所有Update操作完才跟進攝像機,不然就有可能出現攝像機已經推進了,但是視角里還未有角色的空幀出現。
15.當游戲中需要頻繁創建一個物體時,我們需要怎樣做能夠節省內存?
使用預制物體對象Prefab,然后復制創建。
16.在場景中放置多個Camera并同時處于活動狀態會發生什么? 游戲界面可以看到很多攝像機的混合。
17.請描述Prefab的作用,并描述如何在移動設備的環境下恰當的使用它?
Prefab在實例化的時候用到,主要用于經常會用到的物體,屬性方便修改。
18.如何銷毀一個UnityEngine.Object及其子類? 使用Destroy()方法;
19.請簡述Unity3d下如何安全的在不同工程間遷移asset數據,請列舉出三種方法?
1.可以把assets目錄和Library目錄一起遷移 2.導出包
3.用Unity帶的assets Server功能
20.請描述游戲動畫有哪幾種,以及其原理?
主要有關節動畫、骨骼動畫、單一網格模型動畫(關鍵幀動畫)。關節動畫:把角色分成若干獨立部分,一個部分對應一個網格模型,部分的動畫連接成一個整體的動畫,角色比較靈活,Quake2中使用這種動畫;
骨骼動畫,廣泛應用的動畫方式,集成了以上兩個方式的優點,骨骼按角色特點組成一定的層次結構,有關節相連,可做相對運動,皮膚作為單一網格蒙在骨骼之外,決定角色的外觀;
單一網格模型動畫由一個完整的網格模型構成,在動畫序列的關鍵幀里記錄各個頂點的原位置及其改變量,然后插值運算實現動畫效果,角色動畫較真實。
21.請描述為什么Unity3d中會發生在組件上出現數據丟失的情況 一般是組件上綁定的物體對象被刪除了
22.alpha blend工作原理
Alpha Blend 實現透明效果,不過只能針對某塊區域進行alpha操作,透明度可設。
23.寫出光照計算中的diffuse的計算公式
diffuse = Kd x colorLight x max(N*L,0);Kd 漫反射系數、colorLight 光的顏色、N 單位法線向量、L 由點指向光源的單位向量、其中N與L點乘,如果結果小于等于0,則漫反射為0。
24.Lod是什么,優缺點是什么?
LOD(Level of detail)多層次細節,是最常用的游戲優化技術。它按照模型的位置和重要程度決定物體渲染的資源分配,降低非重要物體的面數和細節度,從而獲得高效率的渲染運算。
25.兩種陰影判斷的方法、工作原理。
26.Vertex Shader是什么,怎么計算? 頂點著色器
27.MipMap是什么,作用?
MipMapping:在三維計算機圖形的貼圖渲染中有常用的技術,為加快渲染進度和減少圖像鋸齒,貼圖被處理成由一系列被預先計算和優化過的圖片組成的文件,這樣的貼圖被稱為MipMap。
28.機試:二選一
1.用代碼實現第三角色控制器 2.實現吊機吊物體的功能
29.反向旋轉動畫的方法是什么?
30.碰撞檢測需要物體具備什么屬性?
31.獲取、增加、刪除組件的命令分別是什么? 獲取:GetComponent 增加:AddComponent 刪除:Destroy
32.Animation.CrossFade命令作用是:(C)A.動畫放大 B.動畫轉換 C.動畫的淡入為其他動畫
33.Application.loadLevel命令為:(A)A.加載關卡 B.異步加載關卡 C.加載動作
34.調試記錄到控制臺的命令是什么? Debug.Log();
35.編輯器類存放路徑是什么?
工程目錄下的Assets/Editor文件夾下。
36.使用原生GUI創建一個可以拖動的窗口命令是什么? GUI.DragWindow();
37.localPosition與Position的使用區別?
localPosition:自身位置,相對于父級的變換的位置。Position:在世界坐標transform的位置
38.意義連線 Mathf.Round Mathf.Clamp Mathf.Lerp
插值 四舍五入 限制
39.寫一個計時器工具,從整點開始計時,格式為:00:00:00
40.寫出Animation的五個方法
41.怎么拿到一個對象上腳本的方法 GameObject.GetComponent<>();
42.上機題:用鼠標實現在場景中拖動物體,用鼠標滾輪實現縮放(用一個Cube即可)。
43.請簡述向量的點乘,向量的叉乘以及向量歸一化的幾何意義? 點乘的幾何意義是:計算兩個向量之間的夾角,以及在某一方向上的投影;
叉乘的幾何意義是:創建垂直于平面,三角形,或者多邊形的向量;
參
考
:http://blog.sina.com.cn/s/blog_9283b6f601017hfw.html
第四篇:Unity3D學習總結
高考完了,上大學(或者大專)這幾乎是現在大多數孩子的選擇,我就是一個上了一個大專,雖然說是學制三年制,但是在第三年上了兩個月之后學校就不講課了,大家都紛紛走出校門開始找適合自己的工作,但是當我走出校門的時候,才發現我在大學期間幾乎是什么也沒學到,面試時一問三不知,找不到工作,此時才開始發現大學期間懶懶散散、早上起床起晚了不想去上課就不去了,和同學約好了出去玩也不去上課了,想在宿舍玩游戲就也不去上課了,不去上課,老師也不會多說什么,只會在他點名的時候叫到你的名字,如果你讓舍友幫你答到,你會發現什么事情也沒有,自此心里會愈發放松,課也是越曠越多,學習更是一點不懂,但是大學不學完全沒人管,導致畢業之后還不如上大學之前,上大學之前還會高中知識,上完大學之后連高中知識都不會了,于是不得不參加一個培訓班,但你選擇一個培訓班的時候你又會比較很多,怕培訓不出來、怕學不好、怕培訓了和沒培訓一個樣子...總之你有很多顧慮。
我經過思考之后加入了我Unity3D培訓班(狗刨學習網),因為我發現現在手機游戲迅速崛起,占據了國內很大的市場,因為手機人人都有,人們在坐公交,坐地鐵,坐火車等交通工具時都會玩手機,甚至有些人在走路時都會玩,我參加了Unity3D培訓班之后才發現,培訓班遠遠比學校好多了,在這里你不會老師會問你那里不會,然后再教給你,不像學校老師就是為了拿工資給你上課,你不去,記你一個曠課也不會對你說什么,在這里還有大家可以討論問題。
早上九點開始上課期間也有一些休息時間,可是幾乎沒有人亂走動,都是坐在自己的位置依舊學習,一直到晚上10點以后甚至到12點以后,大家都在拼命的學習,因為大家都知道了這是我們最后的機會,我們已經可以說是一只腳踏出了懸崖,如果我們還不能好好學習的話我們就會掉下懸崖,萬劫不復,所以大家都在拼命的學習,只為了將來出人頭地,不至于像大學那樣上完以后碌碌無為。
所以我現在的心情總結就為自己琢磨的一句話“活著干,死了算,聽天由命非好漢,拼命努力向前看。”當然我也想起了我們初中語文老師說的一句比較有文化的話“人生能有幾回搏,此時不搏何時搏。”
第五篇:Unity3D重要知識點總結
www.tmdps.cn
Unity3D重要知識點總結
學習Untiy3d過程中,你需要知道數據結構和算法很重,要圖形學很重要,大的游戲公司看重個人基礎,綜合能力小公司就看你實際工作能力,看你的Demo做的如何。那么今天我們來看一下Unity3d學習中的重要知識點有哪些。
1.什么是渲染管道?
是指在顯示器上為了顯示出圖像而經過的一系列必要操作。渲染管道中的很多步驟,都要將幾何物體從一個坐標系中變換到另一個坐標系中去。
主要步驟有:
本地坐標->視圖坐標->背面裁剪->光照->裁剪->投影->視圖變換->光柵化。
2.如何優化內存?
www.tmdps.cn
有很多種方式,例如
1.壓縮自帶類庫;
2.將暫時不用的以后還需要使用的物體隱藏起來而不是直接Destroy掉;
3.釋放AssetBundle占用的資源;
4.降低模型的片面數,降低模型的骨骼數量,降低貼圖的大小;
5.使用光照貼圖,使用多層次細節(LOD),使用著色器(Shader),使用預設(Prefab)。
3.動態加載資源的方式?
1.Resources.Load();2.AssetBundle 1.通過Resources模塊,調用它的load函數:可以直接load并返回某個類型的Object,前提是要把這個資源放在Resource命名的文件夾下,Unity不關有沒有場景引用,都會將其全部打入到安裝包中。Resources.Load();2.通過bundle的形式:即將資源打成 asset bundle 放在服務器或本地磁盤,然后使用www.tmdps.cn
3.通過AssetDatabase.loadasset :這種方式只在editor范圍內有效,游戲運行時沒有這個函數,它通常是在開發中調試用的
【AssetDatabase 資源數據庫】
區別:Resources的方式需要把所有資源全部打入安裝包,這對游戲的分包發布(微端)和版本升級(patch)是不利的,所以unity推薦的方式是不用它,都用bundle的方式替代,把資源達成幾個小的bundle,用哪個就load哪個,這樣還能分包發布和patch,但是在開發過程中,不可能沒更新一個資源就打一次bundle,所以editor環境下可以使用AssetDatabase來模擬,這通常需要我們封裝一個dynamic resource的loader模塊,在不同的環境下做不同實現。動態資源的存放有時我需要存放一些自己的文件在磁盤上,例如我想把幾個bundle放在初始的安裝里,unity有一個streaming asset的概念,用于提供存儲接口的訪問。我們需要在編輯器建立一個StreamingAssets名字的文件夾,把需要我們放在客戶磁盤上的動態文件放在這個文件夾下面,這樣安裝后,這些文件會放在用戶磁盤的指定位置,這個位置可以通過Application.streamingAssetsPath來得到。
4.什么是協同程序?
在主線程運行時同時開啟另一段邏輯處理,來協助當前程序的執行。換句話說,開啟協程就是開啟一個線程。可以用來控制運動、序列以及對象的行為。
5.你用過哪些插件?
www.tmdps.cn
一 界面制作 推薦:NGUI 二 2D游戲制作 推薦:2D Toolkit /工具包,工具箱
三 可視化編程 推薦:PlayMaker 四 插值插件 推薦:iTween,HOTween 五 路徑搜尋 推薦:Simple Path 六 美術及動畫制作 推薦:RageSpline,Smooth Moves 七 畫面增強 推薦:Bitmap2Material,Strumpy Shader Editor 八 攝像機管理 推薦:Security Camera 九 資源包 推薦:Nature Pack
十、造路插件EasyRoads3D 6.使用Unity3d實現2d游戲,有幾種方式?
1.使用本身的GUI;
www.tmdps.cn
2.把攝像機的Projection(投影)值調為Orthographic(正交投影),不考慮z軸;
3.使用2d插件,如:2DToolKit;
7.Unity3d中的碰撞器和觸發器的區別?
觸發器只是碰撞器身上的一個屬性,碰撞器是觸發器的載體。
碰撞器有碰撞的效果,IsTrigger=false,可以調用OnCollisionEnter/Stay/Exit函數;
觸發器沒有碰撞效果,IsTrigger=true,可以調用OnTriggerEnter/Stay/Exit函數。
a.如果不想讓碰撞檢測影響物體移動但是又想檢測到碰撞這時用到觸發器(Trigger)
b.觸發器用來檢測一個物件是否經過空間中的某個區域
8.物體發生碰撞的必要條件
兩個物體都必須帶有碰撞器(Collider),其中一個物體還必須帶有Rigidbody剛體。
8.1 CharacterController和Rigidbody的區別?
CharacterController自帶膠囊碰撞器,里面包含有剛體的屬性;
www.tmdps.cn
Rigidbody就是剛體,使物體帶有剛體的特征。
[CharacterController:角色控制器]Rigidbody具有完全真實物理的特性,而CharacterController可以說是受限的Rigidbody,具有一定的物理效果但不是完全真實的
9.在物體發生碰撞的整個過程中,有幾個階段,分別列出對應的函數三個階段
1.OnCollisionEnter(進入碰撞)2.OnCollisionStay(逗留碰撞)3.OnCollisionExit(當退出碰撞)10.Unity3d的物理引擎中,有幾種施加力的方式,分別描述出來
rigidbody.AddForce/AddForceAtPosition,都在rigidbody系列函數中。
11.什么叫做鏈條關節?
Hinge Joint,可以模擬兩個物體間用一根鏈條連接在一起的情況,能保持兩個物體在一個固定距離內部相互移動而不產生作用力,但是達到固定距離后就會產生拉力。
12.物體自身旋轉使用的函數?
www.tmdps.cn
Transform.Rotate()13.物體圍繞某點旋轉使用的函數?
Transform.RotateAround()14.Unity3d提供了一個用于保存和讀取數據的類(PlayerPrefs),請列出保存和讀取整形數據的函數
PlayerPrefs.SetInt()PlayerPrefs.GetInt()15.Unity3d提供了幾種光源類型,分別是哪幾種?
四種。
平行光:Directional Light 點光源:Point Light 聚光燈:Spot Light 區域光源:Area Light
www.tmdps.cn
16.Unity3d腳本從喚醒到銷毀有著一套比較完整的生命周期,請列出系統自帶的幾個重要的方法。
Awake—>Start—>Update—>FixedUpdate—>LateUpdate—>OnGUI—>Reset—>OnDisable—>OnDestroy 17.物理更新一般放在哪個系統函數里?
FixedUpdate,每固定幀繪制時執行一次,和Update不同的是FixedUpdate是渲染幀執行,如果你的渲染效率低下的時候FixedUpdate調用次數就會跟著下降。FixedUpdate比較適用于物理引擎的計算,因為是跟每幀渲染有關。Update就比較適合做控制。
18.移動攝像機的動作放在哪個系統函數中,為什么放在這個函數中?
LateUpdate,在每幀執行完畢調用,它是在所有Update結束后才調,比較適合用于命令腳本的執行。官網上例子是攝像機的跟隨,都是在所有Update操作完才跟進攝像機,不然就有可能出現攝像機已經推進了,但是視角里還未有角色的空幀出現。
19.當游戲中需要頻繁創建一個物體時,我們需要怎樣做能夠節省內存?
使用預制物體對象Prefab,然后復制創建。
20.在場景中放置多個Camera并同時處于活動狀態會發生什么?
www.tmdps.cn
游戲界面可以看到很多攝像機的混合。
21.請描述Prefab的作用,并描述如何在移動設備的環境下恰當的使用它?
Prefab在實例化的時候用到,主要用于經常會用到的物體,屬性方便修改。
22.請簡述Unity3d下如何安全的在不同工程間遷移asset數據,請列舉出三種方法?
1.可以把assets目錄和Library目錄一起遷移
2.導出包
3.用Unity帶的assets Server功能
23.請描述游戲動畫有哪幾種,以及其原理?
主要有關節動畫、骨骼動畫、單一網格模型動畫(關鍵幀動畫)。
a.關節動畫:把角色分成若干獨立部分,一個部分對應一個網格模型,部分的動畫連接成一 個整體的動畫,角色比較靈活,Quake2中使用這種動畫;
b.骨骼動畫,廣泛應用的動畫方式,集成了以上兩個方式的優點,骨骼按角色特點組成一定的層次結構,有關節相連,可做相對運動,皮膚作為單一網格蒙在骨骼之外,決定角色的外觀;
www.tmdps.cn
c.單一網格模型動畫由一個完整的網格模型構成,在動畫序列的關鍵幀里記錄各個頂點的原位置及其改變量,然后插值運算實現動畫效果,角色動畫較真實。
24.請描述為什么Unity3d中會發生在組件上出現數據丟失的情況
一般是組件上綁定的物體對象被刪除了
25.alpha blend工作原理
Alpha Blend 實現透明效果,不過只能針對某塊區域進行alpha操作,透明度可設。
26.寫出光照計算中的diffuse的計算公式
計算公式為: Idiffuse = Dintensity*Dcolor*N.L;(Dintensity表示漫反射強度,Dcolor 表示漫反射光顏色,N 為該點的法向量,L 為光源向量 其中N與L點乘,如果結果小于等于0,則漫反射為0。
27.Lod是什么,優缺點是什么?
www.tmdps.cn
LOD(Level of detail)多層次細節,是最常用的游戲優化技術。它按照模型的位置和重要程度決定物體渲染的資源分配,降低非重要物體的面數和細節度,從而獲得高效率的渲染運算。
28.兩種陰影判斷的方法、工作原理。
A.陰影由兩部分組成:本影與半影
a.本影:景物表面上那些沒有被光源直接照射的區域(全黑的輪廓分明的區域)
b.半影:景物表面上那些被某些特定光源直接照射但并非被所有特定光源直接照射的區域(半明半暗區域)
求陰影區域的方法:做兩次消隱過程
一次對每個光源進行消隱,求出對于光源而言不可見的區域L;
一次對視點的位置進行消隱,求出對于視點而言可見的面S;
shadow area= L ∩ S B.陰影分為兩種:自身陰影和投射陰影
自身陰影:因物體自身的遮擋而使光線照射不到它上面的某些可見面
www.tmdps.cn
工作原理:利用背面剔除的方法求出,即假設視點在點光源的位置。
投射陰影:因不透明物體遮擋光線使得場景中位于該物體后面的物體或區域受不到光照照射而形成的陰影
工作原理:從光源處向物體的所有可見面投射光線,將這些面投影到場景中得到投影面,再將這些投影面與場景中的其他平面求交得出陰影多邊形,保存這些陰影多邊形信息,然后再按視點位置對場景進行相應處理得到所要求的視圖(利用空間換時間,每次只需依據視點位置進行一次陰影計算即可,省去了一次消隱過程)若是動態光源此方法就無效了。
29.Vertex Shader是什么,怎么計算?
頂點著色器
頂點著色器是一段執行在GPU上的程序,用來取代fixed pipeline中的transformation和lighting,Vertex Shader主要操作頂點。
Vertex Shader對輸入頂點完成了從local space到homogeneous space(齊次空間)的變換過程,homogeneous space即projection space的下一個space。在這其間共有world transformation, view transformation和projection transformation及lighting幾個過程。
30.MipMap是什么,作用?
www.tmdps.cn
MipMapping:在三維計算機圖形的貼圖渲染中有常用的技術,為加快渲染進度和減少圖像鋸齒,貼圖被處理成由一系列被預先計算和優化過的圖片組成的文件,這樣的貼圖被稱為MipMap。
31.機試:二選一
1.用代碼實現第三角色控制器
2.實現吊機吊物體的功能
【吊機吊物體需要節點掛接和坐標系轉換】
32.反向旋轉動畫的方法是什么?
【反轉動畫,講動畫的速度調到-1,碰撞時,被碰撞物體與碰撞物體有collider組件,碰撞物體有剛體組件,或角色碰撞得包含角色組件 OR 改變animation.speed】
33.碰撞檢測需要物體具備什么屬性?
能檢測碰撞發生的方式有兩種,一種是利用碰撞器,另一種則是利用觸發器
【Physics.OverlapSphere相交球檢測碰撞,碰撞檢測需要包圍盒】
34.獲取、增加、刪除組件的命令分別是什么?
www.tmdps.cn
獲取:GetComponent 增加:AddComponent 刪除:Destroy 35.Animation.CrossFade命令作用是:(C)A.動畫放大
B.動畫轉換
C.動畫的淡入為其他動畫
36.Application.loadLevel命令為:(A)A加載關卡
B.異步加載關卡
C.加載動作
37.調試記錄到控制臺的命令是什么?
Debug.Log();39.編輯器類存放路徑是什么?
工程目錄下的Assets/Editor文件夾下。
40.使用原生GUI創建一個可以拖動的窗口命令是什么?
www.tmdps.cn
GUI.DragWindow();41.localPosition與Position的使用區別?
localPosition:自身位置,相對于父級的變換的位置。、Position:在世界坐標transform的位置
42.寫一個計時器工具,從整點開始計時,格式為:00:00:00 43.寫出Animation的五個方法
AddClip 添加剪輯、Blend 混合、Play 播放、Stop 停止、Sample 采樣
44.怎么拿到一個對象上腳本的方法
GameObject.GetComponent<>();
www.tmdps.cn
45.請簡述向量的點乘,向量的叉乘以及向量歸一化的幾何意義?
點乘的幾何意義是:計算兩個向量之間的夾角,以及在某一方向上的投影;
叉乘的幾何意義是:創建垂直于平面,三角形,或者多邊形的向量;
46.Unity3D是否支持寫成多線程?如果支持的話要注意什么?
支持:如果同時你要處理很多事情或者與Unity的對象互動小可以用thread,否則使用coroutine.注意:C#中有lock這個關鍵字,以確保只有一個線程可以在特定時間內訪問特定的對象
47.Unity3D中的協程(Coroutine)和C#線程之間的區別是什么?
Unity3d沒有多線程的概念,不過unity也給我們提供了StartCoroutine(協同程序)和LoadLevelAsync(異步加載關卡)后臺加載場景的方法。StartCoroutine為什么叫協同程序呢,所謂協同,就是當你在StartCoroutine的函數體里處理一段代碼時,利用yield語句等待執行結果,這期間不影響主程序的繼續執行,可以協同工作。而LoadLevelAsync則允許你在后臺加載新資源和場景,所以再利用協同,你就可以前臺用loading條或動畫提示玩家游戲未卡死,同時后臺協同處理加載的事宜asynchronous[e??s??kr?n?s].synchronous同步
www.tmdps.cn
48.請簡述四元數的作用以及四元數相對于歐拉角的優點
A.四元數一般定義如下:q=w+xi+yj+zk其中 w,x,y,z是實數。同時,有: i*i=-1 j*j=-1 k*k=-1 B.四元數也可以表示為: q=[w,v] 有多種方式可表示旋轉,如 axis/angle、歐拉角(Euler angles)、矩陣(matrix)、四元組等。相對于其它方法,四元組有其本身的優點:
a.四元數不會有歐拉角存在的 gimbal lock 問題[萬向節死鎖] b.四元數由4個數組成,旋轉矩陣需要9個數
c.兩個四元數之間更容易插值
d.四元數、矩陣在多次運算后會積攢誤差,需要分別對其做規范化(normalize)和正交化(orthogonalize),對四元數規范化更容易 e.與旋轉矩陣類似,兩個四元組相乘可表示兩次旋轉
49.請簡述OnBecameVisible及OnBecameInvisible的發生時機,以及他們執行的意義?
當renderer(渲染器)在任何相機上都不可見時調用:OnBecameInvisible
www.tmdps.cn
當renderer(渲染器)在任何相機上可見時調用:OnBecameVisible 50.動畫層(Animation Layers)的作用是什么?
動畫層作為一個具有層級動畫編輯概念的工具,可以用來制作和處理任何類型的動畫
51.請說出4種面向對象的設計原則,并分別簡述它們的含義。
1)單一職責原則(The Single Responsiblity Principle,簡稱SRP):一個類,最好只做一件事,只有一個引起它的變化.2)開放-封閉原則(The Open-Close Principle,簡稱OCP):對于擴展是開放的,對于更改是封閉的
3)Liskov 替換原則(The Liskov Substitution Principle,簡稱LSP):子類必須能夠替換其基類
4)依賴倒置原則(The Dependency Inversion Pricinple,簡稱DIP):依賴于抽象
5)接口隔離原則(The Interface Segregation Principle,簡稱ISP):使用多個小的專門的接口,而不要使用一個大的總接口。
52.Material和Physic Material區別?
www.tmdps.cn
PhysicMaterial 物理材質:物理材質描述,如何處理物體碰撞(摩擦,彈性)。
Material材質(材質類)為了獲得一個對象使用的材質,可以使用 Renderer.materia屬性:
53.法線貼圖、CG動畫
A.法線貼圖:是在原物體的凹凸表面的每個點上均作法線,通過RGB顏色通道來標記法線的方向,你可以把它理解成與原凹凸表面平行的另一個不同的表面,但實際上它又只是一個光滑的平面。
B.CG動畫:原為Computer Graphics的英文縮寫。隨著以計算機為主要工具進行視覺設計和生產的一系列相關產業的形成,國際上習慣將利用計算機技術進行視覺設計和生產的領域通稱為CG。它既包括技術也包括藝術,幾乎囊括了當今電腦時代中所有的視覺藝術創作活動,如平面印刷品的設計、網頁設計、三維動畫、影視特效、多媒體技術、以計算機輔助設計為主的建筑設計及工業造型設計等。NGUI(NUGUI1、NGUI2)
54.如何銷毀一個UnityEngine.Object及其子類?
使用Destroy()方法;
55、請描述游戲動畫有哪幾種,以及其原理。
www.tmdps.cn
主要有關節動畫、單一網格模型動畫(關鍵幀動畫)、骨骼動畫。
a、關節動畫把角色分成若干獨立部分,一個部分對應一個網格模型,部分的動畫連接成一個整體的動畫,角色比較靈活Quake2([kwe?k]vi.發抖,顫抖;)中使用了這種動畫;b、單一網絡模型動畫由一個完整的網格模型構成,在動畫序列的關鍵幀里記錄各個頂點的原位置及其改變量,然后插值運算實現動畫效果,角色動畫較真實。
c、骨骼動畫,廣泛應用的動畫方式,集成了以上兩個方式的優點,骨骼按角色特點組成一定的層次結構,由關節相連,可做相對運動,皮膚作為單一網格蒙在骨骼之外,決定角色的外觀。皮膚網格每一個頂點都會受到骨骼的影響,從而實現完美的動畫
56、下面哪種做法可以打開Unity的Asset Store Windows-> Asset Store
57、Mecanim系統中,Body Mask的作用是?
指定身體的某一部分是否參與渲染
58、以下哪種操作步驟可以打開Unity編輯器的Lightmapping視圖?
Windows--> Lightmapping
www.tmdps.cn
59、關于光照貼圖
A:使用光照貼圖比使用實時光源渲染要快
B:可以降低游戲內存消耗
C、多個物體可以使用同一張光照貼圖
60、關于Vector3的API,以下說法正確的是?
Vector3.forward與Vector3(0,0,1)是一樣的意思;
61、什么是導航網格(NavMesh)?
一種用于實現自動尋路的網格
62、什么是局部坐標,什么是世界坐標?
世界坐標是不會變的,一直以世界坐標軸的XYZ為標準。局部坐標其實就是自身的坐標,會隨著物體的旋轉而變化的。
63、itween插件的作用是什么,itween作用于世界坐標還是局部坐標,請列舉出3個其常用方法?
www.tmdps.cn
iTween是一個動畫庫,作者創建它的目的就是最小的投入實現最大的產出。讓你做開發更輕松,用它可以輕松實現各種動畫,晃動,旋轉,移動,褪色,上色,控制音頻等等“
方法:
a、MoveTo 物體移動 ;
b、ColorTo:隨著時間改變對象的顏色組;
c、LookTo:隨時間旋轉物體讓其臉部朝向所提供的Vector3或Transform位置
64、請簡述NGUI中Panel和Anchor的作用
Anchor包含UIAnchor腳本。UIAnchor的功能是把對象錨定在屏幕的邊緣(左上,左中,左下,上,中,下,右上,右中,右下),或縮放物體使其匹配屏幕的尺寸Panel對象有UIPanel腳本,UIPanel是一個容器,它將包含所有UI小部件,并負責將所包含的部件組合優化、承載,以減少繪制命令的調用。
65、Unity攝像機有幾種工作方式,分別是什么?
perspective透視攝像機和orthographic正交攝像機
66、LayerMask.NameToLayer()這個方法有什么作用?
www.tmdps.cn
LayerMask的使用是按位操作的,LayerMask.NameToLayer(“Players”)返回該Layer的編號。
67、請描述MeshRender中material和shader的區別?
Shader(著色器)實際上就是一小段程序,它負責將輸入的Mesh(網格)以指定的方式和輸入的貼圖或者顏色等組合作用,然后輸出。繪圖單元可以依據這個輸出來將圖像繪制到屏幕上。輸入的貼圖或者顏色等,加上對應的Shader,以及對Shader的特定的參數設置,將這些內容(Shader及輸入參數)打包存儲在一起,得到的就是一個Material(材質)
Shader大體上可以分為兩類: 表面著色器(Surface Shader)、片段著色器(Fragment Shader)
68、什么是矢量圖
矢量圖:計算機中顯示的圖形一般可以分為兩大類——矢量圖和位圖。矢量圖使用直線和曲線來描述圖形,這些圖形的元素是一些點、線、矩形、多邊形、圓和弧線等等,它們都是通過數學公式計算獲得的。例如一幅花的矢量圖形實際上是由線段形成外框輪廓,由外框的顏色以及外框所封閉的顏色決定花顯示出的顏色。由于矢量圖形可通過公式計算獲得,所以
www.tmdps.cn
矢量圖形文件體積一般較小。矢量圖形最大的優點是無論放大、縮小或旋轉等不會失真;最大的缺點是難以表現色。
69.上機題:用鼠標實現在場景中拖動物體,用鼠標滾輪實現縮放(用一個Cube即可)。
70、以下哪個函數在游戲進入新場景后會被馬上調用?
MonoBehaviour.OnLevelWasLoaded 71、Unity3D方法執行的順序:
1、Awake(),2、Start()(激活時的初始化代碼)
3、Update()【FixUpdate、LateUpdate】、4、OnGUI(渲染模塊)
5、然后是卸載模塊(TearDown),這里主要有兩個方法OnDisable()與OnDestroy()這里只列出了70個重要的知識點,大家可以參照著去學習,同時也不能忽略其他沒有羅列出來的知識,最好就是在項目中不斷的鍛煉自己,讓自己在各方面的能力都不斷的提升。