1. 程式人生 > >Unity高頻面試題總結

Unity高頻面試題總結

1.什麼是渲染管道?

是指在顯示器上為了顯示出影象而經過的一系列必要操作。

渲染管道中的很多步驟,都要將幾何物體從一個座標系中變換到另一個座標系中去。

主要步驟有:

本地座標->檢視座標->背面裁剪->光照->裁剪->投影->檢視變換->光柵化。

2.如何優化記憶體?

有很多種方式,例如

A、壓縮自帶類庫;

B、將暫時不用的以後還需要使用的物體隱藏起來而不是直接Destroy掉;

C、釋放AssetBundle佔用的資源;AssetBundle資源包

D、降低模型的片面數,降低模型的骨骼數量,降低貼圖的大小;

E、使用光照貼圖,使用多層次細節(LOD),使用著色器(Shader),使用預設(Prefab)。

3.動態載入資源的方式?(有時候也問區別,具體請百度)

1.通過Resources模組,呼叫它的load函式:可以直接load並返回某個型別的Object,前提是要把這個資源放在Resource命名的資料夾下,Unity不關有沒有場景引用,都會將其全部打入到安裝包中。Resources.Load();

2.通過bundle的形式:即將資源打成 asset bundle 放在伺服器或本地磁碟,然後使用WWW模組get 下來,然後從這個bundle中load某個object。AssetBundle

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.你用過哪些外掛?

 介面製作 推薦:NGUI

 2D遊戲製作 推薦:2D Toolkit   //[ˈtu:lkɪt] 工具包,工具箱

 視覺化程式設計 推薦:PlayMaker

 插值外掛 推薦:iTween,HOTween

 路徑搜尋 推薦:Simple Path

 美術及動畫製作 推薦:RageSpline,Smooth Moves

 畫面增強    推薦:Bitmap2Material,Strumpy Shader Editor

 攝像機管理  推薦:Security Camera

 資源包  推薦:Nature Pack 

十、造路外掛EasyRoads3D

====================================================

====================================================

1.使用unity3d實現2d遊戲,有幾種方式?

1.使用本身的GUI;

2.把攝像機的Projection(投影)值調為Orthographic(正交投影),不考慮z軸;

//[ˌɔ:θə'ɡræfɪk] adj. 正字法的,拼字正確的;正射

3.使用2d外掛,如:2DToolKit;

2.unity3d中的碰撞器和觸發器的區別?

觸發器只是碰撞器身上的一個屬性,碰撞器是觸發器的載體。

碰撞器有碰撞的效果,IsTrigger=false,可以呼叫OnCollisionEnter/Stay/Exit函式;

觸發器沒有碰撞效果,IsTrigger=true,可以呼叫OnTriggerEnter/Stay/Exit函式。

3.物體發生碰撞的必要條件

兩個物體都必須帶有碰撞器(Collider),其中一個物體還必須帶有Rigidbody剛體。

4.CharacterControllerRigidbody的區別?

CharacterController自帶膠囊碰撞器,裡面包含有剛體的屬性;

Rigidbody就是剛體,使物體帶有剛體的特徵。

5.在物體發生碰撞的整個過程中,有幾個階段,分別列出對應的函式

三個階段

1.OnCollisionEnter(進入碰撞) 2.OnCollisionStay (逗留碰撞) 3.OnCollisionExit(當退出碰撞) 

6.Unity3d的物理引擎中,有幾種施加力的方式,分別描述出來

rigidbody.AddForce/AddForceAtPosition,都在rigidbody系列函式中。

7.什麼叫做鏈條關節?

Hinge Joint,可以模擬兩個物體間用一根鏈條連線在一起的情況,能保持兩個物體在一個固定距離內部相互移動而不產生作用力,但是達到固定距離後就會產生拉力。

{ [hɪndʒ] n. 鉸鏈,折葉;關鍵,轉折點;樞要,中樞}

8.物體自身旋轉使用的函式?

Transform.Rotate()

9.物體圍繞某點旋轉使用的函式?

Transform.RotateAround()

10.Unity3d提供了一個用於儲存和讀取資料的類(PlayerPrefs),請列出儲存和讀取整形資料的函式

PlayerPrefs.SetInt()     PlayerPrefs.GetInt()

