Unity3D-Tilemap初体验(Unity自带Tilemap使用体验)

最近新项目需要做一个用到瓦片地图的游戏,第一想法就是要用Tilemap,之前Unity没有自带的Tilemap,都是第三方插件。知道去年2017.2发布,就有自带的Tilemap啦!

将Unity升级到2017.3.1,Tilemap的基本操作,其实API已经有了,看这里:Unity Tilemap API

然后在给个别人已经翻译了的:中文

由于我项目的特殊性,需要在代码里面创建和修改Tile,初始化Tilemap,所以就动手试了试,在此记录下:

创建Tilemap,默认的还是在编辑器里面创建的,然后拿了一个引用,然后创建Tile,根据数据去生成对应的Tile。

我们的要求是,Tile颜色会变动,所以只能这么来,如果Tile是固定好的,其实可以直接在编辑器里面创建好,然后引用就好了。

下面是我尝试的代码:

public Tilemap tilemap;//引用的Tilemap
	public Tile baseTile;//使用的最基本的Tile,我这里是白色块,然后根据数据设置不同颜色生成不同Tile
	Tile[] arrTiles;//生成的Tile数组
	void Awake() {
		ins = this;
	}
	void Start () {
		StartCoroutine(InitData());
	}
	IEnumerator InitData(){
		int levelW = 100;
		int levelH = 100;

		int colorCount = 6;
		arrTiles = new Tile[colorCount];
		for(int i=0;i();//创建Tile,注意,要使用这种方式
			arrTiles[i].sprite = baseTile.sprite;
			arrTiles[i].color = new Color(Random.Range(0f, 1f), Random.Range(0f,1f), Random.Range(0f, 1f), 1);
		}
		for(int i=0;i

结果是下面这样的:



Unity3D-Tilemap初体验(Unity自带Tilemap使用体验)_第1张图片


宽高都是100,看了下效率,确实是高!

选择Tilemap中的方块,开始还说要自己弄个射线去检测,完了我看了API,直接用转化接口,真的是太方便了,这样就可以点击哪里,然后改变哪里了,包括缩放之后也能精确的选择到方块:

将鼠标左边转成世界坐标,注意要z轴

Vector3 wordPosition = Camera. main. ScreenToWorldPoint( mousePosition);

然后调用Tilemap的 WorldToCell 函数,就可以拿到一个地图中的坐标

Vector3Int cellPosition = backMap. WorldToCell( wordPosition);

最后就直接设置Tile了

backMap. SetTile( cellPosition, gameUI. GetSelectColor(). colorData. mTile);

用起来是真方便!

你可能感兴趣的:(Unity3D,C#,Unity摸索记录)