[英]How to check for different tile with unity tilemaps?
我發現的每個僅與新的tilemap系統有關的示例都僅使用GetTile查找一個tile,然后使用“ this”對照自身進行檢查。 例如。
private bool HasOtherTile(ITilemap tilemap, Vector3Int position)
{
return tilemap.GetTile(position) == this;
}
我希望能夠檢查其他特定的圖塊。 例如帶有我創建的public class WallTile : TileBase
腳本的public class WallTile : TileBase
貼。 我真的對如何做到這一點感到困惑。
我試過使用
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 GetTile方法似乎沒有gameObject的擴展方法。
要檢查某個位置的瓷磚類型:
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才能操作其游戲對象。
嘗試這個:
private bool HasWallTile(ITilemap tilemap, Vector3Int position)
{
return tilemap.GetTile(position).gameObject.GetComponent<WallTile>() != null;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.