11.Unity3d提供了幾種光源型別,分別是哪幾種?

四種。

平行光:Directional Light 點光源:Point Light

聚光燈:Spot Light 區域光源:Area Light

12.Unity3d指令碼從喚醒到銷燬有著一套比較完整的生命週期,請列出系統自帶的幾個重要的方法。

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.請描述遊戲動畫有哪幾種,以及其原理?

主要有關節動畫、骨骼動畫、單一網格模型動畫(關鍵幀動畫)。

a.關節動畫:把角色分成若干獨立部分,一個部分對應一個網格模型,部分的動畫連線成一 個整體的動畫,角色比較靈活,Quake2中使用這種動畫;

b.骨骼動畫,廣泛應用的動畫方式,集成了以上兩個方式的優點,骨骼按角色特點組成一定的層次結構,有關節相連,可做相對運動,面板作為單一網格蒙在骨骼之外,決定角色的外觀;

c.單一網格模型動畫由一個完整的網格模型構成,在動畫序列的關鍵幀裡記錄各個頂點的原位置及其改變數,然後插值運算實現動畫效果,角色動畫較真實。

21.請描述為什麼Unity3d中會發生在元件上出現數據丟失的情況

一般是元件上繫結的物體物件被刪除了

22.alpha blend工作原理

Alpha Blend 實現透明效果,不過只能針對某塊區域進行alpha操作,透明度可設。

23.寫出光照計算中的diffuse的計算公式

計算公式為: Idiffuse = Dintensity*Dcolor*N.L ; (Dintensity表示漫反射強度, Dcolor 表示漫反射光顏色, N 為該點的法向量, L 為光源向量 其中N與L點乘,如果結果小於等於0,則漫反射為0。)

diffuse = Kd x colorLight x max(N*L,0);Kd 漫反射係數、colorLight 光的顏色、N 單位法線向量、L 由點指向光源的單位向量、其中N與L點乘,如果結果小於等於0,則漫反射為0。

24.Lod是什麼,優缺點是什麼?

LOD(Level of detail)多層次細節,是最常用的遊戲優化技術。它按照模型的位置和重要程度決定物體渲染的資源分配,降低非重要物體的面數和細節度,從而獲得高效率的渲染運算。

25.兩種陰影判斷的方法、工作原理。

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

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

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

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

一次對每個光源進行消隱,求出對於光源而言不可見的區域L;

一次對視點的位置進行消隱,求出對於視點而言可見的面S;

shadow area= L ∩ S

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

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

工作原理:利用背面剔除的方法求出,即假設視點在點光源的位置。

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

工作原理:從光源處向物體的所有可見面投射光線,將這些面投影到場景中得到投影面,再將這些投影面與場景中的其他平面求交得出陰影多邊形,儲存這些陰影多邊形資訊,然後再按視點位置對場景進行相應處理得到所要求的檢視(利用空間換時間,每次只需依據視點位置進行一次陰影計算即可,省去了一次消隱過程)

若是動態光源此方法就無效了。

26.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幾個過程。

27..MipMap是什麼,作用?

MipMapping:在三維計算機圖形的貼圖渲染中有常用的技術,為加快渲染進度和減少影象鋸齒,貼圖被處理成由一系列被預先計算和優化過的圖片組成的檔案,這樣的貼圖被稱為MipMap。

28.反向旋轉動畫的方法是什麼?

反轉動畫,講動畫的速度調到-1,碰撞時,被碰撞物體與碰撞物體有collider元件,碰撞物體有剛體元件,或角色碰撞得包含角色元件 OR 改變animation.speed

29.碰撞檢測需要物體具備什麼屬性?

能檢測碰撞發生的方式有兩種,一種是利用碰撞器,另一種則是利用觸發器

30.獲取、增加、刪除元件的命令分別是什麼?

獲取:GetComponent 增加:AddComponent  刪除:Destroy

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

A.動畫放大 B.動畫轉換 C.動畫的淡入為其他動畫

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

A載入關卡 B.非同步載入關卡 C.載入動作

33.除錯記錄到控制檯的命令是什麼?

Debug.Log();

34.編輯器類存放路徑是什麼?

工程目錄下的Assets/Editor資料夾下。

