- Unity 4 3D開發實戰詳解
- 峰 杜化美 張月霞 索依娜編著
- 2953字
- 2019-01-01 21:14:52
2.1 Unity集成開發環境的整體布局
本節將對 Unity 集成開發環境的整體布局做詳細的介紹與說明,使讀者理解各個布局的作用與用途,使讀者對Unity集成開發環境有一個整體化的了解。
2.1.1 Unity集成開發環境的整體布局
Unity 集成開發環境的默認布局分隔為一系列不同的面板和帶有標簽的窗口。每個窗口都顯示了編輯器某一方面的細節,并允許開發者在開發游戲時使用不同的功能。如果讀者曾經使用過一款三維建模程序或是其他的游戲編輯器,會發現它們有些相似。
雙擊Unity的快捷方式,進入Unity集成開發環境,其整體布局為標題欄、菜單欄、工具欄、場景設計面板、游戲預覽面板、游戲組成對象列表、項目資源列表、屬性查看器、提示欄和控制臺,如圖2-1所示。
說明
讀者可以根據自己的愛好和實際需要來創建自己的布局。可以在每個面板或者窗口的標簽處按住鼠標左鍵,把面板或者窗口拖到適當的位置后松開鼠標左鍵。布局完成后可以在Window→Layouts→Save Layout保存自己的布局。如果布局被不小心弄亂了,可以通過Window→Layouts找到自己的布局來恢復。
2.1.2 標題欄
標題欄是用于顯示所打開的項目文件的名稱,右側有所常見的最小化、最大化和關閉按鈕,單擊不同的按鈕,執行不同的操作,如圖2-2所示。

▲圖2-1 Unity集成開發環境的整體布局

▲圖2-2 標題欄
2.1.3 菜單欄
菜單欄中包含File、Edit、Assets、GameObject、Component、Terrain、Window和Help菜單,如圖2-3所示,每個菜單下還有子菜單,讀者可以根據需要選擇不同的菜單,實現所需要的功能。

▲圖2-3 菜單欄
● File(文件)菜單:打開和保存場景、項目,以及創建游戲。
● Edit(編輯)菜單:普通的復制和粘貼功能,以及選擇及其相應的設置。
● Assets(資源)菜單:與資源創建、導入、導出以及同步相關的所有功能。
● GameObject(游戲對象)菜單:創建、顯示游戲對象以及為其建立父子關系。
● Component(組件)菜單:為游戲對象創建新的組件或屬性。
● Terrain(地形)菜單:為游戲場景創建并編輯地形。
● Window(窗口)菜單:顯示特定視圖(例如,項目資源列表或游戲組成對象列表)。
● Help(幫助)菜單:包含到手冊、社區論壇以及激活許可證的鏈接。
提示
現在讀者只需要了解每個菜單中所包含的常見功能,稍后用到時,將會對各個功能給出更為詳細的介紹。
2.1.4 工具欄
工具欄位于菜單欄的下方,主要有交換工具,變換Gizmo切換,播放控件,分層下拉列表和布局下拉列表,如圖2-4所示。
● Transform(變換)工具:在場景設計面板中用來控制和操縱對象。按照從左到右的次序,它們分別是Hand(移動)工具、Translate(平移)工具、Rotate(旋轉)工具和Scale(縮放)工具。

▲圖2-4 工具欄
● Transform Gizmo(變換Gizmo)切換:改變場景設計面板中Translate工具的工作方式。
● Play(播放)控件:用來在編輯器內開始或者暫停游戲的測試。
● Layers(分層)下拉列表:控制任何給定時刻在場景設計面板中顯示那些特定的對象。
● Layout(布局)下拉列表:改變窗口和視圖的布局,并且可以保存所創建的任意自定義布局。
提示
控制工具也是按照功能分類的,它們主要用來輔助讀者在場景設計面板和游戲預覽面板中進行編輯和移動,在后面的章節將進行更為完整的介紹。
2.1.5 場景設計面板
場景設計面板是編輯器中最重要的面板之一,其是游戲世界或是關卡的一個可視化表示,如圖2-5所示。在這里可以對游戲組成對象列表中的所有物體進行移動、操縱和放置,創建供玩家進行探險和交互的物理空間。

