程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 【Unity】2.3 項目浏覽器和資源的組織,unity2.3

【Unity】2.3 項目浏覽器和資源的組織,unity2.3

編輯:C#入門知識

【Unity】2.3 項目浏覽器和資源的組織,unity2.3


分類:Unity、C#、VS2015

創建日期:2016-03-29

一、Project—工程浏覽器

前面我們說過,Unity中的Project View(稱為工程浏覽器)相當於VS2015中的解決方案資源管理器(Solution),Unity的每個工程中可包含多個關卡(*.unity),每個關卡都是一個可獨立運行的項目,根據發布的目標平台不同,編譯後生成的可執行程序的擴展名也不同,例如對於Windows平台生成的可執行程序是(.exe文件),對於在Windows平台下運行的浏覽器(Web)生成的是動態鏈接庫(.dll文件),對於Android平台生成的是(.apk文件)。而VS2015是一個解決方案資源管理器(Solution)下可包含多個項目(Project),在Windows平台上,每個項目根據創建的模板不同,編譯後生成的文件也不同,或者說,生成的可能是一個可獨立執行的程序(.exe文件),也可能生成的是一個可被其他程序調用的動態鏈接庫(.dll文件)。

總之,雖然英文都叫Project,但含義不同。為了容易區分,在中文翻譯中一般將Unity的Project稱為工程,將VS2015中Solution下的Project稱為項目。

Unity中Project下的各種資源和腳本都是通過文件夾來分類的,所以叫工程浏覽器。這些文件夾下的資源和源程序相當於VS2015解決方案資源管理器(Solution)中每個項目(英文也是Project)下的各種資源和源程序,區別是VS2015是先通過項目類別來區分,然後再通過項目下的文件夾和命名空間來分類,而不是僅通過文件夾來分類。

可這樣來理解Unity和VS2015兩者之間的概念:

Unity VS2015

名稱 Poject(工程) 解決方案資源管理器(.sln)

項目 Poject下的文件夾 解決方案資源管理器中項目下的文件夾

用途 管理各種資源和腳本 管理各種資源和源程序

文件管理 關卡文件(*.unity) 項目文件(.csproj)

資源 Assets Resources

邏輯控制 腳本(.cs文件) 源程序(.cs文件)

理解這些含義的最好辦法就是打開安裝Unity時自帶的示例工程,然後觀察對應視圖以及視圖下的文件夾和文件。

下圖是打開安裝Unity時自帶的示例工程後的Project視圖:

Project視圖以ListView的形式顯示工程的結構。點擊列表中的文件夾後,內容就立即顯示在右側視圖中。其中單個資源顯示為圖標,並標明其類型(腳本、材質、子文件夾等)。移動視圖下方的滑塊可調整圖標大小。如果滑塊移至最左側,會被ListView的另一種視圖形式替代。

表示工程結構的ListView的上方是收藏夾 (Favorites) 部分,用於保存經常使用的項,以方便以後訪問。

可將工程結構列表中的項直接拖動至收藏夾 (Favorites)來收藏它。

Project下方的下拉框用於創建各種資源,其功能與主菜單Assets下的Create子菜單的功能相同,用於給現有文件夾添加新資源和子文件夾。

窗口 (Window) 菜單中有一個選項,可供轉換至工程視圖單列版,單列視圖基本上只有層級結構列表,無圖標視圖。菜單旁的鎖定圖標可“凍結 (freeze)” 視圖中的當前內容(如防止被其他地方的事件更改),其用法與檢視器 (Inspector) 鎖定的用法類似。

1、常用的快捷方式

當工程浏覽器視圖有焦點時,快捷方式可用。下面是常用的快捷方式:

Ctrl+A 選擇列表中的所有可見項目

Delete 彈出對話框後刪除

Shift+Delete 不彈出對話框而直接刪除

Enter 打開所選資源

2、場景 (Scenes)

