前言
对于Unity新手来说,最能给到自己成就感的无疑是快速搭建一个属于自己的整体关卡,因此本文的主角是「TileMap」这样一个利器。如果没有它,开发者要么只有用最笨的方法手动逐一搭建,要么自己写编辑器,要么借助于第三方编辑软件,而这三种方法其实对初学者都不是很友好。
本文主要介绍了「TileMap」的基本使用。你可以在更多的开源图片素材网站,或是Unity的AssetStore中下载免费的Tile资源。
什么是TileMap
TileMap是Unity5.5a实验版加入的新功能,就像他的字面意思「瓦片地图」。但说起来这个技术并不“新”了,成熟的2D引擎(诸如gamemaker,RpgMaker),轻量的如pico-8这样的基于html5引擎也是带有自己自己的tile编辑器的,第三方的编辑工具如Tiled使用起来也是比较方便的,Tile编辑器界的老牌开源编辑器Tiled,很多引擎也提供Tiled导入的支持。
最早使用「TileMap」来编辑游戏场景技术的游戏甚至可以追溯到FC时代。即使在今天也有许多基于「TileMap」制作的游戏,像是最近IGN满分的《Celeste》,甚至是《饥荒》。什么,《饥荒》?听起来是不是画风不对啊,但你如果有心去Google上搜索《Don't starve TIles》,你也许会看到一些受版权保护的饥荒的tile贴图文件,当然你做过《饥荒》或是其他的一些2D游戏mod就更清楚了。
当然,使用这种方式的缺点也是显然易见的,使用tile制作的内容看起来有些机械和重复,但是可以通过创建过渡层或者其他黑科技来改善这个问题,这在Unity中也是相对容易做到的。
方法很多,像是《奥日与奇幻森林》,《光之子》这类精美的2D混合3D的游戏,都是使用自己独有的方式来组织关卡,具体使用的什么我不太了解,可能类似于2D Terrian这样方式,这一切取决与你自己。
Unity中的「TileMap」
在Unity中使用「TileMap」十分方便,它由以下五个基本部分组成:
Sprite(精灵):2d中纹理的容器。
Tile(瓦片):它包含一个精灵,以及颜色和碰撞体类型。
Palette(调色板):Palette的功能就是保存tile,将它们绘制到网格上。
Brush(笔刷):就像任何绘画软件一样,用于将预制的笔刷绘制到画布上,也和许多绘图软件一样,可以自定义笔刷(这里篇幅有限,只使用默认笔刷,将会在之后的章节中讲解扩展笔刷的使用)。
Tilemap(瓦片地图):和许多绘画软件的图层概念一样,我们画任何东西都需要一个图层。可以在Tilemap这个层上绘制Tile。
Grid(网格):用于控制网格属性的组件。Tilemap是Grid的子对象。
TileMap使用流程
1.这里我们先创建一个Unity2d工程。
在Assets目录下创建Resource文件夹并在它之下分别创建TileAssets和TileSprite文件夹,你可以随自己喜好创建自己的文件夹命名,需要注意的是Resource文件夹属于特殊文件夹的命名。
2.创建TileMap使用的资源
我使用的都是单独的图片资源,所以不涉及到切割图集的操作,在图片的Inspecter面板里将TextureType设置成Sprite,PixelPerUnit设置成256。
3.在场景中创建TileMap
依次点击菜单项GameObject -> 2D Object -> Tilemap创建「TileMap」,或直接在Hierarchy面板直接右键2D Object -> Tilemap创建
此时hierarchy面板上将会新建一个Gird对象,和Gird附带的默认名为“Tilemap”的子对象,Gird对象上有一个Gird组件,包含了网格信息。
我们将在Tilemap这一层上绘制瓦片,可以在Gird对象上右键创建一个新的Tilemap层
或依次点击菜单项GameObject -> 2D Object-> Tile Map直接新建Tile Map。
4.创建TilemapPalette
依次点击菜单项Window > Tilemap Palette打开Tilemap Palette:
这时会出现一个TilePalette窗口,单击Tile Palette左上角的下拉列表的“+”按钮新建Tile Palette,命名为BackGround点击Create:
这时会弹出一个对话窗口,选择tileAssets文件夹并保存,tileAssets文件夹里会生成一个BackGorund预制体。
把之前准备的Spiret拖进TilePalette里,会弹出一个对话窗,一样的保存到tileAssets的文件夹里 中会生成新的Tile类型资源,该资源会显示在Tilemap Palette中。
TilePalette中可以找到用来绘制Tile的绘图工具:
从左至右依次为选择选择工具,移动工具,绘制工具,矩形工具,选取工具,擦除工具和填充工具
选择工具用来选择Tile资源更改属性。
移动工具用于移动选中的Tile资源。
矩形工具用于绘制矩形块,并由选定的Tile资源来填充。
选取工具用于选取要绘制的Tile资源,按下左键并拖拽可以一次选取多个Tile。
擦除工具用于擦除Tile资源。
填充工具用于将选定区域填充为选定的Tile资源。
TilePalette面板上有一个Edit,如果选上的话可以编辑在TilePalette面板中的Tile资源。
绘制
将之前新建的两个“Tilemap”分别命名为“Path”和“Floor”,将Inspector面板中Path的TilemapRenderer选项的OrderinLayer改为1,Path图层的Tile会绘制在Floor图层之上。
TilePalette窗口的ActiveTileMap对应的刚才创建的Tilemap图层,在这里可以切换要绘制的图层,或者直接在Hierarchy面板选择要绘制的层。
在TilePalette窗口点击「选取工具」选中要绘制的一个或多个Tile后直接在Scene窗口直接左键画上去就好了。
需要注意的是Scene窗口右下角有一个FocusOn小窗口,有None,TileMap,Gird选项,就像他的字面意思,它的作用是只显示TileMap的内容,将其他物体变灰。一般选择Tilemap,这样能保证Tilemap,这样能确保绘制在正确的图层。
最后自己动手试一下吧,最后记得保存场景。
扩展
Unity官方提供了一个2d-Extre包:https://github.com/Unity-Technologies/2d-extras,里面有许多写好的笔刷,基本上都是继承自TileBase类来扩展的笔刷,如果有兴趣的话,我会在之后的章节来讲解如何扩展笔刷,这里需要你准备Unity2017.2以上的版本。