Correct Unity XR rig and scene management for Meta Quest applications
Hello everyone.
I'm currently working on a game, and I'm encountering issues as per the title. I've gotten a bit further along with the project, but I'll cut the problem down to a specific and limited space.
Let's say we have a Unity project with the XR Core, Interaction Toolkit and Plugin Management packages installed, and we have 3 empty scenes with just a UI button which will take the player to the next scene in a loop, without breaking XR tracking or having any other issues for when the game is running on a Meta Quest 3 as a side-loaded app, using OpenXR as the Plug-In Provider.
1) What are the requirements, assumptions and best practices for the XR Rig in this situation? I've found that if the XR Rig isn't a part of the first scene, the video output will freeze after the splash screen has finished, even if one is supposed to be instantiated by a manager script upon scene load.
2) Once this XR Rig is instantiated, it must be marked as Don't Destroy On Load and maintained for the rest of the app's lifetime, correct? One cannot just have a "scene copy" of the XR rig in all scenes? If there is a requirement to have this XR Rig persist, what is the recommended pattern and approach to managing this rig across scene transitions?
3) Should one be using individual scene loading, or additive loading and subtracting of scenes? Eg, going from the main menu to the gameplay.
4) If this XR Rig must be maintained, how should I handle it being parented and unparented to things such as vehicles, and to ensure that it's separated and maintained upon scene exit?
Finally, yes I'm aware of the Meta SDK, but for now and for my own proper understanding of how things should work, I'd like to stick with baseline elements. So please don't tell me to "just use the Camera Rig Building block"!