我发现只与新的tilemap系统有关的每个例子都只使用GetTile查找一个tile,然后使用“this”对它自己进行检查。 EG。
private bool HasOtherTile(ITilemap tilemap, Vector3Int position)
{
return tilemap.GetTile(position) == this;
}
我希望能够检查其他特定的瓷砖。比如我创建了一个带有public class WallTile : TileBase
脚本的WallTile.asset磁贴。我真的不知道如何做到这一点。
我尝试过使用
gameObject.AddComponent(WaterTile)
TileBase tileTest = gameObject.AddComponent(WallTile);
private bool HasRoadTile(ITilemap tilemap, Vector3Int position)
{
TileBase tileTest = gameObject.AddComponent(WaterTile);
return tilemap.GetTile(position) == tileTest;
}
但这似乎不起作用。
我也试过了ScriptableObject.CreateInstance(WaterTile)
这也行不通。
@Sandro Figo The GetTile method doesn't seem to have an extension method for gameObject it seems.
答案 0 :(得分:0)
要检查某个位置的瓷砖类型:
public bool IsTileOfType<T>(ITilemap tilemap, Vector3Int position) where T : TileBase
{
TileBase targetTile = tilemap.GetTile(position);
if (targetTile != null && targetTile is T)
{
return true;
}
return false;
}
关于图块的游戏对象:
您的图块必须继承自Tile类而不是TileBase才能操作其游戏对象。
答案 1 :(得分:-1)
试试这个:
private bool HasWallTile(ITilemap tilemap, Vector3Int position)
{
return tilemap.GetTile(position).gameObject.GetComponent<WallTile>() != null;
}