World‑Space UI Configuration Pitfalls
- Always use world‑space canvases for UI elements; screen‑space UIs won't work in VR.
- Set the Event Camera of each canvas to the CenterEyeAnchor (main camera) so that UI interactions register correctly.
- Use the OVRRaycaster component instead of default GraphicRaycaster to support VR controllers.
- Remove or disable the StandaloneInputModule and ensure the OVRInputModule is present in the EventSystem; this module handles input from Quest controllers.
- Make UI elements large enough for comfortable reading in VR and use unlit materials for crisp text.
Controller Ray Setup Pitfalls
- Attach the OVRRaycaster to the canvas and assign the correct pointer origin to the controller anchor (e.g., RightHandAnchor).
- Ensure the controller ray origin is parented to the corresponding controller anchor; misparenting leads to offset or inverted rays.
- Assign a simple Unlit/Color material to the LineRenderer for clear, high‑contrast rays and adjust width for visibility.
- Use the LineRenderer component on the ray origin to render the controller beam; configure start and end widths and set the number of segments to 2 for performance.
- Provide haptic feedback or visual highlight when ray hits interactive objects to improve user feedback.
Runtime‑Generated Geometry Debugging
- When generating geometry at runtime (e.g., bars for charts), note that objects won't appear until Play mode; ensure generation code is executed at runtime.
- Use Debug.Log statements to confirm that object creation functions are being called and that arrays/dictionaries have the expected data.
- Assign appropriate materials (e.g., Unlit/Color) to runtime‑generated objects; missing materials can make geometry invisible in passthrough.
- Check transforms and pivot points to ensure generated objects are positioned and scaled correctly relative to the camera.
- Manage object lifecycles carefully; ensure objects are destroyed or updated when data changes to avoid memory leaks or duplicates.