Hello there!
My name is Georges Dimitrov, I’m a music composer, professor, and indie video-game developer from Montreal, Canada. While working on my current game (an old-school dungeon crawler), I ran into the problem of draw calls related performance issues, because my levels are all constructed at runtime from Lua scripts. I found many great assets on the store, such as Mesh Baker, but all of them focused on tools to prepare your scene while in the Editor, including things like Lightmapping support, which I obviously didn’t need.
So I developed a simple system for combining meshes, system which is designed and optimized for runtime usage, and put it on the Asset Store, as I think others might benefit from the performance improvements, which were fantastic in my game, bringing some scenes from over 30K draw calls down to an acceptable range of a thousand or two, while more than doubling frame rate.
I plan to actively continue development on this project; I have already updated the script to v1.1, adding for example the option of uncombining meshes (see changelog below). If you have any questions or comments, don’t hesitate to post!
Asset store link: Unity Asset Store - The Best Assets for Game Making

Asset Description
Runtime Mesh Batcher is a script extension for Unity which provides an affordable, easy and fast way to combine multiple individual meshes at runtime, reducing draw calls and improving performance.
While other solutions available on the Asset Store offer greater in-editor capabilities and much more options, this script is specifically designed to provide a plug-and-play solution for games which create their environments procedurally at runtime.
- Clean and professional code.
- Works with Unity or Unity Pro.
- Custom inspector.
- Automatic Batching mode through custom Tag or Layer.
- Manual Batching mode for advanced scenarios (by providing a GameObject array).
- Can be used with a controller GameObject for setting options in the Editor or directly from script.
- Fast and optimized operation: combines 100K individual meshes in under a second.
- Combines complex object hierarchies with multiple materials.
- Automatically handles Unity’s 64K vertex limit - you can combine an unlimited number of meshes without worries.
- Batching process is reversible (v1.1).
- Clear documentation.
- Demo scene provided.
Video Demonstration
Manual
If you wish to have more info about how it works, you can download the manual in PDF format:
http://www.georgesdimitrov.com/wp-content/uploads/Runtime-Mesh-Batcher-Manual-V1_2.pdf
Changelog
Version 1.1
IMPROVEMENTS:
- Created combined meshes are now parented under distinct GameObjects incrementally named "RuntimeMeshBatcherParent_n”, allowing to easily find them in the hierarchy if needed.
- RuntimeMeshBatcher.CombineMeshes now returns the newly created parent GameObject. You can keep that reference around to do things with the combined meshes, for example delete or deactivate them, or uncombine them.
- Added “Destoy original objects” option, if you do not need to keep the original GameObjects for purposes like keeping the colliders on them (false by default).
- Added “Keep original object references” option, which enables a new UncombineMeshes method to reverse the process (false by default to save memory if you do not need the functionality).
- Added RuntimeMeshBatcher.UncombineMeshes(rmbParent) which you can call with the reference to the parent object, to undo the batching process.
- Original GameObjects transform hierarchy is now preserved after the batching.
- Added tooltips to the custom inspector.
- Some performance optimizations to the code.
- Updated documentation.
- Updated demo scene with new UncombineMeshes option.
FIXES:
- Small error in the demo scene prefab could cause an undefined Tag error.
- Removed usage of transform.SetParent to make the script backwards compatible with pre-4.6 versions.
Version 1.0
Initial Release
