55 lines
1.7 KiB
C#
55 lines
1.7 KiB
C#
using Unity.Profiling;
|
|
using UnityEngine;
|
|
using UnityEngine.InputSystem;
|
|
|
|
namespace DefaultNamespace
|
|
{
|
|
public class MassInstantiation : MonoBehaviour
|
|
{
|
|
[SerializeField] private InputActionProperty toggleMassInstantiation;
|
|
[SerializeField] private InputActionProperty deleteAllObjects;
|
|
[SerializeField] private GameObject prefab;
|
|
[SerializeField] private int objectsToInstantiate = 100;
|
|
[SerializeField] private bool isInstantiating;
|
|
|
|
private static readonly ProfilerMarker InstantiateObjectsMarker = new ProfilerMarker("InstantiateObjects");
|
|
|
|
private void OnEnable()
|
|
{
|
|
toggleMassInstantiation.action.Enable();
|
|
toggleMassInstantiation.action.performed += _ => isInstantiating = !isInstantiating;
|
|
|
|
deleteAllObjects.action.Enable();
|
|
deleteAllObjects.action.performed += _ => DeleteAllObjects();
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
toggleMassInstantiation.action.Disable();
|
|
deleteAllObjects.action.Disable();
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (isInstantiating) InstantiateObjects();
|
|
}
|
|
|
|
private void InstantiateObjects()
|
|
{
|
|
InstantiateObjectsMarker.Begin();
|
|
for (int i = 0; i < objectsToInstantiate; i++)
|
|
{
|
|
Instantiate(prefab, transform);
|
|
}
|
|
InstantiateObjectsMarker.End();
|
|
}
|
|
|
|
private void DeleteAllObjects()
|
|
{
|
|
for (int i = transform.childCount - 1; i >= 0; i--)
|
|
{
|
|
Destroy(transform.GetChild(i).gameObject);
|
|
}
|
|
}
|
|
}
|
|
} |