In
Package Managerwindow you can remove lot's of packages that might be used by default. There you can selectBuilt-in packagesand remove lots of things likePhysicsfor example, if you don't use any 3D physics in your application etc.If you are using
UIin the canvas it tends to redraw often. When layout is changed it redraws a wholeCanvas. You can make use of shaders to manipulate some visuals to remove this dependency, or draw aCanvasyourself. [I will elaborate on this later, it's a big topic and I am short on the time right now. I am not sure if this was fixed or not, so I will have to do more research and post some code examples maybe if they will be a fit.]Overhead. The link has lots of useful information about overhead in Unity specifically it can be referred to a lot of things. Unity profiler in general does better job in giving information about processes that run in Unity. During comprehensive optimization I recommend using
Deep ProfileinProfilerwindow in Unity.
In the Profiler, the Overhead is the total frame time minus the duration of everything else that is actively measured. It is usually related to the internal processing of the scene. The more complex the scene, the more Overhead it will produce. It also accounts for the vertical synchronization that can be set to a fixed duration with Application.targetFrameRate.
The complexity of the scene does not refer directly to the amount of objects that compose it, but to the processing in general. If you have lots of objects, processing all of them will take more time than just a few. More importantly, the different engine sub-system tasks on those objects (in this case, tasks that are not being actively measured in the Profiler) will be added to this complexity, increasing the Overhead. Depending on the work performed, this increase could be significant or not. This means that it is not possible for us to provide statistics on the complexity of the scene since it depends on many factors.
The Profiler's hierarchy is populated with the processes that are most likely to consume important resources, but lots of hidden tasks will still remain. In order to find what is adding more complexity, or processing to the scene, you could remove or change "aspects" of the scene one by one, then profile and see how that affects the Overhead.
"Aspects" refers to the groups of objects that are processed by some sub-systems, that is 3D or 2D physics, navmesh, sprites, lighting, scripts and plugins, rendering, GUI, audio, video or particles, etc. The aspects could include settings used by the sub-systems. You might find one of these is considerably affecting the performance, and then you can optimize it.