Usefull-Unity-Scripts/3D/Non-random terrain generation/Scripts/TileGenerator.cs

65 lines
1.8 KiB
C#

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
[System.Serializable]
public class TileData
{
public int tileNumber;
}
public class TileGenerator : MonoBehaviour
{
public Transform gridParent;
public TextAsset jsonFile;
public GameObject[] tilePrefabs;
private void Start()
{
GenerateGridFromJSON();
}
private void GenerateGridFromJSON()
{
string jsonData = jsonFile.text;
GridData gridData = JsonUtility.FromJson<GridData>(jsonData);
int rows = gridData.rows;
int columns = gridData.columns;
List<TileData> tiles = gridData.tiles;
for (int row = 0; row < rows; row++)
{
for (int col = 0; col < columns; col++)
{
int tileIndex = row * columns + col;
if (tileIndex < tiles.Count)
{
TileData tileData = tiles[tileIndex];
if (tileData.tileNumber >= 0 && tileData.tileNumber < tilePrefabs.Length)
{
GameObject tilePrefab = tilePrefabs[tileData.tileNumber];
Vector3 position = new Vector3(col, 0f, row); // Set the Y position to 0 to make it flat
GameObject tileGO = Instantiate(tilePrefab, position, Quaternion.identity, gridParent);
// You may also adjust the scale, rotation, or other properties of the tile here.
}
else
{
Debug.LogWarning("Invalid tile number in JSON data at row: " + row + ", col: " + col);
}
}
}
}
}
}
[System.Serializable]
public class GridData
{
public int rows;
public int columns;
public List<TileData> tiles;
}