▲圖2-5 場景設計面板
正如讀者所看到的,在游戲組成對象列表中列出的對象都會在場景設計面板中顯示出來。可以在游戲組成對象列表中單擊對象的名字來選中游戲對象,或是在場景設計面板中手動單擊它。在場景設計面板或是游戲組成對象列表中單擊不同的對象,將會在屬性查看器中顯示該對象所對應的數據。
說明
如果讀者在游戲組成對象列表中可以看到對象列表,但是場景設計面板看上去空空如也,可能是讀者的場景設計面板縮得太小了,以至于無法看到各個資源。要修正這個問題,可以在游戲組成對象列表中選中某個對象,移動鼠標指針并讓它懸停在場景設計面板上,隨后按F鍵來放大顯示。
1.攝像機導航
學會怎樣在場景設計面板中迅速移動,是使用編輯器所需要掌握的最重要的方面之一(如果讀者會使用Autodesk Maya,很可能會熟悉這些控制方法)。
可以把場景設計面板想象成為一個虛擬攝像機的輸出或焦點。為了在場景中進行移動,讀者需要移動攝像機的視野,就好像讀者在看著不同的對象。
● Tumble(旋轉,Alt+鼠標左鍵):攝像機會以任意軸為中心進行旋轉,從而旋轉視圖。
● Track(移動,Alt+鼠標中鍵):在場景中把攝像機向左、向右、向上和向下移動。
● Zoom(縮放,Alt+鼠標右鍵或是鼠標滾輪):在場景中縮小或放大攝像機視角。
● Flythrough(穿越)模式(鼠標右鍵+WASD鍵):攝像機會進入“第一人稱”模式,使得讀者可以在場景中迅速地移動和縮放。
● Center(居中,選擇游戲對象并按 F 鍵):攝像機會放大并把選中的對象居中顯示在視野中。鼠標光標必須位于場景設計面板中,而不是在游戲組成對象列表中的對象上方。
● Full Screen(全屏)模式(空格鍵):按下空格鍵可以使得當前激活的視圖占據編輯器所有可用的顯示空間。再次按下它可以返回之前的布局。當前激活的視圖就是鼠標光標所懸停的視圖。
● Tumble(Alt+鼠標鍵):攝像機會以任意軸為中心進行旋轉,從而旋轉視圖。
● Track(鼠標鍵):在場景中把攝像機向左、向右、向上和向下移動。
● Zoom(Ctrl+鼠標鍵):在場景中縮小或放大攝像機視角。
場景設計面板還包含一個名為 Persp 的特殊工具,如圖 2-6 所示。這一特殊工具可以使讀者迅速地切換觀察場景的角度。

▲圖2-6 切換攝像視角工具
單擊 Persp 上的每個箭頭都會改變觀察場景的角度,使其沿著一個不同的正交或是二維方向變換,例如,上、后、前、右,如圖 2-7 所示。單擊這一 Persp 中的居中立方體圖標,可以把場景設計面板恢復到默認的透視(Perspective)視圖。

▲圖2-7 各個主要的方向視圖
提示
如果讀者更習慣于使用與默認顏色不同的顏色來表示游戲世界的坐標軸,可以依次單擊Edit→Preferences→Colors項,然后修改讀者喜歡的任何顏色。
2.高級視圖操作
場景設計面板的控制欄可以改變攝像機查看場景的方式,如圖2-8所示。其默認設置可以使讀者對于場景在游戲中渲染后的樣子有一個很好的認識,它還會顯示一個網格以幫助讀者定位和移動對象。

