Hi the Unity is awesome with its “Scale with Screen size” option.
However its missing a big feature as far as I can tell though (TV Overscan).
Does the Unity UI support TV Overscan settings? This would need to set the virtual screen space to a percent smaller then the actual game resolution so UI components don’t go off the screen edge for Android TV, Ouya, Xbox One, ect. I was hoping this was built in rather then hacking it for every Canvas object.
My first though is to have a RectTransform that all of the canvases are linked to that you could use to scale/move to get it positioned on the screen properly.
Maybe another approach could be to make it so that you are using a camera spaced UI system and then adjust the camera’s viewport rect depending on the overscan amount of the TV.
The biggest thing would be to make a overscan adjuster for the user. Overscan can vary depending on the TV and sometimes the left/right/top/bottom of the screen have different overscan amounts, and sometimes doing a raw 20% UI reduction is not ideal for all UIs. I really like it when games allow the users to adjust this manually.
I imagine you’d follow titlesafe/actionsafe rules and stuff in that case. If only for aesthetic reasons, you shouldn’t be putting your UI elements flush against the corners of the screen anyway. The master RectTransform that has a margin all around it sounds like a good idea if it works. I wouldn’t particularly call it “hacking” though.
If you’ve played Dust: An Elysian Tail (wow, I just learned that title is a terrible pun), it has an adjustable in-game HUD. The implementation there might be interesting to you. I like it 'cause I get to decide how much into my peripheral vision my HUD is, which can probably vary from screen distance too.
Also, wow. Overscan is still a thing on TVs because of legacy reasons. That’s just awful.
TV Overscan is still a thing if someone has an old TV, has a TV with a resolution that isn’t a perfect 16:9, has a TV that defaults auto-scaling up thus cutting some of the screen off (even new 2015 16:9 TVs clip the edges off by default unless you turn it off in your TV settings). You need to provide game options that let the user adjust the overscan setting in the UI before they start playing the game like almost all modern games do today. This is common practice and you should notice it in many Xbox 360-One, PS3-PS4 games. Games that fail to add this basic feature are usually found on Android TV, FireTV or Ouya. Its not so much a matter of good UI design its a matter of basic device support and a quality game experience.
I’ve made a script that will apply the scales to the RectTransform but this should probably be added into the Unity UI as a global setting as it would be a simple but very practical addition.