Back to Projects
Internship Project
Unity 6
UI Toolkit
Meta SDK
UITK Tablet System
Rebuilt a UGUI-based VR training platform interface as a UI Toolkit runtime document system in world space. Developed in 8 weeks as an Immersive Developer Intern at Mersus Technologies.
Problem
Mersus Technologies had an existing VR training platform built on UGUI. The interface needed to migrate to Unity UI Toolkit without rewriting backend systems, while keeping Meta Interaction SDK hand tracking intact and adding full localisation support.
The challenge: UI Toolkit runtime documents in world space were relatively new, and the team needed a separated, modular front-end that could be re-themed without touching code, all under an 8-week deadline.
Key Technical Decisions
- Panel-based architecture. Each screen is a self-contained host with its own UXML document and USS styles. A
HostBasemanages the UIDocument and root, keeping panel lifecycle independent from backend controllers. - Elements Records pattern. Sealed C# records per panel hold typed UXML references, decoupling element queries from controller logic. Controllers never touch a
VisualElementdirectly. ADocumentQueryUtilextension method populates the records, giving type-safe bindings across all panels. - Unified 2D/3D theming from a single ScriptableObject.
TabletStyleSOdrives both flat panels (via CSS custom properties incore.uss) and 3D button meshes (viaMaterialPropertyBlockupdates). Swapping the SO asset re-themes every element with a single assignment, avoiding material duplication. - Allocation-free animations. PrimeTween handles all panel transitions and button feedback with SO-driven parameters, producing zero GC pressure during gameplay.
- Localisation from day one. Unity Localization string tables bind to all labels and TMP strings through a central table, maintained as CSV for easy translation workflow.
Next Steps
- Flesh out the Data layer with real production pipelines and event routing via a lightweight event bus to keep panels fully decoupled from domain logic.
- Add automated UI tests for panel transitions, localisation switching, and theme swaps to catch regressions early.