▲圖2-8 場景設計面板的控制欄
● 第一個下拉列表(繪制模式)可以控制在游戲場景中對象是怎樣繪制的。默認值為Textured (帶有貼圖的)——即對象會使用讀者為其指定的顏色或貼圖進行繪制;單擊這個菜單把繪制模式修改為Wireframe(線框)會顯示對象的物理網格,而不帶有任何貼圖。
提示
這些選擇中的任何一個都不會改變游戲的顯示方式,它只會改變你在場景設計面板中查看這些對象的方式。
● Textured Wire(帶有貼圖的線框)會把對象的貼圖和它們的線框疊加在一起顯示。Render Modes(渲染模式)下拉列表對開發者所開發游戲場景中的對象進行微調,進而優化是非常有用的;Lightmap Resolution(光照貼圖分辨率)會在場景上覆蓋棋盤格來顯示光照貼圖的分辨率。
● 默認值(RGB)會以通常情況下帶有顏色的方式來顯示所有的對象;Alpha會使用對象的Alpha值來顯示場景中的所有對象,即用灰度圖顯示;Overdraw模式會顯示場景中有多少時間是消耗在重復繪制上;Mipmaps會試圖顯示對象所使用的最理想的貼圖大小。
說明
灰度圖:場景中完全不透明的對象會用白色渲染,完全透明的對象會用黑色渲染,半透明的對象會使用不同深度的灰色渲染。
● Scene Lighting(場景光照)按鈕可以在場景設計面板是使用默認的內置光照還是使用讀者自己實現的光照之間來回切換。如果讀者沒有在場景中放入任何光源,使用內置光照設置會比較有用。
● 最后一個切換按鈕 Scene Overlay(場景疊加)可以對攝像機進行更新,使得場景的顯示方式就像在游戲中一樣——網格隱藏了,其他的效果(如霧化效果、GUI 元素以及天空盒)也會渲染。
3.操作對象
除了把攝像機視角四處移動以外,還需要在場景中重新定位和移動對象。這些操作稱為對象變換(object transform),它們可以處理任意選中對象的位置、旋轉和大小(相對尺寸)。
對象變換方式有以下兩種方式:可以在屬性查看器中為這些變換輸入新的值,也可以通過變換工具手動地移動和操作這些對象。
● 在游戲組成對象列表或者場景設計面板中單擊Camera對象,以使其信息顯示在屬性查看器中,如圖2-9所示。每個對象列出的第一個屬性就是變換,它保存了該對象當前的位置、旋轉和縮放。單擊這些輸入框中的任意一個進行輸入,以修改里面的數字。Unity的基本單位是米。

▲圖2-9 屬性查看器
提示
也可以通過Transform工具來對對象進行變換。讀者可以手動地在工具欄中選擇一個工具,也可以使用下一節介紹的熱鍵在工具之間快速切換(強烈推薦)。
● 圖2-10中所示的Translate工具可以在場景中移動選中的對象的位置,可以沿著3條坐標軸中的某一條移動,也可以在整個空間自由移動。在游戲組成對象列表中單擊Sphere對象并且按W鍵來激活移動工具。抓住其中的一個手柄,可以把對象沿著該坐標軸在游戲世界中移動。
● 也可以通過單擊該工具的中心(或是這個對象自身)在場景中拖動,以將這個對象沿著所有3條坐標軸自由地移動。然而,這通常不是最好的方法,因為讀者不能精細地控制放置的位置。讀者會發現,在不同的正交視圖(例如,前視、右視)中切換,對于精確地放置對象有很大的幫助。

▲圖2-10 移動游戲對象
提示
屬性查看器中的值會根據讀者的修改而進行更新,并實時在Scene面板中顯示修改后的效果。
● 圖2-11中所示的Rotate工具可以把對象按照任何給定的坐標軸進行旋轉。單擊Sphere對象并按E鍵來激活這一工具。這個工具的手柄就好像3個帶有顏色的環包著一個球體。拖動這些手柄或者直接拖動鼠標就可以旋轉對象。

