使用SuperTiled2Unity 将 Tiled Map Editor 导入 Unity 报错问题

一、情况说明

新的SuperTiled2Unity貌似没有自动导入的功能了,手动拖拽导入或通过Unity的Import Assert导入都会出现类似“资源丢失”的错误。
至于原因,简而言之,是使用Tiled Map Editor生成的tmx和tsx文件,会记录你绘制时使用的图像的目录,从而在导入后目录不匹配
Tile Map Editor: 1.2.4
SuperTiled2Unity.: 1.5.1
Unity: 2018.4.4f1

二、过程演示

2.1 我们已经通过Tiled Map Editor生成了tmx和tsx文件,现在仅仅将tmx拖拽进unity,会发现如下错误。
使用SuperTiled2Unity 将 Tiled Map Editor 导入 Unity 报错问题_第1张图片

2.2 我们现在用文本编辑器(我用的是notepad++)打开tmx文件,会发现这个tmx文件依赖于3个tsx文件。
使用SuperTiled2Unity 将 Tiled Map Editor 导入 Unity 报错问题_第2张图片使用SuperTiled2Unity 将 Tiled Map Editor 导入 Unity 报错问题_第3张图片
2.3 这里使用的是相对路径。从上图可以看出,在这里,tmx文件和3个tsx文件在同一目录下才不会报错。但比如我们想将tsx文件放在一个子目录下,则需要进行目录修改,如下。
使用SuperTiled2Unity 将 Tiled Map Editor 导入 Unity 报错问题_第4张图片
2.4 然后我们回到unity,右键–>Delete掉原先导入的tmx文件。再重新导入修改后的tmx文件。
然后在tmx同级目录创建一个新目录subDir,用于包含tsx文件。然后将3个tsx文件从unity外面拽进这个目录里。嗯,继续报错!
使用SuperTiled2Unity 将 Tiled Map Editor 导入 Unity 报错问题_第5张图片使用SuperTiled2Unity 将 Tiled Map Editor 导入 Unity 报错问题_第6张图片
2.5 好吧,我们再用文本编辑器查看一下tsx文件。
使用SuperTiled2Unity 将 Tiled Map Editor 导入 Unity 报错问题_第7张图片
使用SuperTiled2Unity 将 Tiled Map Editor 导入 Unity 报错问题_第8张图片
2.6 我们看到,tsx文件依赖于某个png图片文件。这就是我们使用Tiled Map Editor编辑时导入的图片文件。
这里很长的一段相对目录其实就是,用Tiled Map Editor编辑时,你使用的图片相对于这个保存的tsx文件的目录。也就是Tile Map Editor导入图片时的那个绝对目录。
使用SuperTiled2Unity 将 Tiled Map Editor 导入 Unity 报错问题_第9张图片
2.7 为了使unity能找到正确位置,我们需要修改tsx文件的上述目录,如下。修改后的目录表明,在unity中,tsx文件和其依赖的png图片文件,要在同一目录下。也就是我们先前的subDir目录。
使用SuperTiled2Unity 将 Tiled Map Editor 导入 Unity 报错问题_第10张图片
2.8 保存好修改的文件。回到unity中,把原先导入的tsx文件,右键–>Delete删除光。然后导入修改后的tsx文件,和其依赖的图片文件。可以看到,tsx文件不报错了。
使用SuperTiled2Unity 将 Tiled Map Editor 导入 Unity 报错问题_第11张图片
2.9 将tmx文件依赖的另2个tsx文件,也如此操作。然后在unity中,选中tmx文件,将其拖拽到Hierarchy中,就可以看到我们的地图出现了。如下。使用SuperTiled2Unity 将 Tiled Map Editor 导入 Unity 报错问题_第12张图片

三、总结

“资源丢失”问题。是使用Tiled Map Editor编辑时,生成的文件会保存实际的目录信息。而这一目录信息与unity中的目录结构是不匹配的,从而出错。那么方式便是修改这一目录信息,或是修改unity中的目录结构。由于编辑时的目录可能很复杂,那么生成的目录信息就会很复杂,再依此调整unity的目录结构明显不现实。因而推荐修改信息这一方法。
当然,另一思路便是,我们首先创建unity工程。然后在工程的对应目录下,使用图片编辑地图。
据说,还要调整导入时的尺寸大小。详情见这个人的博客吧。https://blog.csdn.net/weiji4310/article/details/89460130

你可能感兴趣的:(使用SuperTiled2Unity 将 Tiled Map Editor 导入 Unity 报错问题)