| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- using UnityEngine;
- using UnityEngine.Tilemaps;
- /// <summary>
- /// Helper script to set up MazeRenderer with placeholder tiles
- /// Attach this to the MazeRenderer and click "Generate Placeholder Tiles" in the inspector
- /// </summary>
- [RequireComponent(typeof(MazeRenderer))]
- public class MazeRendererSetup : MonoBehaviour
- {
- /// <summary>
- /// Call this from the inspector or in code to generate placeholder tiles
- /// </summary>
- [ContextMenu("Generate and Assign Placeholder Tiles")]
- public void GeneratePlaceholderTiles()
- {
- var renderer = GetComponent<MazeRenderer>();
- if (renderer == null)
- {
- Debug.LogError("MazeRenderer not found!");
- return;
- }
- // Create placeholder sprites
- var floorSprite = TileGenerator.CreateColoredSprite(new Color(0.8f, 0.8f, 0.8f), "Floor");
- var wallSprite = TileGenerator.CreateColoredSprite(new Color(0.3f, 0.3f, 0.3f), "Wall");
- var swampSprite = TileGenerator.CreateCheckerSprite(new Color(0.5f, 0.8f, 0.3f), new Color(0.4f, 0.6f, 0.2f), "Swamp");
- var stoneSprite = TileGenerator.CreateCheckerSprite(new Color(0.7f, 0.7f, 0.7f), new Color(0.6f, 0.6f, 0.6f), "Stone");
- var lavaSprite = TileGenerator.CreateColoredSprite(new Color(1.0f, 0.4f, 0.0f), "Lava");
- // Create tiles
- var floorTile = TileGenerator.CreateTile(floorSprite);
- var wallTile = TileGenerator.CreateTile(wallSprite);
- var swampTile = TileGenerator.CreateTile(swampSprite);
- var stoneTile = TileGenerator.CreateTile(stoneSprite);
- var lavaTile = TileGenerator.CreateTile(lavaSprite);
- // Assign to renderer via reflection (since the fields are private with SerializeField)
- var type = renderer.GetType();
- type.GetField("floorTile", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(renderer, floorTile);
- type.GetField("wallTile", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(renderer, wallTile);
- type.GetField("swampTile", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(renderer, swampTile);
- type.GetField("stoneTile", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(renderer, stoneTile);
- type.GetField("lavaTile", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(renderer, lavaTile);
- Debug.Log("Placeholder tiles generated and assigned!");
- }
- /// <summary>
- /// Creates empty tilemaps if they don't exist
- /// </summary>
- [ContextMenu("Create Missing Tilemaps")]
- public void CreateMissingTilemaps()
- {
- var grid = GetComponent<Grid>();
- if (grid == null)
- {
- Debug.LogError("Grid not found on this GameObject!");
- return;
- }
- // Create tilemaps if they don't exist
- var combinedTilemap = transform.Find("CombinedTilemap")?.GetComponent<Tilemap>();
- if (combinedTilemap == null)
- {
- var go = new GameObject("CombinedTilemap");
- go.transform.parent = transform;
- combinedTilemap = go.AddComponent<Tilemap>();
- go.AddComponent<TilemapRenderer>();
- }
- var decorationTilemap = transform.Find("DecorationTilemap")?.GetComponent<Tilemap>();
- if (decorationTilemap == null)
- {
- var go = new GameObject("DecorationTilemap");
- go.transform.parent = transform;
- decorationTilemap = go.AddComponent<Tilemap>();
- go.AddComponent<TilemapRenderer>();
- }
- // Assign to renderer via reflection
- var renderer = GetComponent<MazeRenderer>();
- var type = renderer.GetType();
- type.GetField("combinedTilemap", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(renderer, combinedTilemap);
- type.GetField("decorationTilemap", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(renderer, decorationTilemap);
- Debug.Log("Tilemaps created and assigned!");
- }
- /// <summary>
- /// One-click setup: creates everything needed
- /// </summary>
- [ContextMenu("Quick Setup - Create Everything")]
- public void QuickSetup()
- {
- CreateMissingTilemaps();
- GeneratePlaceholderTiles();
- }
- }
|