– On Image and Text components that aren’t interacted with you can uncheck “Raycast Target” on it, as it will remove them from any Raycast calculus.
– Click on your textures in your “Project” window. Click on the “Advanced” arrow, and now check “Generate Mip Maps”, Unity especially recommends it for faster texture loading time and a lower rendering time.
– Set the “Shadow Cascades” to “No Cascades” (Quality settings)
– If you have dynamic UI elements like a Scroll Rect with a lot of elements to visualize, a good practice is to turn off the pixel perfect check box on the canvas that contains the list and disable the items that aren’t visible on the screen.
– Set all non moving objects to “Static”
– Above Unity3d 2017.2 you should turn off “autoSyncTransforms” on the Physics tab
– Always use Crunch Compression Low on textures
– Try to keep the “Collision Detection Mode” on “Discrete” if possible, as “Dynamic” demands more performance.
– You can go to the TimeManager window (Edit > Project Settings > Time), and tweak the “Fixed Timestep” value. This value represents the duration between two calls of the FixedUpdate() method.
– You can use Coroutines to call a method only every second for example, using the instruction: “yield return new WaitForSeconds (1);” It could be used to refresh some UI display:
– Set particles culling to “Pause and Catch Up”
– Baked your shadows or turn them off
– Out of Built-in Shaders, they come roughly in this order of increasing complexity:
- Unlit. This is just a texture, not affected by any lighting.
- VertexLit.
- Diffuse.
- Normal mapped. This is a bit more expensive than Diffuse: it adds one more texture (normal map), and a couple of shader instructions.
- Specular. This adds specular highlight calculation.
Those are the quick fixes you can try but without any knowledge of your game we can’t help much. Even a screenshot would help. Particles, Lights, Shadows and Textures are the main culprits of lag (from my experience and if done incorrectly).