一般在Assets文件夾下的Scenes子文件夾下包含不同的場景文件(*.unity),這些文件包含了各種游戲對象,可利用它創建主菜單、獨立關卡等等。

Unity將每個唯一的場景 (Scene) 文件都視作一個關卡。在每個場景 (Scene) 中,可放入環境、障礙和裝飾物等。

創建場景:File-->New Scene

保存場景:File-->Save Scene

3、實例化預設 (Prefabs)

一般用Prefabs文件夾保存各種預設文件。

創建一個預設 (Prefab) 後,即可輕松、快速創建該預設 (Prefab) 的副本,每個副本都稱為一個實例 (Instance)。

要創建預設的副本,可從工程視圖 (Project) 中將預設文件夾下的預設直接拖放到層次視圖 (Hierarchy) 或場景視圖 (Scene) 中。

有了預設 (Prefab) 的實例以後,就可隨意放置和調整它。

4、添加組件 (Component) 和腳本 (Scripts)

一旦有了一個預設 (Prefab) 或高亮的游戲對象 (GameObject) ,就可以使用組件 (Components) 為其添加其他功能。

要添加一個組件,只需要從游戲對象 (GameObject) 中的組件 (Component) 菜單中選擇一個組件 (Component)。之後,就會看到組件 (Component) 出現在游戲對象的檢視器 (Inspector) 中。

腳本 (Scripts) 也是一種組件。

如果添加的組件切斷了游戲對象 (GameObject) 與預設 (Prefab) 的聯系,可使用菜單中的游戲對象 (GameObject)->將變更應用至預設 (Apply Changes to Prefab) 重新建立連接。

5、放置游戲對象 (GameObject)

當將一個游戲對象 (GameObject) 放入場景後,就可以使用快捷工具欄的【轉換工具】 (Transform Tools) 將其放在任意位置。

此外,可利用檢視器 (Inspector) 中轉換 (Transform)選項卡下的值來微調游戲對象的位置和旋轉角度。

6、使用相機 (Cameras)

相機 (Cameras) 是游戲的眼睛。玩家玩游戲時看到的所有內容都是通過一台或多台相機(Camera對象)來展示的。

可像任何其他游戲對象 (GameObject) 一樣放置、旋轉和父子化相機。由於相機是一個帶相機組件 (Camera Component) 的游戲對象(GameObject)。因此,它除了具有常規游戲對象 (GameObject) 的功能以外,還有一些相機特定的功能。

腳本 (Scripts) 資源包中安裝了一些有用的相機 (Camera) 腳本。創建新工程時可同時安裝腳本 (Scripts) 資源包,或通過選擇菜單的Assets-> Import Package來實現。

導入的腳本可在菜單中的Components-> Camera-Control 中找到。

7、光源 (Lights)

除了一些極少數情況,一般都需要在場景中添加光源 (Lights)。

雙擊Scenes下的Car,可觀察已經添加的光源:

光源類型共有三種,每種各有不同。最重要的是它們為游戲增添氣氛和感覺。不同光源可完全改變游戲的情境,有效使用光源將是一個重要的學習課題。

本章後面還會用專門的一節來介紹它。

二、Assets—保存和組織各種資源

Project下的Assets文件夾用於保存和組織Unity工程中的各種資源。

1、資源工作流程

這裡介紹的在Unity中使用單個資源的步驟都是通用的步驟,只是概述了基本操作。例如,三維 (3D) 網格的使用。

2、創建粗糙資源

你可以使用任何支持的三維 (3D) 的建模軟件創建一個粗糙的資源。例如采用3Dmax、Maya等。後面的章節中還會單獨介紹可導入哪些建模模型。

3、創建和更新資源

如果您正在創建游戲並需要添加任意類型的新資源,您只需創建此資源並將其保存在資源 (Assets) 文件夾下。當您返回或啟動 Unity 時,添加的文件就會被自動檢測到並自動導入到Unity工程中。

