1. 程式人生 > >UNITY 2D入門基礎教程 (一)

UNITY 2D入門基礎教程 (一)

如果用以前版本的Unity做2D遊戲,雖然能做,但是要費很多周折.
比如你可以將一張紋理賦予一個”面片”網格,然後用指令碼控制它的動畫調整它的位移.如果你要使用物理引擎,那麼還要將這個Obeject處理3D的,所以你還要確保你的Object要有足夠的深度以確保他們在其它軸向上不起衝突.或者你選用一個第三方外掛,如2D Toolkit或者Orthello 2D Framework,他們有著強大的功能,但同樣需要你去做一些約束工作.
當上面這些你仍然可以選用上面這些方法的時候,Unity4.3增加了原生的2D開發環境,讓我們一探究竟吧.

overview_pic

這個教程將帶你探索Unity的2D工具,教程將引導你做一個主題為殭屍的iOS遊戲.教程重點在於一個新的資源型別-“Sprite”,你將學到所有關於Sprite知識,在後續的教程裡你將學會如何通過Unity的動畫系統控制動畫,以及用到Untiy的2D物理引擎的支援.

上面是個教程概述,下面讓我們一步一步來吧.

注:本教程假定你有一些Unity的使用經驗,知道一些基本知識,瞭解Unity的介面,遊戲物件和元件等操作,比如你知道”要新增一個”貓”到場景裡需要從Project拽到Hierarchy裡”.
如果你看不懂上面這個,那麼你需要一個教程入門再來看現在這個2D教程.

最後要注意,本教程是在OS X系統下操作的,然而如果你在Windows下也不用擔心,Unity在Windows上和OS X下大多數指令都是一樣的,會有一些小的差異(如使用Windows資源管理器取代Finder),或者乾脆直接用OS X 系統.

開始:

Unity在4.3中加入了原生的2D工具(專業版和免費版都帶),所以你要確保你安裝的最新版,可以從官網下載到.

注:你可以在其他遊戲裡使用或修改本教程裡提供的美術資源,音樂和音效,但是你必須在遊戲中包含一下資訊:”Artwork/sounds: from iOS Games by Tutorials book, available at http://www.raywenderlich.com”.

建立你的專案

開啟Unity並選擇”File\New Project…”建立一個新的專案,在”Create new Project”裡點選”Set…”標籤,給新專案命名為”ZombieConga”,選擇一個儲存的位置點”Save”.

然後在”Set up defaults for” 選擇”2D”,再點選”Create Project”:

new_2d_unity_project

上面這個對話方塊是Unity中遇到的第一個含有2D特性的設定.你可以隨時改變這個2D設定,如果你想更改這個設定,可以選擇”Edit\Project Settings\Editor”開啟編輯器設定,在”Default Behavior Mode”中改模式為2D,如下圖:

editor_settings_default_behavior

“Default Behavior Mode”(預設行為模式)定義你專案在匯入Assets時的預設匯入設定,當設定為3D模式時,Unity假設你將匯入的檔案建立為紋理型別(如:PNG檔案);當設定為2D時,Unity假定你想要的匯入的資源為Sprite型別,你將在教程裡學到關於Sprite資源匯入設定具體的解釋.

場景檢視的2D模式

下一個2D特徵就是在場景視圖裡有個控制二維切換的按鈕,點選2D按鈕可以啟用2D模式,像下面這樣:

2d_mode_in_scene_ctrl_bar

這個按鈕會將場景相機在透視檢視和正交投影檢視之間進行切換.它們有什麼差別呢?當觀察透視檢視時,遠離相機的物體看起來更小,就像在現實世界中眼睛看物體一樣,然而當正交投影檢視的時候,物體的大小並不受與相機的距離影響.因此,在二維模式時,一個物件不管位置離相機遠近,只要尺寸不變,它看起來將沒有變化的.

下面的配圖可以清晰的看到2D和3D模式視窗的區別.

scene_projection_comparison

上一個圖片也能看到當2D模式啟用時,場景檢視的Gizmo控制也是隱藏的,你只能做檢視的平移操作,Y軸指向上,X軸指向右.

