3D Text in Unity: Extruded, Bevelled and Lit at Runtime
Last reviewed
TextMesh Pro and UI Toolkit draw text as flat quads, so “3D text” in them is a shader bevel on a flat card: no real depth, no side walls, and at most a flat shadow in the shape of the letters. Real extruded text usually means letter meshes from an asset, or text modeled in a 3D tool and imported as a fixed mesh.
UniText3D extrudes any text into closed, lit solids at runtime, with bevels, a material per surface, layers, deformations and prefabs attached to the letters. It uses the same layout, markup and animation as flat UniText, so every script the engine shapes, from Arabic to Devanagari and CJK, can be extruded.
The usual options
- TextMesh Pro. Its 3D Text object puts each character on a quad. The Bevel setting adds an illusion of depth computed from the distance field, which Unity notes is prone to artifacts. The Surface shader variants react to scene lighting and can cast a shadow, but the shadow comes from a flat card and the text has no thickness when seen from the side.
- UI Toolkit world-space panels. Available from Unity 6.2, they place a UI panel in the scene by width and height. Text on them is as flat as on screen.
- Modular 3D Text (Tiny Giant Studio), the most-reviewed 3D text asset, ships 85 pre-built 3D fonts, builds new ones from TTF files in the editor or at runtime, and includes a whole in-game 3D UI system with buttons, sliders, input fields, lists and XR support. Its listing names connected scripts such as Arabic and Bangla as unsupported, and fonts are created from TTF only.
- Dynamic 3D Text (Strobotnik) extrudes TTF and OTF text at runtime with depth and bevel settings, and its release notes describe right-to-left support and partial Indic shaping.
- Modeling the text in Blender. Blender extrudes and bevels text objects well, and the result imports as FBX or OBJ. It is a fixed mesh: changing a word means editing and exporting it again.
If you need a complete 3D menu system rather than text, Modular 3D Text covers more ground. If the text itself has to be real geometry that changes at runtime in any language, with the styling and animation of the rest of your UI, that is what UniText3D is for.
How UniText3D builds 3D text
- Real solids. Every outline glyph becomes a closed mesh with front face, bevelled edges, side walls and back face. Depth, bevel width and tolerances are set in em of the font size.
- Bevels. Chamfer, Round, Cove, Bead, Step, Ogee, Engraved or a custom profile, separately for the front and back edges.
- Materials per surface. Face, bevel, sides and back each take a material. The package shader covers URP and the Built-in pipeline, an HDRP Shader Graph counterpart is included, and ready looks such as Gold, Chrome, Neon and Engraved Stone apply in one step.
- Layers. Extra solids behind or around the text: outlines per glyph, plates behind words or lines, stencil and engraved plates, or a neon tube along the strokes.
- Motion and deformation. The 2D animation modifiers move whole solids, five modifiers move glyphs in depth, and deformers bend, taper or arc ranges of text or lay them along a spline.
- Objects on letters.
Attach3DModifierplaces prefab copies on the glyphs, such as candles on top or gems on the faces, and they follow every pose and deformation. - Physics and export. Glyph colliders work with Unity physics, and a text can be baked to a mesh asset, a static object with lightmap UVs or a LOD group, or exported to OBJ and FBX.
- Emoji. Color glyphs are drawn flat on the front of the extrusion or as stickers cut out along their image and extruded with the text.
- No frame hitches. New glyphs can be built on worker threads, and characters a counter or name will need can be warmed in advance.
UniText 3D is a module: enable it once in Project Settings › LightSide › UniText › Modules › UniText 3D. A world-space UniText converts to 3D from its context menu with text, fonts, styles and layout preserved.
var bevel = Text3DBevel.Default;
bevel.shape = Text3DBevelShape.Chamfer;
bevel.width = bevel.height = 0.03f;
title.FrontBevel = bevel;
title.Depth = 0.3f;
title.Text = "Level Complete";Questions
Can players type into 3D text?
Does 3D text work with Arabic, Hindi or Chinese?
How heavy is it at runtime?
Check it in your project
Run the browser demo, follow the setup guide, or compare the free version with the licenses.
Related problems
- LaTeX Math Formulas in Unity UI: Fractions, Matrices and EquationsTextMesh Pro and UI Toolkit have no math layout. UniText typesets LaTeX inside ordinary text, with numbered equations, matrices and mhchem chemistry laid out from an OpenType MATH font.
- TextMeshPro Alternative for Unity: UniText vs TMP vs UI ToolkitUniText replaces TextMesh Pro with a HarfBuzz-based text engine: shaping for Arabic and Indic scripts, Unicode BiDi, emoji sequences, variable fonts and system-font fallback on uGUI and in world space.
- Typewriter Effect and Text Animation in UnityUniText reveals text with nineteen appearance effects and animates it with wave, shake, bounce and other effects from markup, revealing whole grapheme clusters so every script and emoji appears intact.
