Early in the project we had limited access to a shared unity project, so the level designers in our group were busy designing level geometry in MS Excel. They populated a lot of tiles, and while by this point I had written tools for the quick creation of geometry, it was still a lot of work to build what they wanted in the level.
I decided to try to write another editor tool, this time it would take keyed CSV file ("aa = platform", "bb = crate", "cc = health" etc), and using a mapping designer that you edit inside Unity, convert ANY series of characters into chosen objects.
The above is game-agnostic, but we had other requirements like patrol paths so I added a way to encode other data with the keys. Platforms and terrain were split into groups based on Type, and then grouped into blocks (9-sliced platforms for example) as large as possible in order to reduce collider numbers. Colliders were rebuilt and neighbouring sections were tiled. Essentially, it did very much the same as someone building the level manually trying to limit the amount of single objects and colliders.
The editor class can read special tags that we embedded in the CSV string, if the object is of a moving type, then the patrol route can be set from the tags. Other properties are also read in such as the value of a health pack.
As import happens on the main editor thread, the editor will lock up for half a second before presenting you with the new terrain. For the example below, I set up the process as an IEnumerable
collection of operations and iterated over them manually each editor frame update. It provides the same functionality, just at a speed we can see.