我发现的每个示例都只与新的 tilemap 系统有关,只使用 GetTile 查找一个图 block ,然后使用“this”对其自身进行检查。例如。
private bool HasOtherTile(ITilemap tilemap, Vector3Int position)
{
return tilemap.GetTile(position) == this;
}
我希望能够检查其他特定的图 block 。例如带有我创建的 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) 也不起作用。
@桑德罗菲戈 The GetTile method doesn't seem to have an extension method for gameObject it seems.
请您参考如下方法:
检查某个位置的磁贴类型:
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;
}
关于方 block 的游戏对象:
您的图 block 必须继承自 Tile 类而不是 TileBase 才能操纵其游戏对象。
