Follow these phases in order. Each phase resolves one category of failure. Stop when your app renders correctly in the headset.
Use this step-by-step guide if you have never built to the Quest before, or if you want to check every setting from the beginning.
Use the Specific Situations & Behaviors page if you've built successfully before and only one thing is going wrong (such as a specific error or a black screen with a clear symptom).
File → Build Settings in Unity. Make sure your game scene is in the list AND has a checkmark next to it. Also check that the Console window at the bottom of Unity has no red errors. These two checks take 10 seconds and rule out the most common mistakes.
Edit › Project Settings › XR Plug-in Management, that means: click the Edit menu at the top of Unity, then click Project Settings in the menu that opens, then click XR Plug-in Management in the window that appears. Each arrow means "click into the next thing."
A window opens. At the top of the window you'll see icons for different platforms.
Click the Android tab (the little green robot icon).
Make sure OpenXR has a checkmark.
Note: If "Oculus" is also checked, uncheck it. You can only use one at a time, and using both causes problems in Unity 6.
You'll know it worked when: OpenXR has a checkmark, and a new "OpenXR" item appears in the left sidebar of the window.
Find Meta Quest Support in the list and put a checkmark next to it.
What this does: It adds a special tag to your app called the "VR category." This tag tells the Quest, "This is a VR app — launch it in full 3D mode." Without this tag, the Quest treats your app like a flat phone app, which is why you'd see a black screen.
You'll know it worked when: Meta Quest Support shows a checkmark and a small gear icon appears next to it.
Click the gear icon next to Meta Quest Support. A new view opens with checkboxes for different Quest models.
Under Target Devices, check Quest 3S. Also check Quest 3 — this makes your app work on more headsets.
Note: If you don't list Quest 3S here, the Quest might refuse to launch your app in full VR mode, even though everything else is set up correctly.
You'll know it worked when: Quest 3S has a checkmark in the Target Devices section.
Still under OpenXR settings, look for the section called Interaction Profiles.
Click the + button and add at least one of these:
What this does: Tells Unity how to talk to the Quest controllers. Without this, the VR session won't fully start up on the headset.
You'll know it worked when: At least one profile appears in the Interaction Profiles list.
This opens a window that lists any problems with your VR setup.
Click Fix All to fix the red errors automatically.
You can leave the yellow warnings for now — they're suggestions, not errors.
You'll know it worked when: The window shows "No issues detected" or only yellow warnings remain.
In Unity's Project window (bottom of the screen), look for this file:
If this file does NOT exist, skip this step — Unity will create one automatically. You're done with Phase 1.
If this file DOES exist, double-click to open it. Look for this line near the top:
If the line is missing, add it inside the <intent-filter> section.
If you're not sure whether this file is needed, the safest option is to delete it and let Unity generate a fresh one.
Save your project (Ctrl + S), then Build and Run to your Quest (File → Build Settings → Build and Run).
Does the app launch into 3D? If yes, you're done — congratulations! If no, continue to Phase 2.
Scroll down and check that each of these values matches the table below:
| Setting | Required value |
|---|---|
| Minimum API Level The oldest Android version your app supports | Android 10 (API 29) |
| Target API Level The Android version your app is built for. Meta requires API 34 for store submissions as of March 2026. | Android 14 (API 34) or API 35 |
| Scripting Backend How your C# code gets converted for the Quest | IL2CPP |
| Target Architectures The type of processor in the Quest | ARM64 only (uncheck x86 if present) |
| Color Space How Unity handles colors. VR needs Linear. | Linear |
Still in Other Settings, scroll up to find Graphics APIs.
The order of items in this list matters — the FIRST item is what the Quest will use.
Find the setting called Render Mode and set it to Multi-view.
What this means: "Multi-view" draws both eyes at the same time, which is faster. The other option, "Multi-pass," draws each eye separately and can show a black screen on the standalone Quest — even if everything else looks fine when using a Link cable.
Save (Ctrl + S) and Build and Run again.
Does it work now? If yes, you're done. If no, continue to Phase 3.
Look at the Scenes In Build list at the top of the window.
Your main game scene must be listed AND have a checkmark next to it.
If it's not there, drag your scene from the Project window into the list.
Why this matters: If only an empty default scene is in the build, your app will show a black screen with no errors at all. This is one of the easiest mistakes to miss.
Open your Hierarchy window (left side of Unity).
You should have a GameObject called XR Origin with this structure:
What this is: The XR Origin is the "rig" that represents the player in VR. It replaces the regular Camera you'd use in a non-VR game.
If you only have a plain Camera with no XR Origin parent, the VR system has nothing to attach to — and nothing will render.
To add an XR Origin: right-click in the Hierarchy → XR → XR Origin (VR).
Click on the Main Camera in your Hierarchy (it's inside XR Origin).
In the Inspector (right side), look for a component called Tracked Pose Driver.
It should have these bindings:
centerEyePosition [XR HMD]centerEyeRotation [XR HMD]What this does: The Tracked Pose Driver is what makes your camera follow the headset when you move your head. If these fields are empty, or if they're bound to a mouse/keyboard input, the camera will stay stuck in one spot — often inside the floor or a wall, which looks black.
In the Hierarchy, type XR Interaction Manager into the search bar at the top.
If nothing shows up, create one: right-click in the Hierarchy → Create Empty. Name it "XR Interaction Manager." With it selected, go to the Inspector and click Add Component → XR Interaction Manager.
Why this matters: The XR Interaction Toolkit needs this to work. Without it, you'll get errors when your scene starts that can stop the whole thing from rendering.
In the Project window, click the search bar and type t:UniversalRendererData.
Click on the result. The Inspector will show the settings. Check these:
| Setting | Required value |
|---|---|
| Intermediate Texture | Auto |
| Post Processing → Enabled | Off (unchecked) |
| Rendering Path | Forward or Forward+ |
Save and Build and Run again.
Does it work? If yes, you're done. If no, the next two phases use the command line — they're more advanced. Consider asking your teacher for help, or continue if you're comfortable using Command Prompt.
Press the Windows key + R at the same time. A small "Run" window opens.
Type cmd and press Enter. A black window opens — this is Command Prompt.
You'll know it worked when: You see a black window with text like C:\Users\yourname> and a blinking cursor.
Plug the Quest 3S into your PC with a USB-C cable.
Put the headset on. If you see a popup that says "Allow USB Debugging?", check "Always allow" and click "Allow." (If you don't see the popup, that's fine — it may have been answered already.)
Take the headset off. In Command Prompt, type this and press Enter:
You'll know it worked when: You see a line like 1WMHH9XXXXX device. The word "device" means everything is working.
If you see "unauthorized" instead of "device": Put the headset on again and look for the USB debugging popup. Accept it, then run adb devices again.
C:\Users\[your-username]\AppData\Local\Android\Sdk\platform-tools\adb.exe devicesPut the headset on. Press the Meta button to open the menu, then open the App Library.
At the top right of the library, there's a filter dropdown. Set it to Unknown Sources.
Look for your app. If it's there, the build installed successfully.
If your app is NOT there, the build didn't actually reach the headset. Go back to Unity and try File → Build Settings → Build and Run again.
Make sure the headset is still plugged in.
In Command Prompt, type this command exactly as written and press Enter:
What this does: It tells adb to record everything the Quest's Unity-related parts say, and save it to a file called quest_log.txt on your Desktop.
Command Prompt will look frozen — that's normal. It's recording.
Put the headset on. Open your app from the Unknown Sources list.
Let it sit on the black screen for about 15 seconds. During that time, the headset is writing log messages.
Take the headset off. Go back to Command Prompt and press Ctrl + C to stop recording.
On your Desktop, you should now have a file called quest_log.txt.
Double-click it to open it (Notepad will open it by default).
Press Ctrl + F to open the search bar. Search for each of these phrases in order. The first one you find is likely your problem:
| Search for this in the log | What it means |
|---|---|
category.VR not found | Meta Quest Support is not enabled. Go back to Phase 1, Step 2. |
xrGetVulkanGraphicsDevice2KHR | Vulkan graphics problem. Try switching to OpenGLES3 (Phase 2, Step 2). |
FATAL EXCEPTION | One of your scripts crashed on startup. The lines right above this error will name the script. |
XRGeneralSettings awakening with nothing after | The OpenXR plugin may be out of date. Update it through Window → Package Manager. |
NullReferenceException | A script is trying to use something that doesn't exist yet. Often a missing reference in the Inspector. |
Entitlement for packageName not found | Developer Mode is not enabled on the headset. Enable it in the Meta Horizon mobile app. |
discussions.unity.com) or show the log to your teacher.
Unity version: In the Unity Hub, look next to your project name. Or inside Unity, click Help → About Unity.
OpenXR Plugin version: Open Window → Package Manager. Click "In Project" in the dropdown at the top. Find "OpenXR Plugin" in the list and click it. The version number is shown on the right.
XR Interaction Toolkit version: Same as above, but find "XR Interaction Toolkit" in the list.
Quest headset OS version: Put the headset on. Go to Settings → System → Software Update. Your current version is shown at the top.
Your app should launch into a 3D environment visible in your Quest 3S, and the app icon in your library should reflect a VR app (not the default Unity cube). If you got here without success, your specific error message from Phase 5 is the next clue to investigate.
Ctrl + P to print this guide. The glossary and all sections will be included.