# 6. Prompt and Onboarding Pitfalls
Part of [[Context-Sensitive Prompts and Onboarding]]. Prev: [[5. Worked Example Door Prompt]].
## Hard-coded "Press E"
If the string lives in a texture, a Timeline card, or a `const`, rebinding cannot reach it. Always go through `GetBindingDisplayString` (or a sprite chosen from `controlPath`). World decals of a keyboard key are the same bug in 3D.
## Stale glyphs after a rebind
If you do not refresh on override save, device change, and scheme change, the prompt lies. Hook `PromptBindingWatcher.RaiseRefreshed` from the rebind UI in [[3. Runtime Rebinding]]. Do not poll every frame as a substitute for missing a hook.
## `PanelRenderer` has no `rootVisualElement`
Query elements inside `RegisterUIReloadCallback`, and guard on the `version` parameter as the official sample does. Unregister on destroy. `UIDocument.rootVisualElement` is the older hook; do not assume both components exist on the same object in 6000.5.
## Missing default sprite asset
Rich-text `<sprite>` tags render as empty or as raw markup if the Panel Text Settings sprite-asset path is wrong. Prefer a separate `Image` until that pipeline is proven.
## Overlapping Interact listeners
Two use volumes both calling `TryUse` on the same button will double-fire. Either the broker's current source is the only listener, or the volumes do not overlap.
## Tutorial first
A training room built before the jump, the door, and the rebind UI will be rewritten. Leave it last (Level 9). If a prompt is the first time a verb exists, you have no verb - you have a tooltip.
## Prompt on a VR visor
A screen-space "Press A" in the headset is often unreadable or nauseating. Use a world-space panel or a diegetic label ([[8.UI Toolkit for VR]], [[6.Diegetic Terminal and Wrist Display]]). Do not Impulse or parent a flashing HUD chip to the HMD.
## Localization vs glyphs
Localize "Open" / "Locked" / "Pick up". Do not localize "buttonSouth". The icon set is art, not a string table. See [[Localization]].
## Always-on HUD hints
If every interactable in a dense room shows a chip, you have a Christmas tree. Context-sensitive means *in range*, and usually *one*.
## Sources
- Display bindings (1.20): https://docs.unity3d.com/Packages/
[email protected]/manual/display-bindings.html
- `PanelRenderer` (6000.5): https://docs.unity.com/en-us/engine/6000.5/script-reference/unityengine/uielements/panelrenderer
- [[Level Up! (Review)]] Level 9