Designing game UI for Unity: a handoff that actually gets built
The gap between a design and a built interface is where most game UI quality is lost. This is what Unity actually needs from a design, why layouts break when they hit a real resolution, and the handoff package that gets your screens built the way you drew them.
In this article
Open to new projects
Hadjoudj Idris
Game UI/UX Designer
Upwork100% Job Success
Hire me Browse the workA design delivered as flat images is a picture of an interface. Unity needs to know how it behaves: what happens at a different aspect ratio, which parts of a panel stretch, what a button looks like when it is disabled, and where the focus goes when a player presses down on a gamepad. None of that is visible in a PNG.
Why designs get rebuilt instead of built
When a developer says a design "did not work in Unity", it is almost always one of five things, and all five are preventable at the design stage.
- It was designed at one resolution with no instruction about what happens at any other.
- Panels were delivered as flat images, so a container that needs to grow with its content cannot.
- Only the default state exists. No hover, pressed, disabled, focused, selected.
- No controller navigation was specified, so the developer invents an order and it feels wrong.
- Assets were exported inconsistently: mixed densities, baked-in shadows, no padding, names nobody can search.
None of these are Unity's fault, and none require the designer to be an engineer. They require the design to describe behaviour as well as appearance.
Design at a reference resolution
Unity's Canvas Scaler is normally set to Scale With Screen Size with a reference resolution, most commonly 1920 × 1080 for PC and console. The design should be built at that same resolution so the numbers in the file mean something in the engine.
The Screen Match Mode setting then decides what happens when the real aspect ratio differs: matching width, matching height, or a blend between them. That is a decision worth making deliberately with your developer, because it determines whether an ultrawide monitor gets more visible area or a larger interface.
- Agree the reference resolution before designing, not after.
- Design in whole pixels at that resolution. Half-pixel values become soft edges once scaling is applied.
- Check your layout at 16:10, 21:9 and 4:3 if you support them, and at the smallest resolution you allow.
- For mobile, design for the safe area, not the full rectangle. Notches and gesture bars will eat the edges.
Anchors: design for resize, not for one screenshot
Every element in Unity has anchors that determine what it stays attached to when the canvas changes size. This is the single most valuable thing a design can specify, and it takes about ten minutes to annotate a whole screen.
| Element | Anchor to | Behaviour |
|---|---|---|
| Score, timer, resources | Top-left or top-centre | Fixed size, stays pinned to that corner |
| Settings and close buttons | Top-right | Fixed size, pinned |
| Action bar, ability slots | Bottom-centre | Fixed size, centred horizontally |
| Backgrounds and scrims | Stretch both axes | Fills whatever it is given |
| Content panels and lists | Stretch horizontally, fixed height | Grows wider, keeps its height |
| Modal dialogs | Centre | Stays centred, fixed size |
Write it on the design. A single line per element, "anchored top-right, fixed size, 32px margin", removes an entire category of guesswork and the rework that follows it.
Nine-slice: your corner radius is a spec, not a picture
A button that has to work at several widths should not ship as several images. In Unity a sprite gets border values in the Sprite Editor and the Image component is set to Sliced: the corners stay fixed, the edges stretch along one axis, and the middle fills. One small asset covers every size.
- Export the smallest tile that contains the full corner, plus a few pixels of the straight edge.
- Tell the developer the border values in pixels: top, right, bottom, left. They are a design decision, not a guess.
- Keep corners in the corners. A gradient or highlight running across the whole button breaks when the middle stretches.
- Do not bake shadows into a sliced sprite unless the shadow is uniform on all sides.
- Flag anything that must tile rather than stretch, such as a repeating texture, because that is a different Image setting.
Exports, naming and atlases
| Do | Why |
|---|---|
| Export PNG with transparency, trimmed but with consistent padding | Unpredictable padding shifts elements when they are placed |
Use a flat naming scheme: btn_primary_default, btn_primary_pressed | Sortable, searchable, and states group together |
| Export at the reference resolution, and at 2× only if you need it | Mixed densities in one screen are a common source of soft edges |
| Group related sprites so they can share a Sprite Atlas | Atlases reduce draw calls; scattered sprites make that harder |
| Deliver icons as SVG as well as PNG where possible | Lets them be regenerated at any size later without asking you |
| Keep shadows and glows as separate assets where they overlap other elements | Baked effects cannot be adjusted, and they break nine-slice |
Fonts and TextMeshPro
Unity's TextMeshPro renders text from a generated font asset rather than the font file directly, which has practical consequences for design.
- Supply the actual font files, plus the licence. A design showing a font nobody can legally embed is a problem discovered late.
- Check the licence covers embedding in a game build. Desktop licences frequently do not, and this catches teams out constantly.
- Name exact sizes, weights, line heights and letter spacing. "Slightly tighter" is not implementable.
- Flag every language you will ship in. Non-Latin scripts need their glyphs included, usually through a fallback font asset, and that has to be planned rather than discovered.
- Avoid relying on very thin weights at small sizes, which lose definition once rendered through a font atlas.
- Decide about outlines and shadows early, since they change how the text asset is set up.
States, and how they actually get wired
Unity's Button component has built-in transitions between normal, highlighted, pressed, selected and disabled, either by tint, by swapping sprites, or by animation. Which one your design implies changes the work considerably.
| If the state changes | Implement as | You must supply |
|---|---|---|
| Only brightness or colour | Colour tint | The exact colour or multiplier per state |
| The whole graphic | Sprite swap | One exported sprite per state |
| Scale, position or multiple properties | Animation | Timings, easing, and what moves |
Deliver all five states for anything interactive. Disabled and focused are the two that get skipped, and they are the two that matter most on a gamepad. Also worth knowing: CanvasGroup is how a whole panel gets faded or made non-interactive at once, so if your design has a "dimmed while a modal is open" state, say so, and it is one component rather than fifty colour changes.
Layout groups, and when to stop using them
Unity's Horizontal, Vertical and Grid Layout Groups, usually with a Content Size Fitter, will arrange children automatically. They are genuinely useful for lists, inventories and anything driven by variable data, although past about fifty rows a list wants pooling rather than a layout group, which is its own subject in fast lists in Unity.
They also cost performance, because they force layout rebuilds, and nesting them deeply is a well-known way to make a UI hitch. For a fixed layout that never changes shape, positioning elements directly is cheaper and more predictable. The practical rule: use layout groups where the content is dynamic, and fixed positioning where it is not.
Two related things worth knowing as a designer, because they change what you should ask for: a Canvas rebuilds as a unit, so a small frequently-updating element such as a timer is better on its own Canvas than inside a large static one; and any graphic that does not need to receive clicks should have Raycast Target disabled, which is free performance and something you can flag on the design. Both of those, and the rest of the interface causes of a bad frame time, are in why your Unity menus tank the frame rate.
UGUI or UI Toolkit?
| UGUI (Canvas) | UI Toolkit | |
|---|---|---|
| Maturity for runtime game UI | The established default, very widely used | Newer, improving, less common in shipped game UI |
| Authoring model | GameObjects, components, prefabs | UXML and USS, closer to web markup and styles |
| Art-directed, animated game UI | Strong, everything is a GameObject | Workable, but less natural for heavy art direction |
| Editor tools and dense data UI | Serviceable | Excellent, and the intended use |
| Team familiarity | Almost every Unity developer knows it | Fewer people, more ramp-up |
For most game interfaces, UGUI remains the pragmatic choice, and it is what handoff conventions are built around. UI Toolkit is compelling for editor tooling and data-heavy screens. Either way, ask your developer which one they are using before you design, because it changes what a useful handoff looks like. The full comparison, including what Unity's own manual recommends for each case, is in uGUI or UI Toolkit.
The handoff package
- Source file, organised, with layers named to match the exported assets.
- A screen list with every state, so nothing is discovered late.
- Anchor annotations for every element on every screen.
- Nine-slice borders in pixels for every stretchable graphic.
- Exported sprites, trimmed consistently, named in a flat searchable scheme, grouped for atlasing.
- Font files and licence, with exact sizes, weights, line heights and spacing.
- All five states for every interactive element, with the transition type named.
- Navigation order and first-selected per screen, plus back behaviour.
- Colour values as hex, and any alpha values used.
- Motion spec: durations and easing for transitions that matter.
- A short spec document tying it together, one page per screen is plenty.
That package is the difference between a developer building your design and a developer interpreting it. It is also what stops the interface drifting during production, which is the quiet way game UI quality erodes. How those components should be structured once they are in the project, so one change lands everywhere, is in prefabs, variants and a Unity UI kit.
Who should do the implementation?
| Arrangement | Works when | Watch out for |
|---|---|---|
| Designer designs, developer builds | The default, and correct for most teams. | Handoff quality is everything. Budget time for questions during the build. |
| Designer builds the UI in Unity too | No engineer free for UI, or the interface is highly art-directed. | Needs a designer who genuinely knows the engine, and clear ownership of the scenes. |
| Designer prototypes, developer productionises | Complex interactions where feel matters more than a static spec. | Agree up front that the prototype is a spec, not shipping code. |
I work in all three shapes depending on the team. What matters is deciding which one you are running before the design starts, because it changes what gets delivered.
What resolution should I design game UI at for Unity?
Match your Canvas Scaler reference resolution, most commonly 1920 × 1080 for PC and console, so the numbers in your design file mean the same thing in the engine. Agree it with your developer before starting, along with how the canvas should behave at other aspect ratios.
What is nine-slice and why does my designer keep mentioning it?
It lets one small sprite render at any size: the corners stay fixed, the edges stretch along one axis, and the middle fills. It is why a single button asset can serve every width in your game. The border values in pixels are a design decision and should be handed over with the sprite.
What should a Unity UI handoff include?
Source file, screen and state list, anchor annotations, nine-slice borders, consistently trimmed and named sprite exports, font files with licence and exact type settings, all five interaction states, controller navigation order and first-selected per screen, colour values, and a short motion spec.
Do designers need to know Unity?
They do not need to build in it, but they do need to know what it needs: anchors, nine-slice, states, and how navigation works. A designer who has never seen their work implemented tends to produce designs that get reinterpreted rather than built.
Should I use UGUI or UI Toolkit for game UI?
UGUI remains the pragmatic default for runtime game interfaces: it is mature, widely known, and suits art-directed, animated UI. UI Toolkit is excellent for editor tooling and data-heavy screens. Decide before design starts, because it changes what a useful handoff looks like.
Why does my UI hitch when a menu opens?
Frequently layout rebuilds. Deeply nested layout groups with content size fitters recalculate a lot, and a Canvas rebuilds as a unit, so one changing element can dirty a large static screen. Splitting frequently updating elements onto their own Canvas is a common fix.
Can I hand over a Figma file and nothing else?
You can, and you will get an interpretation. Figma carries appearance but not behaviour: it does not say what stretches, what the disabled state is, or where focus goes on a gamepad. The annotations are the part that makes it buildable.
How do I handle localisation in Unity UI?
Design against the longest string you expect, not the English one, and plan for non-Latin scripts early since TextMeshPro needs those glyphs included, usually via a fallback font asset. Layouts that stretch rather than fitting exactly to English text survive translation far better.
Who should implement the UI, the designer or the developer?
Usually the developer, with a strong handoff and the designer available for questions during the build. Designers implementing directly works well when the interface is highly art-directed or no engineer is free, provided ownership of the scenes is clear.
Hadjoudj Idris
Game UI/UX Designer, Remote, worldwide
Need this done properly on your game?
Menus, HUDs, a full UI system, or one screen that isn't working. Tell me what you're building and I'll tell you honestly whether I'm the right fit, and what it would cost.
Upwork100% Job Success