| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- 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<Renderer>();
- 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<BoxCollider>();
- if (collider == null)
- {
- collider = wall.AddComponent<BoxCollider>();
- }
- 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<Renderer>();
- Material pointMaterial = new Material(Shader.Find("Standard"));
- pointMaterial.color = Color.red;
- renderer.material = pointMaterial;
- // Remove collider to prevent interference
- Collider collider = point.GetComponent<Collider>();
- 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<Renderer>();
- 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;
- }
- }
|