另外,當你在本機上通過3Dmax、Maya等軟件中更新和保存資源時,Unity還可以自動檢測到所做的更改並重新導入更改後的資源。這可以讓你集中精力優化資源,而不必擔心資源與Unity之間的不一致問題。

(1)默認值

在某些導入程序上,您可以為字段引用或相似事務指定默認值。要指定默認值,請在需要設置默認值的字段上打開對象選擇器 (object selector),然後在對象選擇器上選擇一個值。

(2)資源類型

這裡有一些基本的資源類型可供你創建游戲。包括:

(a)網格文件 (Mesh Files) 和動畫 (Animations)

無論使用哪種三維資源包,Unity都會從每個文件中導入網格和動畫。

僅為了使用網格(Mesh)文件時不需要導入動畫。如果使用動畫,可以選擇從單個文件導入所有動畫或逐個導入包含每個動畫的文件。

將網格(Mesh)導入到Unity後,就可以將其拖至場景(Scene)或層級視圖(Hierarchy)來創建網格的實例。也可以將組件(Components)添加至實例,而不會作為附件添加至網格文件本身。

Unity將使用UV(即:二維紋理貼圖)和大量默認材質 (Materials)(每個UV對應一種材質)來導入網格(Mesh)。這樣你就可以將對應的紋理文件分配到材質,然後在Unity游戲引擎上填充網格的外觀。

(b)紋理文件(Texture Files)

Unity支持所有圖像格式。即使是分層的Photoshop文件也一樣可以導入,而且不會損壞Photoshop的原始格式。這可讓你輕松無憂地處理單個紋理文件,獲取精簡流暢的體驗。

注意:使用的紋理尺寸應該是2的升冪(如32x32、64x64、128x128、256x256 等),否則可能會導致加載、處理都變慢以及可能會出現馬賽克等負面效果。

要導入紋理,只需將紋理放入工程的資源(Assets)文件夾下,此時紋理就會自動顯示在工程視圖(Project View)中。

另外,你需要將紋理分配到材質中,然後才可將材質運用到網格(Mesh)、粒子系統 (Particle System) 或 GUI 紋理 (GUI Texture)。

使用導入設置 (Import Settings) 也可將紋理轉換為游戲中不同應用類型的立方體貼圖 (Cubemap) 或法線貼圖 (Normalmap)。

4、導入資源

初次保存資源時,應將其按常規保存在Project下的資源(Assets)文件夾下。這樣做的好處是打開Unity工程後,Unity就會檢測到該資源並自動將其導入到工程中。

注意,Unity使用所用建模軟件(如3Dmax、Maya等)提供的FBX導出功能將模型轉成FBX文件格式,因此要求這些軟件要有FBX導出包,以供Unity自動調用。

也可以在應用程序中直接導出為FBX並保存到工程(Project)文件夾下。

將文件添加至工程文件夾的資源 (Assets) 文件夾後,Unity會自動檢測到這些文件。將任何資源 (Assets) 放入資源文件夾後,資源 (Assets) 也都會自動顯示在工程視圖 (Project View) 中。

整理工程視圖 (Project View) 時,請務必記住以下非常重要的事項:

切勿在Unity的管理之外移動任何資源或整理此文件夾。必須始終使用工程視圖 ( Project View) 進行上述操作!

這是因為Unity 中存儲了大量資源文件之間的關系元數據。這些數據用於Unity可在何處找到這些資源。如果你在工程視圖 (Project View) 內移動資源,這些關系都會保留。如果在 Unity 外移動資源,則將破壞這些關系。

另外,如果在工程視圖 (Project View) 中選擇資源,該資源的導入設置會自動出現在檢視器 (Inspector) 中。顯示的選項將根據所選資源的類型自動更改。

(1)在場景中添加資源

只需單擊工程視圖 (Project View) 中的網格(Mesh)並拖動至層級視圖 (Hierarchy) 或場景視圖 (Scene View),便可將其添加至場景 (Scene) 中。

