static void CreatePalette(string tilesetName, string tilesetTileTargetDir, ImportedTile[] tileAssets, bool singleImageTileset, int tileWidth, int tileHeight, int columns, int cellWidth, int cellHeight) { GameObject newPaletteGO = new GameObject(tilesetName, typeof(Grid)); newPaletteGO.GetComponent <Grid>().cellSize = new Vector3(1.0f, 1.0f, 0.0f); GameObject paletteTilemapGO = new GameObject("Layer1", typeof(Tilemap), typeof(TilemapRenderer)); paletteTilemapGO.transform.SetParent(newPaletteGO.transform); paletteTilemapGO.GetComponent <TilemapRenderer>().enabled = false; Tilemap paletteTilemap = paletteTilemapGO.GetComponent <Tilemap>(); paletteTilemap.tileAnchor = TiledTSXImporter.GetPivot(tileWidth, tileHeight, cellWidth, cellHeight); if (columns <= 0) { columns = 5; } if (singleImageTileset) { for (int i = 0; i < tileAssets.Length; i++) { Sprite sprite = tileAssets[i].tile.sprite; Rect rect = sprite.rect; int x = (int)rect.x / tileWidth; int y = (int)rect.y / tileHeight; paletteTilemap.SetTile(new Vector3Int(x, y, 0), tileAssets[i].tile); } } else { int x = 0; int y = 0; for (int i = 0; i < tileAssets.Length; i++) { paletteTilemap.SetTile(new Vector3Int(x, y, 0), tileAssets[i].tile); x++; if (x >= columns) { x = 0; y--; } } } string palettePath = tilesetTileTargetDir + Path.DirectorySeparatorChar + tilesetName + ".prefab"; palettePath = palettePath.Replace('\\', '/'); UnityEngine.Object newPrefab = PrefabUtility.CreateEmptyPrefab(palettePath); PrefabUtility.ReplacePrefab(newPaletteGO, newPrefab, ReplacePrefabOptions.Default); GameObject.DestroyImmediate(newPaletteGO); GridPalette gridPalette = ScriptableObject.CreateInstance <GridPalette>(); gridPalette.cellSizing = GridPalette.CellSizing.Automatic; gridPalette.name = "Palette Settings"; AssetDatabase.AddObjectToAsset(gridPalette, palettePath); AssetDatabase.ImportAsset(palettePath); }
static void CreatePalette(string tilesetName, string tilesetTileTargetDir, ImportedTile[] tileAssets, bool singleImageTileset, int tileWidth, int tileHeight, int columns, int cellWidth, int cellHeight) { GameObject newPaletteGO = new GameObject(tilesetName, typeof(Grid)); newPaletteGO.GetComponent <Grid>().cellSize = new Vector3(1.0f, 1.0f, 0.0f); GameObject paletteTilemapGO = new GameObject("Layer1", typeof(Tilemap), typeof(TilemapRenderer)); paletteTilemapGO.transform.SetParent(newPaletteGO.transform); paletteTilemapGO.GetComponent <TilemapRenderer>().enabled = false; Tilemap paletteTilemap = paletteTilemapGO.GetComponent <Tilemap>(); paletteTilemap.tileAnchor = TiledTSXImporter.GetPivot(tileWidth, tileHeight, cellWidth, cellHeight); if (columns <= 0) { columns = 5; } if (singleImageTileset) { for (int i = 0; i < tileAssets.Length; i++) { Sprite sprite = tileAssets[i].tile.sprite; Rect rect = sprite.rect; int x = (int)rect.x / tileWidth; int y = (int)rect.y / tileHeight; paletteTilemap.SetTile(new Vector3Int(x, y, 0), tileAssets[i].tile); } } else { int x = 0; int y = 0; for (int i = 0; i < tileAssets.Length; i++) { paletteTilemap.SetTile(new Vector3Int(x, y, 0), tileAssets[i].tile); x++; if (x >= columns) { x = 0; y--; } } } string palettePath = tilesetTileTargetDir + Path.DirectorySeparatorChar + tilesetName + ".prefab"; palettePath = palettePath.Replace('\\', '/'); bool createdPrefab = false; GameObject newPrefab = PrefabUtility.SaveAsPrefabAsset(newPaletteGO, palettePath, out createdPrefab); Debug.Log("Created tile palette asset = " + createdPrefab); AssetDatabase.SaveAssets(); UnityEngine.GameObject.DestroyImmediate(newPaletteGO); // Clear out any old subassets UnityEngine.Object[] assets = AssetDatabase.LoadAllAssetsAtPath(palettePath); for (int i = 0; i < assets.Length; i++) { UnityEngine.Object asset = assets[i]; if (!AssetDatabase.IsMainAsset(asset) && asset is GridPalette) { UnityEngine.Object.DestroyImmediate(asset, true); } } GridPalette gridPalette = ScriptableObject.CreateInstance <GridPalette>(); gridPalette.cellSizing = GridPalette.CellSizing.Automatic; gridPalette.name = "Palette Settings"; AssetDatabase.AddObjectToAsset(gridPalette, newPrefab); AssetDatabase.SaveAssets(); }