【Unity2D】關(guān)卡編輯好幫手——TileMap

作者:林玉偉
前言
對于Unity新手來說,最能給到自己成就感的無疑是快速搭建一個屬于自己的整體關(guān)卡,因此本文的主角是「TileMap」這樣一個利器。如果沒有它,開發(fā)者要么只有用最笨的方法手動逐一搭建,要么自己寫編輯器,要么借助于第三方編輯軟件,而這三種方法其實對初學(xué)者都不是很友好。
本文主要介紹了「TileMap」的基本使用。你可以在更多的開源圖片素材網(wǎng)站,或是Unity的AssetStore中下載免費的Tile資源。
什么是TileMap
TileMap是Unity5.5a實驗版加入的新功能,就像他的字面意思「瓦片地圖」。但說起來這個技術(shù)并不“新”了,成熟的2D引擎(諸如gamemaker,RpgMaker),輕量的如pico-8這樣的基于html5引擎也是帶有自己自己的tile編輯器的,第三方的編輯工具如Tiled使用起來也是比較方便的,Tile編輯器界的老牌開源編輯器Tiled,很多引擎也提供Tiled導(dǎo)入的支持。

最早使用「TileMap」來編輯游戲場景技術(shù)的游戲甚至可以追溯到FC時代。即使在今天也有許多基于「TileMap」制作的游戲,像是最近IGN滿分的《Celeste》,甚至是《饑荒》。什么,《饑荒》?聽起來是不是畫風(fēng)不對啊,但你如果有心去Google上搜索《Don't starve TIles》,你也許會看到一些受版權(quán)保護的饑荒的tile貼圖文件,當然你做過《饑荒》或是其他的一些2D游戲mod就更清楚了。

當然,使用這種方式的缺點也是顯然易見的,使用tile制作的內(nèi)容看起來有些機械和重復(fù),但是可以通過創(chuàng)建過渡層或者其他黑科技來改善這個問題,這在Unity中也是相對容易做到的。
方法很多,像是《奧日與奇幻森林》,《光之子》這類精美的2D混合3D的游戲,都是使用自己獨有的方式來組織關(guān)卡,具體使用的什么我不太了解,可能類似于2D Terrian這樣方式,這一切取決與你自己。
Unity中的「TileMap」
在Unity中使用「TileMap」十分方便,它由以下五個基本部分組成:
Sprite(精靈):2d中紋理的容器。
Tile(瓦片):它包含一個精靈,以及顏色和碰撞體類型。
Palette(調(diào)色板):Palette的功能就是保存tile,將它們繪制到網(wǎng)格上。
Brush(筆刷):就像任何繪畫軟件一樣,用于將預(yù)制的筆刷繪制到畫布上,也和許多繪圖軟件一樣,可以自定義筆刷(這里篇幅有限,只使用默認筆刷,將會在之后的章節(jié)中講解擴展筆刷的使用)。
Tilemap(瓦片地圖):和許多繪畫軟件的圖層概念一樣,我們畫任何東西都需要一個圖層。可以在Tilemap這個層上繪制Tile。
Grid(網(wǎng)格):用于控制網(wǎng)格屬性的組件。Tilemap是Grid的子對象。
TileMap使用流程
1.這里我們先創(chuàng)建一個Unity2d工程。
在Assets目錄下創(chuàng)建Resource文件夾并在它之下分別創(chuàng)建TileAssets和TileSprite文件夾,你可以隨自己喜好創(chuàng)建自己的文件夾命名,需要注意的是Resource文件夾屬于特殊文件夾的命名。
2.創(chuàng)建TileMap使用的資源
我使用的都是單獨的圖片資源,所以不涉及到切割圖集的操作,在圖片的Inspecter面板里將TextureType設(shè)置成Sprite,PixelPerUnit設(shè)置成256。
3.在場景中創(chuàng)建TileMap
依次點擊菜單項GameObject -> 2D Object -> Tilemap創(chuàng)建「TileMap」,或直接在Hierarchy面板直接右鍵2D Object -> Tilemap創(chuàng)建

此時hierarchy面板上將會新建一個Gird對象,和Gird附帶的默認名為“Tilemap”的子對象,Gird對象上有一個Gird組件,包含了網(wǎng)格信息。
我們將在Tilemap這一層上繪制瓦片,可以在Gird對象上右鍵創(chuàng)建一個新的Tilemap層
或依次點擊菜單項GameObject -> 2D Object-> Tile Map直接新建Tile Map。

4.創(chuàng)建TilemapPalette
依次點擊菜單項Window > Tilemap Palette打開Tilemap Palette:

這時會出現(xiàn)一個TilePalette窗口,單擊Tile Palette左上角的下拉列表的“+”按鈕新建Tile Palette,命名為BackGround點擊Create:

這時會彈出一個對話窗口,選擇tileAssets文件夾并保存,tileAssets文件夾里會生成一個BackGorund預(yù)制體。
把之前準備的Spiret拖進TilePalette里,會彈出一個對話窗,一樣的保存到tileAssets的文件夾里 中會生成新的Tile類型資源,該資源會顯示在Tilemap Palette中。

TilePalette中可以找到用來繪制Tile的繪圖工具:

從左至右依次為選擇選擇工具,移動工具,繪制工具,矩形工具,選取工具,擦除工具和填充工具
選擇工具用來選擇Tile資源更改屬性。
移動工具用于移動選中的Tile資源。
矩形工具用于繪制矩形塊,并由選定的Tile資源來填充。
選取工具用于選取要繪制的Tile資源,按下左鍵并拖拽可以一次選取多個Tile。
擦除工具用于擦除Tile資源。
填充工具用于將選定區(qū)域填充為選定的Tile資源。
TilePalette面板上有一個Edit,如果選上的話可以編輯在TilePalette面板中的Tile資源。
繪制
將之前新建的兩個“Tilemap”分別命名為“Path”和“Floor”,將Inspector面板中Path的TilemapRenderer選項的OrderinLayer改為1,Path圖層的Tile會繪制在Floor圖層之上。
TilePalette窗口的ActiveTileMap對應(yīng)的剛才創(chuàng)建的Tilemap圖層,在這里可以切換要繪制的圖層,或者直接在Hierarchy面板選擇要繪制的層。
在TilePalette窗口點擊「選取工具」選中要繪制的一個或多個Tile后直接在Scene窗口直接左鍵畫上去就好了。
需要注意的是Scene窗口右下角有一個FocusOn小窗口,有None,TileMap,Gird選項,就像他的字面意思,它的作用是只顯示TileMap的內(nèi)容,將其他物體變灰。一般選擇Tilemap,這樣能保證Tilemap,這樣能確保繪制在正確的圖層。


最后自己動手試一下吧,最后記得保存場景。
擴展
Unity官方提供了一個2d-Extre包:https://github.com/Unity-Technologies/2d-extras,里面有許多寫好的筆刷,基本上都是繼承自TileBase類來擴展的筆刷,如果有興趣的話,我會在之后的章節(jié)來講解如何擴展筆刷,這里需要你準備Unity2017.2以上的版本。
最后想系統(tǒng)學(xué)習(xí)游戲開發(fā)的童鞋,歡迎訪問 http://levelpp.com/
游戲開發(fā)攪基QQ群:869551769
微信公眾號:皮皮關(guān)