I wrote a class today that I add to components I want to remove from the game (for example, my destructed walls).
I add it to a gameobject like this: (where character is a gameObject)
In the "Awake" method of this class, it randomly generates a number between 0 and 10, which is the number of seconds in the game before the object dies. What this means, is when I create 100 little objects for my destructed object, the game cleans them up after 10 seconds - at the most!. Because it's random, it has a decay effect. Here is a screenshot, of a recently dead enemy (red) tank. The turret has decayed, the cannon has not, and about 25% of the square body has decayed.
The actual class is here:
public class DynamicExplosionPiece : MonoBehaviour
StartTimerBeforeDestruction(Utility. GenerateRandomNumber(0, 10)));
private IEnumerator StartTimerBeforeDestruction(
yield return StartCoroutine(Wait(time));
private IEnumerator Wait(float time)
yield return new WaitForSeconds(time);