▲圖2-11 旋轉游戲對象
● 這個工具的手柄就好像3個帶有顏色的環包著一個球體。拖動這些手柄或者直接拖動鼠標光標就可以旋轉對象。
注意
這些環的顏色指明了這個對象會按照哪條軸來旋轉。例如,如果拖動藍色的手柄,這個球體就會沿著z軸旋轉。這一工具還有一個簡單的黃色環圍繞在另外3個環的外側。可以單擊并拖動這個黃色的環來讓對象按照所有的3條坐標軸進行旋轉。
● 最后一個變換工具是Scale工具,可以在鍵盤上按R鍵來激活它,如圖2-12所示,這個工具和Translate工具的用法很相似——可以拖著一個手柄,把這個對象在這條坐標軸上縮放,或者使用中間的黃色方塊來把對象在所有3條坐標軸上一致地縮放。

▲圖2-12 縮放游戲對象
說明
使用這個工具對網格進行縮放是有風險的。這看上去像一個非常快速的方法,可以用來改變任何資源的大小,但是,如果使用太多縮放過的對象或是把貼圖拉伸到完全不相稱的地步,這可能會影響游戲的性能。調整縮放最好的方法就是,確保3D應用程序中的網格在最開始時其大小就是正確的。
2.1.6 游戲預覽面板
在默認的Tall布局下,游戲預覽面板位于Scene標簽旁邊的標簽上。在這里,游戲會按照就像是最后構建并發布時一樣進行渲染。可以在任何時候使用這個視圖在編輯器內測試或試玩游戲,而不需要停下來構建任何東西,如圖2-13所示。

▲圖2-13 游戲預覽面板圖
提示
雖然現在看這好像不是很重要,但是當讀者開始要調整或是平衡成千上萬個小細節的時候,能夠自由地在編輯器和游戲中隨時切換真是太重要了。
要測試游戲,可以選擇按下工具欄上的播放控件中的各個按鈕,實現相關的操作,如圖2-14所示。
● 播放控件中第一個右箭頭的按鈕,即運行按鈕,編輯器會激活游戲預覽面板,并且讓所有的用戶界面變得略微黑一些,然后開始游戲。
● 中間的按鈕為“暫停”按鈕,即暫停游戲。再次按下“暫停”按鈕可以從暫停的地方開始游戲。
● 最后一個按鈕是“單幀”(Step)按鈕,其使得開發者可以在游戲中一幀一幀地移動。當開發者需要調試某個特定的、有問題的代碼補丁,或是需要看看某些東西在哪里出現錯誤時,這非常有用。
游戲預覽面板和場景設計面板一樣,其也具有控制欄,如圖2-15所示。

▲圖2-14 播放控件

