A 3D UI component library for PICO XR applications, built on Unity GUI.
PICO UI (com.bytedance.pico.ui) provides ready-to-use 3D UI components designed for VR/XR experiences on PICO devices. It includes prefabs, runtime scripts, and editor tooling for rapid UI construction in Unity.
- Unity 2022.3 LTS or later
- Universal Render Pipeline (URP)
- XR Interaction Toolkit 2.0+
| Package | Minimum Version |
|---|---|
| com.unity.ugui | 1.0.0 |
| com.unity.textmeshpro | 3.0.0 |
| com.unity.xr.interaction.toolkit | 2.0.0 |
- Open Unity Editor
- Navigate to Window > Package Manager
- Click + > Add package from git URL...
- Enter the repository URL
- Clone this repository
- In Unity Package Manager, click + > Add package from disk...
- Select the
package.jsonin the root of this repository
| Component | Description |
|---|---|
| Slider | Multiple variants (Small/Regular/Max) with stepless and segmented modes, icon support |
| Switch | Toggle switch control |
| TabBar | Tab navigation with badge notification support |
| SideNavigation | Expandable/collapsible side navigation items |
| ToolBar | Toolbar with icon and text variants |
| Menu | Dropdown/popup menu container with menu items |
| List | List item component |
| PanelLayout | Curved multi-panel layout for immersive XR environments |
All components are available via the Unity Editor menu:
GameObject > UI > PICO-UI
This menu provides one-click creation for all supported components. Each item instantiates the corresponding prefab under a Canvas with proper hierarchy setup.
- In the Unity menu, go to GameObject > UI > PICO-UI > Slider Regular Stepless
- The slider prefab is instantiated under a Canvas in your scene
- Configure the slider value range and behavior in the Inspector
// PXR_PanelController arranges child panels in a curved arc
// Configure rotation angle, spacing, and vertical alignment in the Inspector
var panelController = GetComponent<PXR_PanelController>();
panelController.rotationAngleBetweenPanels = 15f;PICO-UISet/
├── Assets/
│ ├── Prefabs/ # Ready-to-use UI prefabs (20 total)
│ └── Textures/ # Shared sprite atlas
├── Editor/
│ └── Scripts/ # Editor menu integration (PICOUICreator)
├── Runtime/
│ └── Scripts/
│ ├── Core/ # Base input handler (PXR_UIInputHandler)
│ └── Components/ # Component controllers
└── package.json
- PXR_UIInputHandler - Base class for interactive UI components. Handles pointer and drag events, converts XR ray hits to normalized local coordinates on RectTransforms.
- Component Controllers - Per-component scripts that manage visual states, layout, and interaction logic.
- Prefabs - Pre-configured GameObjects with proper component setup, ready for scene instantiation.