本文仅作笔记学习和分享,不用做任何商业用途
本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正
1.TileMap &TileBase
Unity - Scripting API: Tilemap ,看手册内容太多了故介绍几个常用的公共方法
首先,搞清楚对象,TileMap的变量就是控制这个东西
其次,知道TileBase的变量是最基本的瓦片,就像是gameobjcet一样是unity最小的活动单位
动态设置瓦片
注意我的瓦片地图上空出了两个格子,他俩的坐标在右上角(-1,3,0)和(-1,2,0)
我设置了两个瓦片,拖入了相应的资源,创建了一个tilemap变量利用其中的公共方法
public class ContalTileMap : MonoBehaviour { public Tilemap tilemap; public TileBase tile1; public TileBase tile2; private void Start() { //将指定坐标设置成你想要的瓦片 tilemap.SetTile(new Vector3Int(-1,3,0), tile1); tilemap.SetTile(new Vector3Int(-1, 2, 0), tile2); } }
动态得到瓦片坐标
tilemap.GetTile(new Vector3Int(0, 0, 0));
动态删除瓦片
tilemap.SetTile(new Vector3Int(-1, 2, 0),null);
批量替换瓦片
参数1是要被替换的瓦片,参数2是替换成什么样子的瓦片
tilemap.SwapTile(tile1, tile2);
清除所有瓦片
tilemap.ClearAllTiles();
2.Grid
实际上,瓦片地图不只是瓦片,还有网格,所以也可以用Grid类去创建变量,和使用其方法
如果想要屏幕坐标转为网格坐标,可以先使用世界坐标转屏幕坐标的api
Vector2 mousePos = Input.mousePosition;
Vector3 worldPos = Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, 0));
之后世界坐标转网格坐标
Vector3Int gridPos = tilemap.WorldToCell(worldPos);