using UnityEngine; public class PrefabCreator : MonoBehaviour { [Header("Auto-Create Prefabs")] public bool autoCreatePrefabs = true; private void Awake() { if (autoCreatePrefabs) { CreateBasicPrefabs(); } } private void CreateBasicPrefabs() { // Create wall prefab if needed CreateWallPrefab(); CreateWallPointPrefab(); CreateDoorOpeningPrefab(); } private GameObject CreateWallPrefab() { GameObject wall = GameObject.CreatePrimitive(PrimitiveType.Cube); wall.name = "Wall_Prefab"; // Set default material Renderer renderer = wall.GetComponent(); Material wallMaterial = new Material(Shader.Find("Standard")); wallMaterial.color = new Color(0.8f, 0.7f, 0.6f); // Beige color renderer.material = wallMaterial; // Add collider for door placement detection BoxCollider collider = wall.GetComponent(); if (collider == null) { collider = wall.AddComponent(); } wall.tag = "Wall"; // Don't destroy this object - it's created dynamically return wall; } private GameObject CreateWallPointPrefab() { GameObject point = GameObject.CreatePrimitive(PrimitiveType.Sphere); point.name = "WallPoint_Prefab"; point.transform.localScale = Vector3.one * 0.2f; Renderer renderer = point.GetComponent(); Material pointMaterial = new Material(Shader.Find("Standard")); pointMaterial.color = Color.red; renderer.material = pointMaterial; // Remove collider to prevent interference Collider collider = point.GetComponent(); if (collider != null) { DestroyImmediate(collider); } return point; } private GameObject CreateDoorOpeningPrefab() { GameObject door = GameObject.CreatePrimitive(PrimitiveType.Cube); door.name = "DoorOpening_Prefab"; // Scale to door size door.transform.localScale = new Vector3(1.5f, 2.5f, 0.2f); Renderer renderer = door.GetComponent(); Material doorMaterial = new Material(Shader.Find("Standard")); doorMaterial.color = new Color(0.6f, 0.4f, 0.2f); // Brown door color renderer.material = doorMaterial; door.tag = "Door"; return door; } }