If you're using Unity3D for your mobile games whether it's 2D or 3D game, you will need to optimise both your codes and GPU usage to get your game smoothly running in mobile platforms.
1. Always use the Performance Profiler
- Set the build to development mode and keep connecting the USB to the computer while running the game on the device
2. Use static batching if you're using Unity Pro
3. Use dynamic batching for the objects that're always moving
4. Optimise the physics usage
- Use Built-in Physics
- Use 1/1 Scale all the time
- Don't use mesh colliders
- Set the Mass the right one
- Use the fixed timestep (0.03-0.05)
- Edit->Project Settings->Time
- Use TimeScale scaling
5. Sprites and Texture optimisation
- Lower the fillrates - (Trim the textures that has alpha transparancy)
- Hide the sprites that're not using (Offscreen)
- Use Dynamic batching by using texture atlases
- resize the sprite's quad not the gameobject's transform
- Use the spritesheets
- Use the right shaders
- Give it a right compression (PVRTC for iOS and ETC for android)
- Turn off mipmaps
6. Using Pooling objects
- Instantiate once and re-use when needed
- Instantiate the minimum amount of game objects at the game start
7. Optimising Sounds
- Set Background music to "Decompress on Load".
- Compressed on memory for short clips
- Force to Mono (Edit->Project Settings->Audio)
8. Optimising UI and HUDs
- Old Unity GUI system is slow and avoid using it for mobile.
- OnGUI function is slow and avoid using it on game.
- Use third-party UI system such as 2D toolkit and Sprite Manager for UIs.
- Keep all the UI animations on FixedTimeStep() function.
9. Build Options Optimising
- Disable accelerometer if not needed
- Strip things down (use .Net subset and micro mscrolib levels)
10. Misc
- Use Resources.Load() at the game start and never use it again.
- Avoid using GameObject.Find() and GetCompoenent() functions at the run-time.
- Avoid using reflective functions.
- Using too much memory can also slowdown the game.
- Avoid using garbage collectors as they're very slow.
- Keep using FixedUpdate() or FixedTimeStep() function for all your gameplay if possible.
Comments
Post a Comment