【Unity2D】关卡编辑好帮手——TileMap
前言
对于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以上的版本。
【Unity2D】关卡编辑好帮手——TileMap相关推荐
- Unity2D游戏入门Sunnyland制作记录:02编辑素材、Tilemap
编辑素材 ①设置背景图片 下方依次点击: Assets–>Sunnyland–>artwork–>Environment 选择back图片 ②将back图片的每单位像素改为16,使画 ...
- 02 编辑素材和Tilemap
1. 编辑素材 在 Assets 中选择 Sunny Land 素材包,找到 Environment 这个文件夹,然后打开 back 这张背景图片,此时点击之后会发现 Inspector 中出现了一堆 ...
- unity2D学习(2)Tilemap绘制地图
1 Tilemap介绍 Tilemap(瓦片地图):unity中自带的快速构建2D场景的工具 2 Pixels Per Unit介绍 需要先介绍一下Pixels Per Unit(每个单位的资源像素量 ...
- Unity2D教程:地图制作Tilemap
关注专栏,持续更新哦 教程总目录 Assets下创建一个Tiles文件夹,等会所有的资源都保存在这里 创建地图 创建地图调色板 将图片拖入Images文件夹 可以设置将该图片分为几块 设置单元格对应的 ...
- tilemap软件使用_使用Tilemap的等距2D环境
tilemap软件使用 With the release of Unity 2018.3, we introduced Isometric Tilemap support – closely foll ...
- UE4(虚幻4)学习-初学者内容包-编辑界面讲解
这篇文章是我看哔哩哔哩上学习的笔记,学习的地址如下: https://www.bilibili.com/video/BV164411Y732?t=168&p=15 运行我们的游戏 1 在内容浏 ...
- 微信小游戏开发实战教程15-关卡编辑器的制作以及关卡分享功能的实现
微信小游戏开发实战系列的第15篇. 本节主要内容有游戏中的关卡编辑器的实现思路以及如何利用分享功能将自己制作的关卡与好友分享. 如果你没有任何的游戏开发经验,欢迎阅读我的"人人都能做游戏&q ...
- 用Unity制作一个很火的找不同游戏,包括核心玩法与关卡编辑器工具的实现
玩家们心里都清楚,其实游戏的品类超级多,有些人喜欢玩moba.射击竞技类的,有些人喜欢塔防.策略.回合制类的,而又有些人喜欢经营养成.休闲益智类的.休闲益智类游戏,虽没像moba类游戏的激烈操作带来的 ...
- 游戏高级场景关卡设计师(深圳)
学历要求:本科 工作职责 · 战斗体验相关工作的讨论参与和支持: · 负责游戏主要关卡/副本的规划.设定.制作跟进.测试验证.调整优化及相关文档的制作: · 关卡编辑器.关卡机制的需求规划.体系 ...
最新文章
- linux shell 错误 [: =: unary operator expected 解决办法
- python 搜索插入位置
- python自带编译器闪退_python自带编译器在写入文件时闪退,或者一步步执行到写入时提示8170。解决办法:...
- 用函数求C15的值C语言,南开19春学期(1503、1509、1603、1609、1703)C语言程序设计在线作业-1辅导资料.docx-资源下载在线文库www.lddoc.cn...
- hibernate中的hql带有参数的参数语句以及二级缓存
- boost::icl::split_interval_set用法的测试程序
- 活跃用户数怎么计算_留存率计算
- 千万不要错过云计算兴起的时代
- android http请求缓存,android 缓存http请求数据
- eclipse adt 插件离线安装
- 计算机网络 8 报文交换和分组交换2
- Gossip 协议简介
- php常用单词上传知米背单词,知米背单词APP导入单词列表的操作步骤
- 【Java定时器】每天凌晨12点执行一次
- python多任务,线程详解
- win7隐藏任务栏图标和通知
- 一位95后程序员的分享:如何拿下年薪45万的offer?
- 【C语言】复数的四则运算与复数运算的头文件
- android 微信签名,Android微信签名知识的总结
- 【Dash搭建可视化网站】项目13:销售数据可视化大屏制作步骤详解
热门文章
- 【数字IC基础知识1之数字芯片设计流程
- 同厂玩伴---鸭子兄传
- 域名解析成ip的过程
- Top Android App使用的组件(2)
- CC2530 zigbee IAR8.10.1环境搭建
- window10系统安装梅雁EDMS(MAYAN EDMS)
- 网络 | 1.OSI七层模型各层常见协议
- Machine Learning | (1) Scikit-learn与特征工程
- 【移动端网页布局】移动端网页布局基础概念 ① ( 移动端浏览器 | 移动端屏幕分辨率 | 移动端网页调试方法 )
- 2D Pose人体关键点实时检测(Python/Android /C++ Demo)