35.使用原生GUI建立一個可以拖動的視窗命令是什麼?

GUI.DragWindow();

36.localPosition與Position的使用區別?

localPosition:自身位置,相對於父級的變換的位置。

Position:在世界座標transform的位置

37.意義連線

Mathf.Round插值

Mathf.Clamp四捨五入

Mathf.Lerp限制

38..寫出Animation的五個方法

AddClip 新增剪輯、Blend 混合、Play 播放、Stop 停止、Sample 取樣

39.怎麼拿到一個物件上指令碼的方法

GameObject.GetComponent<>();

40.請簡述向量的點乘,向量的叉乘以及向量歸一化的幾何意義?

點乘的幾何意義是:計算兩個向量之間的夾角,以及在某一方向上的投影;

叉乘的幾何意義是:建立垂直於平面,三角形,或者多邊形的向量; 

41.Unity3D是否支援寫成多執行緒?如果支援的話要注意什麼?

支援:如果同時你要處理很多事情或者與Unity的物件互動小可以用thread,否則使用coroutine.{ [kəru:'ti:n] n. 協同程式}

注意:C#中有lock這個關鍵字,以確保只有一個執行緒可以在特定時間內訪問特定的物件

42.Unity3D中的協程(Coroutine)和C#執行緒之間的區別是什麼?

Unity3d沒有多執行緒的概念,不過unity也給我們提供了StartCoroutine(協同程式)和LoadLevelAsync(非同步載入關卡)後臺載入場景的方法。 StartCoroutine為什麼叫協同程式呢,所謂協同,就是當你在StartCoroutine的函式體裡處理一段程式碼時,利用yield語句等待執行結果,這期間不影響主程式的繼續執行,可以協同工作。而LoadLevelAsync則允許你在後臺載入新資源和場景,所以再利用協同,你就可以前臺用loading條或動畫提示玩家遊戲未卡死,同時後臺協同處理載入的事宜asynchronous[eɪˈsɪŋkrənəs].synchronous同步

43..請簡述四元數的作用以及四元數相對於尤拉角的優點

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.與旋轉矩陣類似,兩個四元組相乘可表示兩次旋轉

44.請簡述OnBecameVisible及OnBecameInvisible的發生時機,以及他們執行的意義?

renderer(渲染器)在任何相機上都不可見時呼叫:OnBecameInvisible 

renderer(渲染器)在任何相機上可見時呼叫:OnBecameVisible

45.動畫層(Animation Layers)的作用是什麼?

動畫層作為一個具有層級動畫編輯概念的工具,可以用來製作和處理任何型別的動畫

46.請說出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):使用多個小的專門的介面,而不要使用一個大的總介面。

47.Material和Physic Material區別?

PhysicMaterial 物理材質:物理材質描述,如何處理物體碰撞(摩擦,彈性)。

Material材質(材質類)為了獲得一個物件使用的材質,可以使用 Renderer.materia屬性:

48..法線貼圖 、CG動畫

A.法線貼圖:是在原物體的凹凸表面的每個點上均作法線,通過RGB顏色通道來標記法線的方向,你可以把它理解成與原凹凸表面平行的另一個不同的表面,但實際上它又只是一個光滑的平面。 

B.CG動畫:原為Computer Graphics的英文縮寫。隨著以計算機為主要工具進行視覺設計和生產的一系列相關產業的形成,國際上習慣將利用計算機技術進行視覺設計和生產的領域通稱為CG。它既包括技術也包括藝術,幾乎囊括了當今電腦時代中所有的視覺藝術創作活動,如平面印刷品的設計、網頁設計、三維動畫、影視特效、多媒體技術、以計算機輔助設計為主的建築設計及工業造型設計等。

NGUI(NUGUI1、NGUI2)

49、NGUI Button怎樣接受使用者點選並呼叫函式,具體方法名稱是什麼

a、直接監聽事件

把下面指令碼直接繫結在按鈕上,當按鈕點選時就可以監聽到,這種方法不太好很不靈活

1

void OnClick()

2

{

3

  Debug.Log("Button is Click!!!");

4

}

b、SendMessage

選擇Button-Component-NGUI-Interaction-Button Message//一起活動;合作;互相影響;互動

c、UIListener(推薦)

選擇Button-Component-NGUI-Internal-Event Listener

呼叫方法:

01

using UnityEngine;

02

using System.Collections;

03

04

publicclass BtnNUGUI : MonoBehaviour {

05

06

07

void Awake()

08

    {

09

        GameObject button = GameObject.Find("UI Root (2D)/Camera/Anchor/Panel/Button");

10

        UIEventListener.Get(button).onClick = ButtonClick;

11

    }

12

13

void ButtonClick(GameObject button)

14

    {

15

        Debug.Log("NGUI button name :"+button.name);

16

    }

17

// Use this for initialization

18

void Start () {

19

20

    }

21

22

// Update is called once per frame

23

void Update () {

24

25

    }

26

}

50、請描述遊戲動畫有哪幾種,以及其原理。

  主要有關節動畫、單一網格模型動畫(關鍵幀動畫)、骨骼動畫。 a、關節動畫把角色分成若干獨立部分,一個部分對應一個網格模型,部分的動畫連線成一個整體的動畫,角色比較靈活Quake2([kweɪk]vi.發抖,顫抖;)中使用了這種動畫;b、 單一網路模型動畫由一個完整的網格模型構成,在動畫序列的關鍵幀裡記錄各個頂點的原位置及其改變數,然後插值運算實現動畫效果,角色動畫較真實。 c、骨骼動畫,廣泛應用的動畫方式,集成了以上兩個方式的優點,骨骼按角色特點組成一定的層次結構,由關節相連,可做相對運動,面板作為單一網格蒙在骨骼之外,決定角色的外觀。面板網格每一個頂點都會受到骨骼的影響,從而實現完美的動畫

51、下面哪種做法可以開啟Unity的Asset Store

Windows -> Asset Store

52、Mecanim系統中,Body Mask的作用是?

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

53、以下哪種操作步驟可以開啟Unity編輯器的Lightmapping檢視?

Windows --> Lightmapping

54、關於光照貼圖

A:使用光照貼圖比使用實時光源渲染要快 B:可以降低遊戲記憶體消耗 C、多個物體可以使用同一張光照貼圖

55、關於Vector3的API,以下說法正確的是?

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

56、 以下哪個函式在遊戲進入新場景後會被馬上呼叫?

MonoBehaviour.OnLevelWasLoaded

57、 什麼是導航網格( NavMesh)?

  一種用於實現自動尋路的網格

58、什麼是區域性座標,什麼是世界座標?

  世界座標是不會變的,一直以世界座標軸的XYZ為標準。區域性座標其實就是自身的座標,會隨著物體的旋轉而變化的。

59、itween外掛的作用是什麼,itween作用於世界座標還是區域性座標,請列舉出3個其常用方法?

iTween是一個動畫庫,作者建立它的目的就是最小的投入實現最大的產出。讓你做開發更輕鬆,用它可以輕鬆實現各種動畫,晃動,旋轉,移動,褪色,上色,控制音訊等等“

  方法:a、MoveTo  物體移動 ;b、ColorTo:隨著時間改變物件的顏色組; c、LookTo:隨時間旋轉物體讓其臉部朝向所提供的Vector3或Transform位置

60、請簡述NGUI中Panel和Anchor的作用

Anchor包含UIAnchor指令碼。UIAnchor的功能是把物件錨定在螢幕的邊緣(左上,左中,左下,上,中,下,右上,右中,右下),或縮放物體使其匹配螢幕的尺寸

Panel物件有UIPanel指令碼,UIPanel是一個容器,它將包含所有UI小部件,並負責將所包含的部件組合優化,以減少繪製命令的呼叫。

61、Unity攝像機有幾種工作方式,分別是什麼?

62、LayerMask.NameToLayer()這個方法有什麼作用?

LayerMask的使用是按位操作的,LayerMask.NameToLayer("Players") 返回該Layer的編號。

 63、請描述MeshRender中material和shader的區別?

Shader(著色器)實際上就是一小段程式,它負責將輸入的Mesh(網格)以指定的方式和輸入的貼圖或者顏色等組合作用,然後輸出。繪圖單元可以依據這個輸出來將影象繪製到螢幕上。輸入的貼圖或者顏色等,加上對應的Shader,以及對Shader的特定的引數設定,將這些內容(Shader及輸入引數)打包儲存在一起,得到的就是一個Material(材質)

Shader大體上可以分為兩類:表面著色器(Surface Shader) 、片段著色器(Fragment Shader)

 64、什麼是向量圖

向量圖:計算機中顯示的圖形一般可以分為兩大類——向量圖和點陣圖。向量圖使用直線和曲線來描述圖形,這些圖形的元素是一些點、線、矩形、多邊形、圓和弧線等等,它們都是通過數學公式計算獲得的。例如一幅花的向量圖形實際上是由線段形成外框輪廓,由外框的顏色以及外框所封閉的顏色決定花顯示出的顏色。由於向量圖形可通過公式計算獲得,所以向量圖形檔案體積一般較小。向量圖形最大的優點是無論放大、縮小或旋轉等不會失真;最大的缺點是難以表現色彩層次豐富的逼真影象效果。

65、Unity 連線資料庫

  需要得到Mono.Data.Sqlite.dll 檔案與System.Data.dll檔案

66、四元組是什麼?

所謂四元數,就是把4個實數組合起來的東西。4個元素中,一個是實部,其餘3個是虛部。

67.如果進來的是玩家,立即銷燬!

void OnTriggerEnter(Collider other) {

                 if (other.gameObject.CompareTag("Player"))

                                Destroy(other.gameObject);

}

68.傳送訊息。列印damage的值=5

void ApplyDamage(float damage) {

print(damage);

}

public void Awake() {

gameObject.BroadcastMessage("ApplyDamage", 5.0F);

}

69.銷燬同一標籤的物體

public GameObject[] ShuZu = GameObject.FindGameObjectsWithTag("Tag");

public void Awake() {

foreach (GameObject A in ShuZu) {

//銷燬程式碼

}

}

70.掛在你想要監測的NGUI上,但是那個NGUI必須要有觸發器,觸發器要足夠大

void OnHover(bool isOver)        {                if(enabled)                {                        if(isOver)                        {                                //觸發了停留事件                                Debug.Log("討厭啦!求別摸!");                        }                        else                        {                                Debug.Log("別走嘛!");                        }                }        }掛在你想要監測的NGUI上,但是那個NGUI必須要有觸發器,觸發器要足夠大

簡述一下Prefab的用處?

在遊戲執行時例項化,prefab相當於一個模板,對你已經有的素材、指令碼、引數做一個預設的配置,以便於以後的修改,同事prefab打包的內容簡化了匯出的操作,便於團隊的交流。

10.簡述一下物件池,你覺得在FPS遊戲裡哪些東西適合使用物件池?

物件池就存放需要被反覆呼叫資源的一個空間,比如遊戲中要常被大量複製的物件,子彈,敵人,以及任何重複出現的物件。

31.機試:二選一

1.用程式碼實現第三角色控制器

42.寫一個計時器工具,從整點開始計時,格式為:00:00:00

2.實現吊機吊物體的功能【吊機吊物體需要節點掛接和座標系轉換】

上機題:用滑鼠實現在場景中拖動物體,用滑鼠滾輪實現縮放(用一個Cube即可)。

1.NGUI螢幕自適應問題  2.協程問題  3.資料結構中的演算法和排序  4.圖形學相關的問題  5.解析JSON資料問題  6.網路通訊問題

1.機槍兵在平時站立時,處於空閒 狀態;

初始化狀態機,並將空閒 狀態作為初始狀態放入狀態機堆疊中;狀態機堆疊:【空閒】

2.機槍兵發現敵人,並且敵人在射程範圍內,機槍兵開始攻擊敵人;此時,機槍兵進入攻擊 狀態;

進入攻擊 狀態;狀態機堆疊:【攻擊】【空閒】

3.敵人死亡,機槍兵停止攻擊;此時,機槍兵回到空閒 狀態;

退出當前狀態;狀態機堆疊:【空閒】

4.此時玩家發出進攻命令,此進攻命令是用A鍵點了遠處的一個地面 place1 ,也就是沒有具體目標的進攻;此時,機槍兵進入 移動進攻 狀態;

進入移動進攻 狀態;狀態機堆疊:【移動進攻】【空閒】

5.在移動過程中,機槍兵發現了敵人,所以他要脫離原來的路徑,走向發現的敵人;此時,機槍兵進入追擊 狀態;

進入追擊 狀態;狀態機堆疊:【追擊】【移動進攻】【空閒】

6.機槍兵和敵人的距離小於了自己的射程之後,機槍兵停下來,並且攻擊敵人;此時,機槍兵進入了攻擊 狀態;

切換到攻擊 狀態;狀態機堆疊:【攻擊】【移動進攻】【空閒】

7.敵人死亡後,機槍兵重新尋路到place1,繼續前進;此時機槍兵回到步驟4,回到了 移動進攻 狀態。

退出當前狀態;狀態機堆疊:【移動攻擊】【空閒】

1.[指令碼]關於Destroy問題

GameObject.Destroy():表示移除物體或物體上的元件,代表銷燬該物體,實際上該物體的記憶體並沒有立即釋放,因為有延遲刪除機制在。DestroyImmediate適用在自定義窗口裡面,因為那個裡面沒有延遲刪除機制。下面參考:http://www.unitymanual.com/thread-9735-1-1.htmldestroy是下一幀被銷燬的DestroyImmediate是這一幀就銷燬了Destroy本身是個延遲操作,預設是執行完這一幀多有操作後銷燬,記憶體的回收是unity本身的設計不是及時回收.因而用destoryImmediately還是destroy是看設計需求而不是統一用哪個這裡以作記錄,方便檢視。

2.如何在game檢視中實現sceneoverdraw效果

將材質球改成transparent透明的然後調整透明度就可以了alpha

3.[基本操作]unity操作android觸屏移動程式碼

public Vector3 fristPos;//接觸時的position

public Vector3 twoPos;//移動後的position

public float speet=1.0f;        //移動速度

void Update () 

{

        float moveY = 0;//上下移動的速度

相關推薦

Unity高頻試題總結

1.什麼是渲染管道? 是指在顯示器上為了顯示出影象而經過的一系列必要操作。 渲染管道中的很多步驟,都要將幾何物體從一個座標系中變換到另一個座標系中去。 主要步驟有: 本地座標->檢視座標-&g

【網路協議】專題總結以及網路協議高頻試題彙總(8篇)

這是一份超詳細的HTTP協議攻略,內容大綱如下: 內容如下(點選即可跳轉): 一篇文章帶你詳解 HTTP 協議(上) 一篇文章帶你詳解 HTTP 協議之報文首部及欄位詳解(中) 一篇文章帶你詳解 HTTP 協議(下)   這是一份超詳細的TCP/IP協議

九章算法-試題總結(算法、強化算法、系統設計高清視頻觀看)

1 落單的數 題目描述: 有2n+1個數,其中2n個數兩兩成對,1個數落單,找出這個數。要求O(n)的時間復雜度,O(1)的空間復雜度。 進階問題:如果有2n+2個數,其中有2個數落單,該怎麽辦? 分析 初階:將2n+1個數異或起來,相同的數會

Linux試題總結

linux面試題(部分試題為網上摘錄)1、/var/log/messages日誌中找到相關信息:kernel: nf_conntrack: table full, dropping packet。出現這些信息會導致什麽後果?該如何解決?(此試題為網上他人總結,自己拿來學習)解答:這個報錯意思是,連接跟蹤表已滿

http協議試題總結

基於 value field 發送 數據 nbsp 常數 面試 http協議 一、http協議基於tcp協議 當瀏覽器需要從服務器獲取數據時 那麽就會發送一個http請求 這時 http請求會通過tcp建立一個服務器通道 請求後會斷開連接進入無畏狀態 所以htt

入我新美大的Java後臺開發試題總結

情況 查詢優化 做什麽 工作 我認 人的 方便 xpl 別人   靜兒最近在總結一些面試題,那是因為做什麽事情都要認真。面試也一樣,靜兒作為新美大金融部門的面試官,負責任的告訴大家,下面的問題回答不上來,面試是過不了的。不過以下絕不是原題,你會發現自己實力不過硬,最終肯定是

shell試題總結

用戶 date adduser /dev/null dir then light /dev/ lin 1.寫一個腳本,實現判斷10.0.0.0/24網絡裏,當前在線用戶的IP有哪些(方法有很多) #!/bin/sh for n in `seq 254` do pin

Java後臺開發試題總結

情況 swap sql 行數 his 本地方法棧 特性 jndi buffer 1>如何定位線上服務OOM問題  2>JVM的GC ROOTS存在於那些地方 3>mysql innodb怎樣做查詢優化 4>java cas的概念 Java服務OO

Linux驅動試題總結

失敗 產生 ip協議 函數 原子 名稱 有助於 方式 單處理器 1、 Linux設備中字符設備與塊設備有什麽主要的區別?請分別列舉一些實際的設備說出它們是屬於哪一類設備。 字符設備:字符設備是個能夠像字節流(類似文件)一樣被訪問的設備,由字符設備驅動程序來實現這種特

Java高級工程師試題總結及參考答案

排序算法 move ner 隔離級別 這一 aid 是我 分析 操作 一、面試題基礎總結 1、 JVM結構原理、GC工作機制詳解 答:具體參照:JVM結構、GC工作機制詳解 ,說到GC,記住兩點:1、GC是負責回收所有無任何引用對象的內存空間。 註意:垃圾回收回收的

試題:總結 !=!=未看

row 使用遞歸 ocl object 作者 rand col cat 完全 一、如何比較兩個對象,比如學生類,根據屬性年齡比較大小 參考:http://zhidao.baidu.com/link?url=0eh3YqTJGUd0Kp9R_YM3q2sh2A39

試題:各大公司Java後端開發試題總結 !=!未看

array water 沒有 引用 run 模塊 transacti 速度 相關 ThreadLocal(線程變量副本) Synchronized實現內存共享,ThreadLocal為每個線程維護一個本地變量。 采用空間換時間,它用於線程間的數據隔離,為每一個使用該變量的線

2018年大數據試題總結

shuff 排序 2018年 split t對象 默認 數據庫 cmp one 目前面試了多家大數據開發工程師,成長了很多,也知道了很多知識,下面和大家分享一下我遇到的面試題和答案。 1.kafka集群的規模,消費速度是多少。 答:一般中小型公司是10個節點,每秒20M左右

試題總結

onload nbsp scrip 哪些 對象 面試題總結 AS 判斷 frame Css篇: 1、CSS實現寬度自適應100%,寬高16:9的比例的矩形。 JS篇: 1、iframe的缺點有哪些? iframe會阻塞主頁面的Onload事件; 搜索引擎的檢索程序無

面試時遇到的試題總結

In ini 遇到 銷毀 image 信息 let 3.4 畫出 1. servlet的生命周期  畫出servlet的運行原理. 其中第3.4.5.8是servlet的生命周期 生命周期有四個部分: 1.創建Servlet實例對象。通過服務器反射機制創建Servlet對

前端高頻試題 CSS篇

語義 flex布局 ria nth 彈性盒子 direction 重新 結果 space 通過從網上看到的面經,總結的一些高頻的前端CSS面試題,有很多不會,於是找資料,並通過代碼實現,自己提供了一些參考答案。 目錄 1.怎樣會產生浮動? 2.如何清除浮動? 3.盒子模

java筆試試題總結

linix 日誌 面試 arr java json數據 size 冒泡 格式 字符串如何倒序輸出? StringBuffer,String,StringBulider區別? Map與Hashmap 的關系? HashSet與HashTable 的關系? Map裏如何放li

試題總結101-)

art session 格式化 etc ima 設計模式 設置顏色 trunc parent 101.常見框架有哪些 laravel , thinkPHP,yii,ci,目前市場上用得最多的大概就這幾個框架吧。你學好一個框架就有飯吃的咯。 102. 常用魔術方法的觸發時

試題總結——走向JAVA高級工程師

sdn activemq gic 優缺點 tis 實現 ibatis 權限級別 自己 近期考慮換工作的問題,於是投簡歷面試,面試5家公司的高級Java工程師,有4家給了我offer,想著總結一下面試經驗,方便最近正在尋求機會的你們 一、無筆試題 不知道是不是職位原因

各大公司Java後端開發試題總結

sta notify 來看 進程間 對比 葉子節點 單元 重寫 java多態 https://blog.csdn.net/sd09044901guic/article/details/80132173ThreadLocal(線程變量副本)