Performance: Canvas and render modes
This concept affects how UI elements are rendered and how often the UI system recalculates and redraws, impacting frame rate and responsiveness.
Jump into concepts and practice - no test required
Use multiple smaller Canvases with Screen Space - Camera or World Space render modes, isolating dynamic elements to reduce redraw scope.
Canvas render mode set to Screen Space - Overlay with many UI elements in one Canvas, frequent changes trigger full Canvas redraws.
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Single large Canvas with many dynamic elements | High (all elements processed) | High (full Canvas redraw) | High (many draw calls) | [X] Bad |
| Multiple smaller Canvases isolating dynamic parts | Low (only changed Canvas processed) | Low (partial redraw) | Low (fewer draw calls) | [OK] Good |
| Screen Space - Overlay for simple static UI | Low | Low | Low | [OK] Good |
| World Space Canvas for complex 3D UI | Medium | Medium | Medium | [!] OK |
Screen Space - Overlay render mode do in a Unity Canvas?canvas.renderMode = RenderMode.WorldSpace;. Other options use incorrect property names or methods.Canvas canvas = GetComponent<Canvas>(); canvas.renderMode = RenderMode.ScreenSpaceCamera; canvas.worldCamera = Camera.main; Debug.Log(canvas.renderMode);What will be printed in the console?
canvas.renderMode to RenderMode.ScreenSpaceCamera.canvas.renderMode will print the enum name, which is "ScreenSpaceCamera".RenderMode.WorldSpace but UI elements are not visible in the scene. What is the most likely cause?