重要:這個設定是不會影響到遊戲播放時效果的,因為它只是幫助你組織場景裡的物件,甚至後期你會在建立2D遊戲的同時創造3D遊戲,你可能需要在這兩種模式間根據需要切換,本教程所有截圖都是在場景檢視的2D模式下.

為了更好的跟著教程學習,你可以調整Unity的佈局和教程截圖的的介面佈局一致,教程裡Unity是用”Dark”面板運行於OS X系統下,Dark面板只在Unity Pro版本才能啟用.我建立了8個開啟的tab,調整他們如下面的樣子,

如圖你可以看到,左上角由Scene,Console和Animator檢視組成,而Game,Project和Animation檢視在左下角組合為一個選項卡,右邊兩列是Hierarchy和Inspector檢視.
當然有時候我也會改變這種設定,檢視的佈局沒有一個固定的要求,可以由自己心情隨意安排自己的工作佈局.

輕鬆製造精靈(Sprites)


用Unity新功能來建立一個精靈有多容易?試試下面的方法.
第一步:拽從Finder視窗拽cat.png檔案到Scene檢視,如下圖:

simple_sprite_add

第二步:空閒時寫給Unity的開發者寫封感謝信,哈哈.

如果沒有建立成功精靈,從第一步開始重試一次.

注:想知道為什麼上面動畫有兩個貓的圖片?別擔心,我後面會告訴你.

如此簡化的匯入依靠Unity預設匯入設定,雖然這常常不是最終需要的正確效果,但足以說明Unity的新功能將使2D遊戲開發異常簡單!本教程後面涵蓋了所有你使用Unity 2D開發遊戲需要了解的知識.

Sprite 資源

在Hierarchy視圖裡選擇cat,然後看Inspector.你的Inspector檢視位置可能和下圖不太一樣,但不必擔心這不重要,這裡要注意的是為了讓cat在場景中顯示,Unity附加了一個Sprite Renderer元件到GameObject.

cat_in_inspector-264x500

Unity會為這個物體建立網格,Unity會基於影象的非透明部分建立網格,下圖裡的殭屍的藍色網格就是:

sprite_mesh

通過這樣建立的紋理網格,可以有助於Unity提高場景執行時的fill rate,也使得建立多邊形碰撞盒更容易,教程後面將介紹如何建立使用碰撞盒.

注意:別讓殭屍突然出現驚嚇到你,我只是覺得它比可愛的小貓更有趣.

在本節教程中你將瞭解Sprite的渲染器元件屬性,可以看到Sprite的名稱.下圖裡你可以看到”cat”物件在精靈渲染器裡被分配的名字是”cat”.

sprite_field_in_inspector

確保Project檢視是可見的,在Inspector視圖裡惦記Sprite編輯框能看到Sprite資源將在Project視圖裡呈現高亮狀態,如下圖:

highlighted_cat

Project檢視中cat精靈高亮

注:高亮邊框會在幾秒後消失,所以如果你不小心錯過它,可以再次點選一次Sprite編輯框.當然現在專案裡只有一個資源,你不可能錯過它.:]

正如上一個截圖你所看到的,Unity會在Project視圖裡高亮顯示cat項,還有另外一個也叫cat的子項.兩隻貓都在Project視圖裡,很容易混淆啊,這是怎麼回事呢:

父級的cat是紋理資源.它將關聯到你匯入的原始美術資原始檔cat.png,以及控制著如何從這個紋理資源建立Sprites,你可以看到它有個檔案內容的縮圖.

子集的cat是Unity匯入cat.png時建立的Sprite資源.現在只有一個子項,因為Unity只從檔案裡建立了一個Sprite,教程後面將教你建立”slicing sprite”,即從一個圖片創建出多個Sprites.

注:Unity渲染Sprite物件實際上是由一個Texture2D生成的,影象資訊實際是儲存於圖片檔案中,你也可以動態的建立自己需要的Texture2D物件來執行時生成Sprite,這個進階的知識本教程就先不講了.

