TilemapはUnity公式の2Dマップエディタです。
ゲーム実行中でも、TilemapはSetTileメソッドにより、動的にTileを配置できます。
Tileを配置したい場所を引数position(Vector3Int型)に、配置したいTileをtile(TileBase型)に渡します。
コード例を示します。
using UnityEngine;
using UnityEngine.Tilemaps;
public class TilemapController : MonoBehaviour
{
[SerializeField] Tilemap tilemap;
[SerializeField] TileBase tile;
[SerializeField] Vector3Int position;
void Start()
{
tilemap.SetTile(position, tile);
}
}
SetTileメソッドの他にも、Tilemapクラスには
- SetTileメソッドのTileChangeData構造体を引数にとるオーバーロード
- SetTilesメソッド(2つのオーバーロードあり)
- SetTileBlockメソッド
があります。
また、Tileを削除したい場合は、削除したい場所に引数Tileにnullを渡してください。
using UnityEngine;
using UnityEngine.Tilemaps;
public class TilemapController : MonoBehaviour
{
[SerializeField] Tilemap tilemap;
[SerializeField] TileBase tile;
[SerializeField] Vector3Int position;
void Start()
{
tilemap.SetTile(position, null);
}
}
すべてのTileを取り除いて良いのであれば、ClearAllTilesメソッドを使います。
using UnityEngine;
using UnityEngine.Tilemaps;
public class TilemapController : MonoBehaviour
{
[SerializeField] Tilemap tilemap;
[SerializeField] TileBase tile;
[SerializeField] Vector3Int position;
void Start()
{
tilemap.ClearAllTiles();
}
}