將網格(Mesh)拖到場景中時,將創建一個帶網格渲染器 (Mesh Renderer)組件 (Component) 的游戲對象 (GameObject)。

如果要使用紋理或聲音文件,需要將其添加到場景 (Scene) 或工程 (Project) 中已經存在的游戲對象 (GameObject)中。

(2)將不同資源放到一起

以下簡述了最常用資源之間的關系。

(a)將紋理 (Texture) 應用於材質 (Material)

可將材質 (Material) 應用於游戲對象(GameObject),應用後該對象就變成了帶網格渲染器的組件(Mesh Renderer Component)。

可將動畫 (Animation) 應用於游戲對象 (GameObject),應用後該對象就變成了帶動畫的組件 (Animation Component))

可將聲音文件應用於游戲對象 (GameObject),應用後該對象就變成了帶聲音源的組件 (Audio Source Component))

(b)創建預設

預設 (Prefabs) 是可重復用於場景中的游戲對象 (GameObject) 和組件 (Component) 的集合。

一個預設 (Prefab) 可創建多個相同對象,稱之為實例化。比如樹,創建一個樹預設 (Prefab) 可以實例化多棵相同的樹並將其放入場景中。所有樹都與預設 (Prefab) 鏈接在一起,所以對預設 (Prefab) 所做的任何更改都將自動應用到所有樹的實例當中。如果想更改網格、材質或任何其他項,只需一次性在預設 (Prefab) 中更改,然後所有其他樹都會繼承這些更改。也可更改一個實例,然後選擇主菜單上的游戲對象 (GameObject)->將變更應用至預設 (Apply Changes to Prefab),這可節省許多設置和更新資源的時間。

如果游戲對象 (GameObject) 包含多個組件 (Component) 和子游戲對象 (GameObject) 層級,可在頂級游戲對象 (GameObject)(或根 (root))中創建一個預設 (Prefab),再使用整個游戲對象 (GameObject) 集合。

可以將預設 (Prefab) 當成游戲對象 (GameObject) 結構藍圖。所有預設 (Prefab) 克隆體都和藍圖相同。如果藍圖更新,那麼所有克隆體也將更新。更新預設 (Prefab) 本身有多種方式,可通過更改其克隆體之一並將更改應用至藍圖實現。有關預設 (Prefab) 的使用和更新的更多內容,請浏覽預設 (Prefabs) 頁面。

要從場景的游戲對象 (GameObject) 中真正創建一個預設 (Prefab),只需將游戲對象 (GameObject) 從場景拖到工程中,您會看到游戲對象 (Game Object) 的名稱文字變藍,為新預設 (Prefab) 任意命名。現在,您已創建可重復使用的預設 (Prefab)。

(3)更新資源

您已經導入、實例化資源並鏈接至預設 (Prefab)。想要編輯源資源時,只需在工程視圖 (Project View) 中雙擊它。相應的應用程序將會啟動,可隨意進行更改。更新完成後保存。之後,切換回 Unity 時將檢測到該更新,資源會被重新導入。資源到預設 (Prefab) 的鏈接也將保留。看到的效果就是預設 (Prefab) 將更新。以上即為更新資源的所有必要信息。打開並保存即可!

(4)給資源添加標簽【可選】

如果想讓所有資源保存有序狀態,給資源添加標簽始終是個好辦法。有了標簽,便可在工程視圖或對象選擇器的搜索欄中搜索每個資源相關的標簽。

給資源 (Asset) 添加標簽 (Label) 的步驟:

(從工程視圖 (Project View) 中)選擇想要添加標簽的資源 (Asset)。

如果該資源無任何相關聯的標簽 (Labels),則在檢視器中單擊“添加標簽 (Add Label)”。

如果資源有相關聯的標簽,則單擊標簽 (Labels)所在。

開始寫標簽 (Labels)。

注意:

(a)任何資源可帶一個以上標簽。

(b)要分割/創建標簽,只需在寫資源標簽名時按enter鍵。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved