using System.Collections.Generic; using UnityEngine.UI; using UnityEngine; public class PrefabManager : MonoBehaviour { public GameObject[] prefabs; // List of prefabs assigned from the Inspector public Collider floorCollider; // The floor to detect clicks public Transform cameraPivot; // Pivot for the camera public float cameraRotationSpeed = 10f; // Rotation speed public float destroyDelay = 2f; // Time to destroy prefabs public Text infoText; private int currentIndex = 0; // Index of the current prefab void Start() { UpdateInfoText(); // Update text at start } void Update() { // Switch between prefabs with left/right keys if (Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.LeftArrow)) { SelectPreviousPrefab(); } if (Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.RightArrow)) { SelectNextPrefab(); } // Instantiate the prefab with one click if (Input.GetMouseButtonDown(0)) { RaycastHit hit; if (floorCollider.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 1000f)) { GameObject instance = Instantiate(prefabs[currentIndex], hit.point, Quaternion.identity); Destroy(instance, destroyDelay); // Destroy in 2 seconds } } // Rotate the camera around the pivot cameraPivot.Rotate(Vector3.up * (cameraRotationSpeed * Time.deltaTime)); // Rotates on the Y axis } private void SelectPreviousPrefab() // Previous prefab { currentIndex--; if (currentIndex < 0) { currentIndex = prefabs.Length - 1; } UpdateInfoText(); } private void SelectNextPrefab() // Next prefab { currentIndex++; if (currentIndex >= prefabs.Length) { currentIndex = 0; } UpdateInfoText(); } private void UpdateInfoText() // Name and number of the prefab { int currentNumber = currentIndex + 1; int totalNumber = prefabs.Length; infoText.text = $"({currentNumber}/{totalNumber}) \nPrefab actual: {prefabs[currentIndex].name} "; } }