▲圖2-15 游戲預覽面板控制欄
● Aspect(任意顯示比例下拉列表),可以實時改變游戲預覽面板的顯示比例,即使游戲正在運行。Free Aspect(任意顯示比例)下拉列表允許游戲預覽面板填滿當前窗口中所有可用的空間,而其他的選項會模擬最常見的顯示器的分辨率和比例。
注意
當需要為不同大小的屏幕制作GUI時,這會非常方便。
● 單擊Maximize on Play(進行游戲時最大化)切換按鈕,可以在開始運行游戲時把游戲預覽面板擴大到編輯器視圖的整個區域。
注意
不能在游戲正在運行時改變這個切換按鈕的狀態;需要先停止游戲并且重新開始游戲,以更新這個修改。
● 單擊 Gizmos(工具)按鈕,可以切換游戲中繪制和渲染的所有工具。目前,場景中沒有任何工具,所以現在它并不能做什么。然而,以后讀者可能使用一些定制的工具來表示游戲中一個特定的區域,并且讀者可能想要總是精確地看到這個區域的邊界在哪里,即使是在游戲進行時。
● 控制欄上的最后一個按鈕可以顯示Render Statistics(渲染數據)頁面。當開始優化游戲時,這非常有用。現在,只需要知道這是一種快速查看游戲幀速率(Frame Per Second,FPS)的方式,后面的章節會更加詳細介紹它。再次單擊Stats按鈕可以隱藏渲染數據頁面。
說明
幀速率是一個常見的指標,它可以告訴用戶游戲運行得是否流暢。如果幀速率過低的話,游戲運行畫面會顯得比較卡。
2.1.7 游戲組成對象列表
項目資源列表列出了游戲中所有可用的對象和文件,游戲組成對象列表僅僅列出了那些真正會在當前場景中用到的對象。場景中的這些對象是簡單按照字母順序排列的,隨著讀者在游戲中添加或者刪除對象,游戲組成對象列表會隨著每次修改而進行更新。
在游戲組成對象列表中選擇一個對象并按Delete鍵(或是右擊并選擇Delete鍵),可以從游戲的當前場景中刪除這個對象,圖2-16顯示了當前場景設計面板中的內容。
提示
一個資源的每個實例(一個副本或者一次出現)都會獨立地列出來,這使得良好的命名規范變得尤為重要,命名的規范也就是達到見名知意的目的。
在游戲組成對象列表中為對象建立父子關系,可以對其進行組織并使得對游戲的編輯修改更為簡單。當為對象建立父子關系時,基本上就是將一組無關的對象收集到一起并建立分組,使它們位于一個單一的對象(父對象)之下。在該父對象之下的所有其他對象,都稱為孩子或者子對象,如圖2-17所示。

▲圖2-16 游戲組成對象列表

▲圖2-17 游戲組成對象列表中的父子關系
說明
在這個例子中,一個名為GameObject的資源就是父對象,有3個子對象位于其下:Sphere、Cube和Plane。單擊GameObject旁邊的箭頭可以展開或是收起這一分組,這就好像Project視圖中的文件夾一樣。
建立父子關系除了會提供一種快捷方式來把相似的對象組織在一起以外,還帶來了另一個重要的好處,即對父對象進行移動或是操作,也會依次地對其下所有的子對象進行同樣的操作。
也就是說,子對象繼承了父對象的數據。然而,仍然可以對子對象進行獨立于其他子對象和父對象的編輯,這使得你有了更多的控制權。
如果讀者仍然無法確切地理解父子關系,可以想象一下一個普通人的身體。手臂以身體作為父對象,手以手臂的末端作為父對象。向前移動身體(父對象)也會讓手臂隨著它移動,這也會依次移動手(手臂和手是兩個子對象)。然而,也可以對手進行移動和旋轉而不需要移動身體和手臂。
提示
為對象建立父子關系,可以使得對大量的對象的移動變得更為方便和精確,因此,讀者應該盡可能地使用這種方法。后續的章節將會介紹建立父子關系的一些更為高級的概念。
2.1.8 項目資源列表
項目資源列表中列出了項目中的所有文件(腳本、對象、場景、任何文件),并且這些文件都組織到一個Project文件夾中,每個Project文件夾都會包含一個Assets(游戲資源)文件夾。Assets文件夾包含讀者所創建的對象或是導入的資源,包括網格(mesh)、貼圖、腳本、攝像機、關卡等,如圖2-18所示,項目資源列表顯示了這個Project文件夾及其所包含的Assets文件夾。
項目資源列表顯示了這個項目所包含的全部資源,并且這些資源在項目中的組織方式與讀者計算機硬盤上的組織方式完全一致。文件夾旁邊的箭頭表示這是一個嵌套層,單擊某個箭頭會展開該文件夾的內容。在項目資源列表中簡單地單擊和拖曳,就可以在不同文件夾中移動和組織文件。
提示
在Unity編輯器外部移動資源文件時要非常小心,實際上,應該不惜一切代價避免這樣做。如果需要重新組織或移動某個資源,讀者應該在項目資源列表內部進行。否則的話,可能會損壞或是刪除和這個資源相關聯的源數據或是鏈接,甚至可能在此過程中損壞項目。
也可以在項目資源列表中直接打開文件并對其進行編輯。如果發現需要對任何文件的內容(如一個腳本文件)進行調整或是修正,只須雙擊這個文件就可以在默認編輯器中打開它。正常地保存這個文件,就會讓Unity把它重新導入到項目里。
如果項目包含了成百上千或是成千上萬個文件,讀者可能會發現通過眼睛自己去找到某個文件非常不方便,甚至是完全不可能的。好在可以在搜索欄中輸入文件名的任何部分,以便在項目各個層次的子目錄中進行查找。
說明
要重命名一個文件或者文件夾,可以緩慢地左擊其名字兩次(和通常的快速雙擊不同),或是選擇想要重命名的文件并按F2鍵。當完成重命名后,可以按Enter鍵。
在項目資源列表中右擊,會彈出一些高級選項,包含導入資源和外部項目控制器同步以及資源包操作,如圖2-19所示。后續章節會更深入地介紹這些內容。

