Unity中TileMap使用代碼動态加載瓦片資源
Unity提供的設定瓦片的函數如下:
tilemap.SetTile(new Vector3Int(0,0,0), TileBase);
第一個參數就是瓦片的坐标,問題在于第二個參數如何擷取到。
其實這裡的TileBase對象就是我們在調色盤中的每一個Tile資源。如下圖紅框圈起來的:
在建立Tile資源的時候我們會在資源檔案夾下建立對應的資源檔案,是以這裡的TileBase對象就是我們在資源檔案夾中的對應的Tile資源。
可以使用以下代碼加載到指定的TileBase對象:
TileBase tileBase = AssetDatabase.LoadAssetAtPath("Assets/你放Tile的資源檔案夾/" + "你要加載的Tile名字" + ".asset", typeof(Object)) as TileBase;
然後将擷取到的tileBase對象放入到SetTile()的第二個參數中即可。
注意,該加載方法隻适用于編輯器下,打包的話換成AB包加載或者Resources.Load方法。加載後在資源管理類裡寫一個字典或者List做一個緩存,需要的時候直接從緩存裡查找對應的TileBase,緩存中沒有再去加載新的。
想直接拖的話就在腳本中建立一個變量,在Inspector面闆中将對應的資源檔案夾中的資源拖上去就行。