We've been through a lot of different optimizations in this chapter, and while they may not be as exciting as dazzling effects or complex mechanics to some, they pave the road for as many massive systems as the hardware can handle at its very best.
At the beginning of this chapter, we explored the Unity profiler and used it to practice debugging CPU-intensive script functions. We implemented a solution to an expensive function by implementing it as a coroutine.
In the second section, we looked at 3D geometry and the costs of rendering it. Objects with several faces in a scene can quickly add up and tax your GPU, but by sacrificing detail strategically using mesh optimization and LODs, we can avoid overloading the renderer.
Finally, we briefly covered several different techniques for memory optimizations, all leading up to a very basic object pool system that can help any game perform more efficiently by minimizing and optimizing allocations and deallocations.
Everything covered in this...