比如cat.png,你可以從Finder中拽一個圖片到Scene檢視(或者Hierarchy檢視,隨你自己)中建立Sprites.但是更常見的是先新增資源到Project裡在新增它到場景中.

將下載到的檔案新增到專案裡:background.png, enemy.png, 和 zombie.png.Unity提供了五種方法讓你將資源匯入專案中:
從Finder視窗拖拽檔案到Project檢視.
到”Assets\Import New Asset…”選單,選擇檔案並點選Import.
在Project檢視中右鍵選擇”Assets\Import New Asset…”選單,選擇檔案並點選Import.
在你的系統中直接新增檔案或者建立子目錄到專案的Assets目錄,Unity會自動重新整理顯示最新的資源內容.不過要注意,一定不要直接從檔案系統裡刪除不用的資源,要總是從Unity編輯器內部刪除資源,因為Unity會儲存有關專案的資源metadate,直接從檔案系統修改刪除可能損壞專案結構.

當然你也可以直接將檔案Hierarchy或者Scene檢視,不過這樣做是直接在當前場景中建立一個GameObject.

從Project視圖裡拖拽enemy到Hierachy檢視.和cat一樣,同樣會有兩個名字為enemy項出現在Project檢視中,當現在這樣只有一個子精靈的時候,你選擇拖拽哪個enemy到Hierarchy檢視都是一樣的.
在Hierarchy視圖裡選擇enemy,設定Transform元件的位置為(2,0,0),如下圖:

enemy_initial_position

enemy的初始位置.

現在場景視圖裡顯得有點亂,在Hierachy視圖裡選擇cat並設定它的位置為(0,2,0),如下圖:

cat_initial_position

你的場景現在會像下圖這樣:

cat_and_enemy_scene
cat和enemy在Scene檢視

最後,從Project檢視拖拽background到Hierachy視圖裡,並設定位置為(0,0,0),如下圖:

background_initial_position