▲圖2-18項目資源列表

▲圖2-19 項目資源列表中的高級選項
提示
所有帶標簽的窗口都有一個名為 Windows Options(窗口選項)的下拉框,可以用來最大化所選中的視圖,或是關閉當前顯示的標簽視圖,或是在這個窗口中添加另一個帶標簽的視圖。單擊該圖標可以彈出可用的選項。
2.1.9 屬性查看器
屬性查看器顯示游戲中每個對象所包含的詳細信息,如圖2-20所示。單擊Plane對象,其詳細內容會顯示在屬性查看器中。
在屬性查看器中一般包含很多屬性信息,這乍看上去有點讓人無所適從,但是,每個對象對應的所有屬性查看器都遵循一些基本原則。在屬性查看器的頂端是這個對象的名稱,然后是該對象的各個方面的一個列表,例如,Transform(變換)和Mesh Collider(網狀碰撞體)。
提示
這些不同種類的屬性中的每一個都會在稍后給出更為詳細的介紹,但是到目前為止,只需要知道在這里可以任意修改對象所擁有的屬性信息。
屬性查看器中的每個屬性都有與其對應的幫助按鈕和上下文菜單。單擊幫助按鈕會顯示參考手冊中和這個屬性相關的文檔,讀者可以挑選這些屬性中的任意一個嘗試一下。單擊上下文菜單會顯示僅僅與該屬性相關的選項,也可以在此把這個屬性重置為其他默認值。

▲圖2-20 屬性查看器
2.1.10 狀態欄與控制臺
控制臺和狀態欄是Unity集成開發環境中兩個很有用的調試工具,如圖2-21所示。狀態欄總是出現在編輯器的底部。可以通過菜單Window→Console或按Ctrl+Shit+C快捷鍵打開控制臺,也可以單擊狀態欄來打開控制臺。

▲圖2-21 工作中的控制臺和狀態欄
當按下“播放”按鈕開始測試項目或是導出運行項目,在狀態欄與控制臺都會顯示出相關的提示信息,也可以在腳本中讓項目向控制臺和狀態欄輸出一些信息,這有助于調試和修復錯誤。項目遇到的任何錯誤、消息或者警告,以及和這個特定錯誤相關的任何細節,都會顯示在這里。
2.1.11 動畫視圖
現在 Unity 還包含一個動畫視圖,讀者可以在這里查看或是調整動畫曲線。這個窗口在默認情況下并不打開,但是,可以通過Window→Animation或是按Ctrl+6快捷鍵來查看它,如圖2-22所示。動畫視圖會作為一個單獨的浮動窗口彈出,讀者可以四處移動它或是改變其大小。現在,這個窗口是空的,因為場景中沒有包含任何動畫。

▲圖2-22 動畫視圖
提示
在稍后的章節中,讀者會看到如何使用這個視圖來查看動畫剪輯或者在3D動畫應用程序之外更新數據。