十一、使用世界(Worlds)(Tiled1.2)
有时候,为了让一个游戏让机器更吃得消(更少的内存消耗),会将地图切分成多个地图,同时也更方便多个人同时编辑(避免合并冲突)。定义一个世界可以让世界看起来是在同一个视图中,同时也允许在编辑不同的地图上切换。

11.1 定义一个世界
现在既不存在接口在Tiled中定义一个世界,也不能将其进行编辑。世界会被定义在一个.world文件中,这个文件是一个JSON文件,告诉Tiled哪个地图是世界中的一部分。
这里有一个简单的定义世界的例子,定义了三个地图的全局位置:
世界一旦定义好,需要选择菜单栏上“地图”>“载入世界”,多个世界可以被同时加载,当Tiled重启之后,世界也会被重启。
打开一张地图之后,Tiled会检查这张地图是否是一个加载过的世界中的一部分。如果是这的,那么在同一世界里的其他地图也会被同时加载和展示在打开地图的旁边。你可以点击任意的其他地图进行编辑,在切换文件的同时仍然保持视图在同一位置。
当地图的文件在磁盘上进行过修改,世界会自动进行重载。
11.2 使用模式匹配
一个工程中的地图遵守一定的命名规范,允许每个地图的位置由文件名衍生,正则表达式能够用于连接一个倍增器和偏移量。
以下是一个例子:
正则表达式会匹配根据世界文件去匹配在同一目录下的所有有用的文件。它会捕获两个数字,首先一个是“x”,第二个是“y”。然后会将它们分别乘以multiplierX和multiplierY,最后,offsetX和offsetY会被加上。偏移主要存在允许在上地图上的一系列地图根据相对位置去放置。最后的值便是每个地图上的位置(像素)。
世界的定义可以使用手动地定义和模式定义。
11.3 只显示直接的相邻地图(Direct Neighbors)
Tiled比较关注一次性加载每一张地图、图块集和图片,但是有时候世界太大了以致于无法一次性加载完。也可能是没有足够的内存去加载,或者渲染一整张地图太慢了。
这样的情况下,这里有一个选项去选择仅仅加载当前地图的相邻地图。在JSON对象的最上层添加"onlyShowAdjacentMaps": true。
为了让这个成为可能,不仅仅需要定义每张地图的位置,还需要定义它们的尺寸。对于个别的地图,这个在使用“宽度”和“高度”属性时已经就定义好了。对于模式匹配来说,这个属性是mapWidth (宽度匹配)和mapHeight(高度匹配),这样就会默认地设置了倍乘器。所有的值都是以像素的形式存在。
注:将来,作者可能会修改这个选项去允许相对于当前地图的周围距离内的其他地图的加载。
由于边学边翻译,所以有些知识点理解的不透,翻译不到位,请大家多多指导。
加油,共勉。