你可以稍晚些調整背景影象的質量,所以現在不用擔心它現在不正確的樣子.(提示:Unity預設設定在匯入background.png時是不正確的(,Scene檢視現在會是這樣子:

scene_with_just_bg
只顯示背景的場景檢視

現在看不到cat和歐巴桑沒關係,它們只是被背景暫時擋住了.可以很容易的調整出來,在調整他們層次之前,我們需要切一具屍體,嘿嘿,一具corpse Sprites,像這樣:

切片精靈表(Slicing Sprite Sheets)

已經匯入zombie.png到專案了,你會發現這個檔案和其它檔案不同,它包含了好多個影象,如下圖:

zombie

這種檔案通常被稱為精靈表(sprite sheet),我們將為表裡的每個影象建立單獨的Sprite.在Project視圖裡展開zombie,能看到像下面截圖這樣,Unity建立了一個包含所有影象的Sprite.這不是我們想要的.

zombie_as_single_sprite

Unity提供了一個非常簡單的解決方案,可以來處理這個需求,在Porject檢視選擇zombie的頂層級後會看到Inspector中顯示了它的Import Settings,設定Sprite模式到Multiple並點選Apply:

zombie_import_settings

選擇這個選項後在Sprite編輯器中會出現一個新的按鈕,並且還移除了Pivot屬性,因為每個Sprite都將定義自己的軸點.

不知道什麼是曲軸點(Pivot points)?Sprite Pivot定義了精靈在區域性座標系中的原點,例如,Sprite的樞軸點在精靈的中心或者左上方,縮放它或者旋轉它時,精靈將圍繞這個原點進行變換.

你可以通過Pivot組合框來指定精靈的樞軸點,我們來看自定義樞軸編輯器(Custom pivot editor).

軸的X和Y的值是0~1,所以0.5的時候是中央,但是你可以用小於0的值或大於1的值來設定樞軸在精靈範圍外.

在Project檢視(如下圖)裡,zombie紋理資源圖示右側沒有小箭頭,也就是說它不包含任何子物體.

zombie_before_slice

在這種狀態下zombie紋理是不可用的,如果你嘗試將它拖到Hierarchy的時候,Unity會提示它不包含精靈.這是因為我們還需要告訴Unity怎麼切分使用這個精靈表.在Project檢視中選擇zombie,並在Inspector中點選精靈編輯器(Sprite Editor)開啟如下視窗:

sprite_editor

精靈編輯器允許定義包含的影象怎麼樣來做為一個精靈.單擊視窗左上方來開始定義精靈,如下圖:

slice_button
精靈編輯器的slice按鈕

Unity能根據圖片自動找到精靈,同樣你也可以調整它自動處理的結果.這裡我們用它預設設定,點選Slice按鈕.

default_slice_options
預設切片選項

Unity是基於貼圖的透明度來確定精靈切分範圍的.你可以看到它找到的精靈都會有一個線框表示.現在,我們看到Unity找到了4個精靈:

auto_sliced_sprites

常規來講當圖片佈置的很好(帶有明確的空白分割空間)時Unity的自動切割效果是最好的,像下圖Unity只找到了笑臉精靈,其他精靈它並沒有自動識別出來:

example_of_broken_auto_slice
錯過的精靈

因為兩個Box重疊相交所以Unity不能找到所有精靈.

example_of_working_auto_slice
Unity能找到三個精靈,因為每個精靈都有明顯的邊界間隙.

所以我們要細緻的安排精靈表中的影象.在編輯器中點選Unity自動識別的任意一個精靈都將顯示精靈詳情視窗,包含其名稱,位置,邊界和中心點,如下圖:

sprite_selected_in_editor

我們可以改變這裡的值,也可以直接在影象中調整範圍和中心點位置.
通常,做了更改後,要點選應用(Appley)或者還原(Revert)按鈕來儲存或者放棄做的修改.

仔細觀察你會發現,zombie.png的圖片是安排在四個同樣大小的舉行中,針對於這種精靈表Unity有個單獨的選項來處理它.
在Sprite Editor的左上角單擊Slice再次開啟切片設定視窗,這次選擇型別為Grid,切片設定將如下圖:

sprite_editor_grid_defaults

Pixel size欄位允許指定網格單元格的大小.X定義每個單元格的寬度,Y為高度.Unity會用這些值從影象的左上角來等分影象.

我們將X設定為157,Y設定為102,如下圖:

sprite_editor_grid_settings
切片網格大小設定.

點選Slice按鈕,Unity會找到下面四個精靈:

zombie_grid
在切片網格中的zombie精靈.

這時你仍然可以單獨選擇網格中的精靈來微調單個精靈的設定,不過一般情況下是沒必要的.

在精靈編輯器左上角點選應用(Apply)提交更改.Unity會更新專案資源,你可以在Project視圖裡看到zombie會包含子精靈,名字分別是zombie_0, zombie_1等等,如下圖:

sliced_zombie_in_project

現在你掌握了兩種設定精靈的方式,這兩種方式要活學活用,同樣可以用於背景的製作.

通過選擇”GameObject\CreateEmpty”選單我們來建立一個空GameObject,命名為zombie並設定位置為(-2,0,0)如下圖:

empty_zombie_gameobject
空zombie GameObject

在Hierarchy檢視中選擇zombie並用”Add Component”新增一個Sprite Renderer元件.如下圖:

add_script_steps

點選精靈渲染器元件右邊的小圓圈開啟精靈渲染器的精靈選項卡,如下圖:

sprite_field_editor

在出現的對話方塊中包含兩個標籤,Assets及Scene.這裡將顯示你專案所有精靈資源和場景中的精靈資源.

選擇Assets選項卡並選擇zombie_0到精靈渲染器,如下圖:

sprite_selection_dialog

在場景檢視中你能看到海灘上有個悠閒的殭屍,還有一個老婦人和貓在它下方,美極了.

zombie_on_beach

現在所有必要的精靈都在場景裡了,我們來配置遊戲檢視.

配置遊戲檢視

Zombie Conga這個遊戲是為iPhone建立的,所以我們要將遊戲檢視尺寸設定為1136 x 640大小.

用Game檢視左上角的下拉選單來改變縱橫比或固定解析度,如下圖:

game_view_ctrl_bar

依據編輯器目前Playersetting的不同設定,這個下拉選單也將有不同的選項,如果裡面有1136 x 640這個解析度項,直接選擇它就可以了.如果沒有,我們可以單擊下面的加號按鈕,如圖:

game_view_size_options
遊戲檢視尺寸選項

建立一個新的固定解析度尺寸設定寬高為1136 和 640,如下圖:

new_game_view_size
新遊戲檢視尺寸

點選確定,然後同樣在下拉選單中選擇你設定的新解析度.

game_view_bad_camera
注:你的檢視可能和截圖不太一樣,因為Unity會根據螢幕空間來依照所選縱橫比來調整遊戲檢視的大小.不管它多大的視窗,你都應該在視圖裡看到和截圖一樣的場景影象.

顯然,現在這個樣子是錯誤的,現在這裡有三個不同的問題,我們需要依次糾正它們:
場景檢視的Camera設定不正確,背景不能完全填充到檢視中.
場景中游戲物件的渲染順序不正確,所以cat和enemy都埋在了沙土裡.
影象效果不太好,這個基於現在的相機設定你有可能還看不出來,但是相信我說的,質量不好就是不好,對不對? 

相關推薦

UNITY 2D入門基礎教程 ()

如果用以前版本的Unity做2D遊戲,雖然能做,但是要費很多周折. 比如你可以將一張紋理賦予一個”面片”網格,然後用指令碼控制它的動畫調整它的位移.如果你要使用物理引擎,那麼還要將這個Obeject處理3D的,所以你還要確保你的Object要有足夠的深度以確保他們在其它軸

python入門基礎教程()

1.如何在終端視窗列印訊息? print("Hello World"); 2.如何使用變數儲存資訊,並列印該變數? message = "Hello World";#變數定義無需var,int等操作符 print(message); 3.如何在一

01學習了到四章----天馬營JAVA入門基礎教程學習筆記

學習總結 決定在初始階段跳過一切底層的東西,在我有一定實力的時候我想這部分才會對我有些意義。 建立HelloWorld 基本程式特徵 ·  一個.java基本對應一個類 public class name{}      xx部分可以是public/private

CANoe入門基礎教程

CANoe是Vector公司的針對汽車電子行業的匯流排分析工具,現在我用CANoe7.6版本進行介紹,其他版本功能基本差不多。 硬體我使用的是CAN case XL. 1,CANoe軟體的安裝很簡單,先裝驅動,再裝軟體。安裝完成,插上USB,連線硬體,這樣在控制面板中

Thrift 基礎教程()安裝篇

div 更新 g++ pat 定義 init 環境 1.7 進行 1、Thrift簡單介紹 Thrift是一款由Fackbook開發的可伸縮、跨語言的服務開發框架,該框架已經開源而且增加的Apache項目。Thrift主要功能是:通過自己定義的Interface Def

ATOM基礎教程使用前端插件emmet(16)

自減 styles 工程 expand string 元素符號 asc value adding emmet簡介 http://blog.csdn.net/zsl10/article/details/51956791 emmet的前身是Zen coding,從事Web前

51單片機入門基礎教程,視頻、課件、源碼免費下載

nag 詳細 enc add 小白 .lib RoCE allegro 單機 51單片機入門基礎教程,視頻、課件、源碼免費下載 今天也是分享資料,不過是很大量的學習資料,足夠您國慶七天在家閉關學習了,4G的51單機片開發學習視頻和資料,包括每一節的視頻、課件和源碼!內容很大

Python中的Flask入門基礎

#1.匯入Flask擴充套件. from flask import Flask#匯入我們的Flask框架 from flask import render_template#我們的返回值有兩種,如果要返回html,就需要匯入這個模組 #2.建立Flask應用程式例項,需要傳入_name_,作用是

小白nlp入門基礎)--nlp簡介

nlp學習筆記一 編者:楊柳依依 日期:2018年9月25日 隨同公司的培訓,對nlp有了初步的理解,小白整理後的筆記如下: 自然語言的發展 語言隨社會一同發展,出現 一詞多義:蘋果(水果),蘋果(喬布斯公司) 多詞一義:北京市,北京 簡略詞、縮寫詞:安徽,徽 新

Hadoop新手篇:hadoop入門基礎教程

Hadoop新手篇:hadoop入門基礎教程 關於hadoop的分享此前一直都是零零散散的想到什麼就寫什麼,整體寫的比較亂吧。最近可能還算好的吧,畢竟花了兩週的時間詳細的寫完的了hadoop從規劃到環境安裝配置等全部內容。寫過程不是很難,最煩的可能還是要給每一步配圖,工程量確實比較大。 原計

Spring Boot基礎教程(

在您第1次接觸和學習Spring框架的時候,是否因為其繁雜的配置而退卻了?在你第n次使用Spring框架的時候,是否覺得一堆反覆黏貼的配置有一些厭煩?那麼您就不妨來試試使用Spring Boot來讓你更易上手,更簡單快捷地構建Spring應用! Spring Boot讓我們的Spring

Golang入門基礎教程(四)Hello World

剛開始接觸一門語言,首先要做的肯定是最經典的Hello World 了,現在,讓我們通過golang來實現一些列印helloworld。 編輯一個檔名為main.go的golang檔案,檔案內容如下: package main import "fmt" func main(){

Golang 入門基礎教程(三)Windows下安裝GOlang基礎環境

GO對於Windows平臺的使用者提供了兩種安裝方法,原始碼安裝和安裝程式安裝。 安裝程式安裝 官方下載MSI安裝程式,執行 msi 安裝程式,跟著提示一步一步就可以講Go基礎環境安裝到系統中了。預設安裝路徑為:C:/Go。 原始碼安裝 官方下載原始碼檔案,解壓縮到任意目

Golang 入門基礎教程(二)Linux 平臺下安裝Golang基礎環境

Linux平臺下安裝Golang的話可以直接下載官方原始碼包, 注意:如果系統內安裝過其他版本的Golang原始碼包,必須先將之前的清除掉 1、解壓原始碼包 解壓原始碼包到 /usr/local目錄下 > sudo tar -C /usr/local

SpringCloud 基礎教程() 服務中心(Eureka Server)

client -c enter 以及 清理 啟動服務 one ram 一個 1、創建【服務中心】,即 Eureka Server 1.1、新建 Spring Boot 工程,工程名稱: springcloud-eureka-server 1.2、工程 pom.xml 文

SpringCloud 基礎教程() 服務中心及叢集(Eureka Server)

1、建立【服務中心】,即 Eureka Server 1.1、新建 Spring Boot 工程,工程名稱: springcloud-eureka-server 1.2、工程 pom.xml 檔案新增如下依賴: <dependency> <groupId>org.spring

微信小程式入門基礎教程

準備工作 要開發微信小程式之前,需要做一些準備工作,首先進入https://mp.weixin.qq.com/debug/wxadoc/dev/index.html去下載快速開發原始碼包 然後再進入https://mp.weixin.qq.com/debug/wxadoc/

微信小程式開發入門基礎教程

在這篇部落格中,主要介紹瞭如何從一個微信小程式的使用者轉變為微信小程式的開發者。 1. 首先,需要註冊一個微信小程式賬號 https://mp.weixin.qq.com/  進入微信公眾平臺選擇【立即註冊】   2.註冊賬號型別為【小程式】

docker入門基礎

目錄 一、簡介 1、docker架構 2、docker的概念 二、docker的安裝和管理 1、docker安裝 2、docker配置阿里雲映象加速 3、基礎命令 一、簡介 參考 https://www.cnblog

C#入門基礎知識()

一、C#語言語法基礎 C#中的關鍵字 關鍵字,是被C#規定了用途的重要單詞。 關鍵字Class(類),這個關鍵字的作用是宣告類,比如上圖類名為Program。 關鍵字namespace,這個關鍵字的用途是宣告“名稱空間”,上圖名稱空間為MyApp1。 關鍵字using,這個關鍵