tile2unity

现在的项目使用Tiled软件编辑游戏地图,并通过第三方插件Tiled2Unity将地图文件解析到Unity,插件自动转换为相应的碰撞信息。




但是地图不可能只有一个,也就是说会编很多很多地图文件,但是如果因为疏忽想修改地图文件的内容,比如图层信息、参数或者碰撞等,就要把所有的地图文件全部修改一遍,一个个导入到unity特别的费时间,那么有没有一个工具批量导入到unity呢?这时候我想到了命令行工具,Tiled2Unity也支持命令行工具。


先看看最终效果:


1、先将调用命令行封装成一个函数,command则是文件名,如svn则会在环境变量PATH中的所有路径下查找名称为svn的文件文件进行执行,同样也可以写成完整路径如:F:\AA\bb.exe,argument则是参数
[csharp]  view plain  copy
  1. public static void ProcessCommand(string command,string argument){  
  2.         System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(command);  
  3.         info.Arguments = argument;  
  4.         info.CreateNoWindow = false;  
  5.         info.ErrorDialog = true;  
  6.         info.UseShellExecute = true;  
  7.           
  8.         if(info.UseShellExecute){  
  9.             info.RedirectStandardOutput = false;  
  10.             info.RedirectStandardError = false;  
  11.             info.RedirectStandardInput = false;  
  12.         } else{  
  13.             info.RedirectStandardOutput = true;  
  14.             info.RedirectStandardError = true;  
  15.             info.RedirectStandardInput = true;  
  16.             info.StandardOutputEncoding = System.Text.UTF8Encoding.UTF8;  
  17.             info.StandardErrorEncoding = System.Text.UTF8Encoding.UTF8;  
  18.         }  
  19.           
  20.         System.Diagnostics.Process process = System.Diagnostics.Process.Start(info);  
  21.           
  22.         if(!info.UseShellExecute){  
  23.             Debug.Log(process.StandardOutput);  
  24.             Debug.Log(process.StandardError);  
  25.         }  
  26.           
  27.         process.WaitForExit();  
  28.         process.Close();  
  29.     }  
2、调用Tiled2Unity软件,并传入参数,则自动打开Tiled2Unity软件进行导出,并发送到unity
[csharp]  view plain  copy
  1. ReimportMap("Tile文件TMX路径");//换成TMX路径  
[csharp]  view plain  copy
  1. static void ReimportMap(string path){  
  2.         string exportPath = Application.dataPath + "/Tiled2Unity";  
  3.         string arg = "-a -s=0.01 " + path + " " + exportPath;  
  4.         ProcessCommand ("Tiled2Unity安装路径/Tiled2Unity.exe", arg);//换成Tiled2Unity的安装路径  
  5.         AssetDatabase.Refresh ();  
  6.     }  
### Unity 2D Tilemap 使用教程 #### 什么是 Tilemap? Tilemap 是 Unity 中一种强大的工具,用于构建和管理基于瓦片的游戏地图。它允许开发者高效地设计复杂的 2D 地图,并支持多种层叠方式以及动态生成等功能[^1]。 #### 如何创建 Tilemap? 要开始使用 Tilemap,在 Unity 编辑器中可以通过以下步骤完成初始化: 1. **创建 Grid 对象** 在菜单栏选择 `GameObject -> 2D Object -> Grid` 来创建一个网格对象。这个对象作为所有 Tilemap 的容器。 2. **创建 Tilemap 对象** 接着,右键点击刚创建的 Grid 对象,选择 `2D Object -> Tilemap` 创建一个新的 Tilemap 层次结构。此时,Grid 和 Tilemap 将自动关联在一起[^3]。 #### 设置瓦片资源 为了填充 Tilemap,需要准备一些瓦片素材(Sprites)。以下是具体操作流程: 1. 导入所需的精灵图片到项目中的 Assets 文件夹下。 2. 打开 `Window -> 2D -> Sprite Editor` 并加载这些精灵文件进行编辑。 3. 利用 `Palette Window` (可通过 `Window -> 2D -> Palette` 启用),将精灵拖拽至调色板窗口形成可使用的瓦片集。 #### 绘制地图 一旦准备好瓦片集合,就可以利用 Tilemap 工具轻松绘制地图了: - 进入选项卡下的 Paint Mode 开始放置瓦片; - 改变画笔大小或者模式以适应不同需求; - 如果希望实现更复杂的效果比如规则化铺砖,则需引入 Rule Tiles[^4]。 #### 动态生成地图示例代码 下面提供了一段简单的脚本实例展示如何程序性生成随机分布的地表与背景: ```csharp using UnityEngine; using UnityEngine.Tilemaps; public class ProceduralMapGenerator : MonoBehaviour { [SerializeField] private RuleTile platformTile; [SerializeField] private RuleTile backgroundTile; [SerializeField] private Tilemap backgroundMap; [SerializeField] private Tilemap platformMap; public Vector2Int size = new Vector2Int(10, 10); public int seedPercentage = 30; void Start(){ GenerateMap(); } void GenerateMap(){ System.Random random = new System.Random(); for(int y=0;y<size.y;y++){ for(int x=0;x<size.x;x++){ bool isPlatform = random.Next(0,100)<seedPercentage?true:false; if(isPlatform){ platformMap.SetTile(new Vector3Int(x,y,0),platformTile); } else{ backgroundMap.SetTile(new Vector3Int(x,y,0),backgroundTile); } } } } } ``` 该脚本定义了一个矩形区域内的每格都有一定几率成为平台或其他类型的地面单元[^4]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值