How do I get my game to run faster?

If my game runs slow, what are good first steps to take in order to make it run faster?

Some tips:

  • A profiler is available on Unity Pro starting on 2.6
  • Watch out for unnecessary Debug.Log calls - they can be an unexpected performance drain.
  • Take a close look at what you're executing on your MonoBehaviors' Update. Since that method gets called once per frame, performing unnecessary processing will have a significant effect on game performance. Can you cache any of this information, or evaluate it only a few times per second?
  • When in doubt, bear in mind that you're writing to .Net, and all the usual performance best practices apply (arrays are faster than indexed lists, don't unnecessarily create and destroy objects, which could trigger the garbage collection process, and so on).

Use the new Profiler in Unity 2.6

Take a look at

Be on the lookout for the videos of Unite09, as there were two sessions on performance improvements.

If you have indie (regular Unity as it is called now, not pro), then you wont have the new performance profiler, then this tip might be useful:

You can try to deactivate some objects in your scene and see if the framerate raises, if it does, you will know that the code on that object is using a lot of power. This principle can also be used with scripts, you know that the Update function takes a lot of power, but you don't know where, try commenting some things and see if it helps. When you know where the bottleneck(s) is, you have half the job done, now you can start optimising ;)

Inspect the stats window inside the editor what the basic parameters say about your scene. Do you have 1 million polys in your scene? Have 2000 draw calls? There I would start actually to see where the GPU time is burned.