Skip to main content

Optimising Unity new UI System

  • UI/Sprite textures aren't packed into a texture atlas by default. A tag is needed to group them. Read the documentation / tutorial on the sprite packer.
  • Overlapping text/graphic boundaries with another text/graphic will create additional draw calls, even if the actual visual graphics do not overlap.
  • Grids (other layouts too I presume) need minimum 1 pixel spacing between items, else items are considered overlapping and will create additional draw calls.
  • Images with alpha 0 are still rendered. They are rendered with alpha 0 even though they are not seen.
  • Unity currently does not support non-rectangle shapes as Sprites, so using the TightSpitePacker policy will cause image artifacts.
  • When UI objects are offscreen, they are still batched (rendered as well?). Possible solutions:
    • Change parent to non-UI parent, as UI Camera will no longer detect it
    • Change layer of panel so UI Camera will no longer detect it
    • Disable gameobject when off-screen
  • ScrollRect performance tuning
    • ScrollRect will rebuild / reload everything every frame if pixel perfect is enabled
    • Disabling the layout behaviors when it's not being used / updated (canvas size fitter, layout groups, layout elements)
    • For larger lists, disable off-screen objects
  • Canvas PixelPerfect has large performance impact. Disable it if possible.
  • Looping animations should be stopped when off-screen.
  • Fonts are not part of the texture atlas, unlike ngui/df-gui/etc. This will produce additional draw calls. Here's a post on adding your own bitmap font to use, which I believe you can add to the texture atlas? Unity 4.6 Bitmap font? Haven't tested this, but looks promising.

Comments

Popular posts from this blog

Setting up perforce server on Windows and allows connections from other local machines

Download p4server.exe for windows and install it. Restart the computer after you've installed it. Since it will install as windows service, you don't have to start the service and you're now ready to connect using p4v from local machine. But there will be a problem when you're trying to connect from another service since the perforce service is running on localhost:1666 so it only accept local connection only. You need to bind to 0.0.0.0:1666 but it will be quite hard and have a risk to change default perforce config files.. What you can do is you can modify the host file in other remote machines to connect to the server computer. In windows, hosts file is located at Windows/etc/driver folder and on Mac it's located at sudo nano /etc/hosts add the following line to the host file [your server machine local ip address] perforce Now in the p4v client of the remote machines, you will be able to connect using perforce:1666 Note : Don't forget to tu

How to Fix the Unity Asset Server error "Cannot Start Service" on Windows

If you're using Unity Asset server on Windows, you may notice that you are getting Could not start server. It happens after using the asset server for a long time because of the small asset server bug (password expires). You will have to reset the password or set it to never expire to avoid happening from this kind of error. Here are the steps below to fix this problem. Step 01 - Open Computer Management under Control Panel or search from your computer. Step 02 - Locate the Local Users and Group Folder under System Tools.                      Note : This is only available for Windows 7 Pro/Ultimate users. Step 03 - Right lick on unitysrv and click properties. Step 04 - Under user properties, untick "User must change password at next logon" and tick "Password never expires" box. It's always good to change this setting after you've installed Asset server to avoid connection problem at later time. PS: This only happens on Windo