用Tiled工具可以快速制作关卡地图,但是,与很多国内的游戏引擎(Cocos/Egret等)不同,Unity天生并不支持Tiled,官方说的要支持,也迟迟没有发布。于是,就催生了很多第三方的Tiled for Unity 库。
在网上搜 Tiled Unity,收费与不收费的可以找到很多。
其中,排名第一的Tiled2Unity是非常有特色的一个。
官网:http://www.seanba.com/tiled2unity
Git:
https://github.com/Seanba/Tiled2Unity下载地址:
优点
1. 完全开源,完全免费。
2. 自动合并图块为Mesh
与很多别的插件的做法不同,Tiled2Unity不是用Sprite来表示每一个图块,而是将同一层的图块都合并成一个Mesh,然后把整个图集作为纹理(Texture)贴到Mesh上。
这样做的好处是,大大减少GameObject的数量。比如,一个40×40的图,如果图块覆盖率是50%,使用Sprite对象的话,那就会产生800个对象,而用Tiled2Unity的方法,每一层(Layer)只产生1-2个对象(如果有碰撞盒)
3. 自动合并碰撞盒
除了合并同层的图块,Tiled2Unity还会自动合并同层碰撞盒。
利用一个第三方库Clipper (http://www.angusj.com/delphi/clipper.php),Tiled2Unity可将带有矩形或者多边形碰撞盒的图块,合并成到同一个多边形碰撞盒。这样就大大减少了Collider组件的数量。
4. 自定义Unity标签
通过简单的自定义属性,可以方便的修改Tag,SortingLayer,Layer等属性。
5. 允许自定义脚本来完成更复杂的导入需求
一般来说,每个游戏都有自己的一套地图逻辑,与其提供大量的自定义标签,Tiled2Unity选择使用自定义脚本来实现这个需求。
6. 提供命令行工具,便于自动化导入
7. 详尽的教程和文档
Tiled2Unity 提供了还算比较详细的使用文档和教程,以及自己的设计思路。
其中,作者亲自示范了自己怎么利用这个工具设计了一个类似洛克人的游戏
http://www.seanba.com/megadadadventures.html
好了,说了一大堆优点,再说几个缺点:
1. 合并图块为Mesh
为什么说这个也是缺点呢。因为,大部分2d游戏中,我们都是使用Sprite来作为渲染组件。
Unity中,Sprite的Shader与普通的Mesh所用的Shader是不一样的,最大的区别除了默认不响应光照,还有关闭了Z缓冲器,然后引入SortingLayer和Order in layer两个值来控制图片的前后遮挡关系。所以,Sprite对象的z轴的值通常是没有用。
而Mesh方式,默认是使用Z缓冲区来做前后遮挡的,所以需要使用z轴的值。为了解决这个问题,Tiled2Map自己实现了一系列的Shader,然后需要使用者在Tiled里使用一个自定义属性unity:sortingLayerName来规划好每一层的渲染顺序。
这就导致,我们需要
1). 提前在Unity中规划好渲染层级
2). 让关卡设计人员在Tiled中设计好前后层关系,并添加对应的层名。
这使得工作流程产生较大的前后依赖关系,增加了手工工作量,复杂度和沟通的成本,容易产生人为错误。这是一个生产工具的大忌。
2. 在2D游戏中,混用Sprite Renderer和Mesh Renderer
这个是我个人的洁癖,感觉这样的用法不够纯粹。
可以看到,以上缺点其实也是伴随着优点产生的,这只是一种策略选择的问题。因为不管使用什么策略,都会有它的优点和缺点。这也是我们作为一个开发人员在技术选型时最需要考虑和评估的地方。
- 本文固定链接: https://freemanapp.com/zh/?p=292
- 转载请注明: freeman 于 FreemanApp 发表
《介绍一下Tiled2Unity的优点与缺点》有 1 条评论