Using the Nebular 3D Text Package

The Nebular 3D Text package turns a string into real 3D geometry in Unity. Use the Text 3D component for text that can change at runtime, or bake the result to a standard mesh, prefab, or scene object when the text is final.

The package demo scene, Text 3D Inspector, and 3D Font Generator window in Unity

Installing the package

The package requires Unity 6 or newer.

  1. Download the package from itch.io
  2. Keep the downloaded .tgz file intact; do not extract or modify it.
  3. In Unity, open Window → Package Management → Package Manager.
  4. Open the + menu and select Install package from tarball.
  5. Select the downloaded Nebular 3D Text .tgz file.
  6. Wait for Unity to install the package.

The tarball is exported and signed through Unity Package Manager. On supported Unity versions, Package Manager verifies its signature to confirm its origin and integrity.

Start with the demo scene

After importing the package, select it in the Package Manager, click the Samples tab and import the samples to your Assets folder.

Sample folders included with the package

In the Assets Folder of your project you can now find the sample content:

assets-samples.png

The sample content is organized into:

  • Fonts — example GLB font resources
  • Materials — example face and side materials
  • Scenes — the package demo scene

Create 3D text

  1. Add the supplied 3DText prefab to your scene, or add the Text 3D component to a GameObject.

    • You can find the Prefab in Packages > Nebular 3D Text > Runtime > Prefab
  2. Assign a generated GLB font to Font Resource.

  3. Enter the content in Text.

  4. Choose the face and side materials.

  5. Adjust spacing and alignment as needed.

  6. Select Update to rebuild the geometry after making changes.

The Text 3D component in the Unity Inspector

Text 3D Inspector

Text and layout

Property Description
Text The string rendered by the component. Change it in the Inspector or at runtime to generate new text.
Horizontal Spacing Adds or removes space between consecutive glyphs.
Horizontal Align Aligns the generated line relative to the GameObject.
Vertical Spacing Controls the distance between glyphs when using a vertical layout.
Space Scale Changes the width reserved for space characters.
Centering Square Size If different to (0,0), centers each glyph in the square size provided. Great for dynamic text.
Use Fixed Spacing Uses a consistent advance for every character instead of each glyph's stored width. This is useful for grid-like or monospaced layouts.

The component supports horizontal, diagonal, and vertical arrangements. Use the layout and spacing controls together with the GameObject transform to produce the desired flow.

Font mesh configuration

Property Description
Font Resource The GLB font atlas used to find and instantiate glyph meshes.
Face Material Material applied to the front and back faces of each glyph.
Side Material Material applied to the extruded sides. Use a contrasting material to emphasize depth.
Collisions Controls whether collision geometry is created for the generated text. Leave it at None when collisions are unnecessary.
Letters Layer The Unity layer assigned to generated letter objects.

Select Update whenever you want to rebuild the displayed text from the current settings.

Import or create a font

Open the 3D Font Generator window in Unity to prepare a font resource.

  • On Unity Menu Bar, click Tools, then Nebular then 3D Font Generator

Import from Google Fonts

  1. Expand Import Fonts.
  2. Choose a font Family and Variant.
  3. Select Import Truetype Font to Streaming Assets.
  4. Find the downloaded .ttf under Assets/StreamingAssets/fonts.

You can also use your own licensed .ttf file instead of importing one from Google Fonts.

Note: The first time you will need to add the Google Fonts Library Metadata, that you can find in Packages > Nebular 3D Text > Runtime > Metadata

  • Drag the Google Font Families metadata file into the Font List JSON placeholder.

3D Font Generator.png

Convert the TTF to a GLB font

  1. Select Open Nebular 3D Font Generator.
  2. Drag the .ttf file into the online generator.
  3. Choose the characters your project needs.
  4. Adjust glyph spacing, alignment, bevel, depth, and size visually.
  5. Build the atlas and download the resulting .glb file.
  6. Save the GLB anywhere inside your Unity project's Assets folder.
  7. Assign the imported GLB to Font Resource on a Text 3D component.

Once the GLB has been imported, the temporary TTF in StreamingAssets is no longer required by the Text 3D component and can be removed if you do not need it elsewhere.

For detailed generator instructions, see the Nebular 3D Font Generator.

Add only the glyphs your project uses. Smaller atlases import faster and produce fewer unused assets.

Runtime text

Keep the Text 3D component in the scene when its content must change while the application is running—for example, player names, labels, counters, or user-generated text. Set the component's text value from your own script, then rebuild it using the component's update method.

Runtime layout uses the width and offset values stored with each generated glyph. It intentionally does not perform advanced typography such as kerning or ligatures. If an irregular or decorative font does not space cleanly, return to the font generator, tune the glyph values, and export the atlas again.

Bake the result

When the text is final, expand Bake Meshes and Prefabs. Set Assets Folder to the destination folder and Custom Name to the name of the generated asset or object.

Choose the bake target that fits your workflow:

Action Result Best for
Bake Mesh Creates a reusable Unity mesh asset in the selected assets folder. Sharing one finalized mesh between several objects.
Bake Prefab Creates a reusable prefab containing the rendered mesh and configured components. Reusable signs, titles, and scene elements.
Bake To Scene Places the finalized static geometry directly in the current scene. One-off text that no longer needs procedural updates.

Baked outputs are standard Unity assets and do not depend on the runtime Text 3D component. Keep text procedural while iterating, then bake static text to simplify the scene and avoid rebuilding geometry at runtime.

Choosing a workflow

Use the runtime component when:

  • the displayed string can change;
  • content comes from players, localization, or live data;
  • you need to update text programmatically.

Bake the text when:

  • the string and visual treatment are final;
  • exact placement matters more than runtime flexibility;
  • the object will be reused as a prefab or mesh;
  • you want a standalone result without a runtime package dependency.

Troubleshooting

Characters are missing

Make sure the character was included when you built the GLB atlas and that it exists in the original TTF. Add it to the atlas character list and export the font again.

Spacing looks uneven

When using Dynamic Text, spacing looks off with some fonts (especially irregular or complex fonts like handwritten styles).

The runtime component is optimized for performance and does not implement the full typographic spacing rules used by font engines (kerning, ligatures, etc).

Instead, it uses simple per-glyph values (width, offsets) generated and adjusted in the visual tool, and on the different fields in the 3D Text component.

For many fonts this works well, but for complex typefaces spacing will require manual adjustment.

For those cases, it is recommended to:

  • tweak spacing in the Font Generator and on the 3D Text Component (Horizontal / Vertical Spacing, Fixed Spacing and Centering Square Size fields)
  • or bake the result into meshes/prefabs instead of relying on fully dynamic text: When you enable Baking, you can individually tweak the different characters directly in the Unity Editor.

Text does not reflect Inspector changes

Select Update to rebuild the generated geometry from the current component settings.

The asset contains more geometry than expected

Re-export the font with only the required characters. Reducing bevel and curve detail in the generator also produces lighter glyph meshes.

Font files have their own licenses. Confirm that the license permits your intended use and distribution before shipping generated font assets.