Splash Screen for Unreal Engine
Updated: Oct 9, 2026
You can use a splash screen when your app cannot render frames. For example, you may be unable to render frames when your app is loading, switching levels, or is busy doing other things. A splash screen can help your app meet
VRC.Quest.Performance.3, which requires your app to either display head-tracked graphics in the headset within 4 seconds of launch or provide a loading indicator in VR.
Unreal Engine supports two types of splash screen: launch images -- we call it system splash screen -- and engine splash screen. Use the system splash screen defined in the Android project settings while your application is launching. The engine splash screen is Blueprint-enabled and intended to mask loading levels, cutscenes, and other in-game transitions that temporarily suspend rendering head-tracked graphics.
The system splash screen is the initial splash screen a user sees after launching an app. The system shell draws the system splash screen, not your app, so it appears while your app is still starting.
To add a system splash screen in UE5:
- Click Edit > Project Settings.
- Go to Plugins > Meta XR.
- In the system splash screen settings, check Show System Splash Image. This is the same setting as Show Launch Image in the Android Launch Images settings.
- In System Splash Image, select your image. The editor copies it into your project as
Build/Android/assets/vr_splash.png. - (Optional) Set System Splash Screen Background to Black (the default) or Passthrough (Contextual). While passthrough is enabled in the Meta XR plugin settings, this field is read-only and set to Passthrough (Contextual). For details, see Passthrough loading screen.
- Build and run your app.
With Show System Splash Image checked, the plugin adds the following entries to your app’s Android manifest, inside the <application ...> element:
<application ...>
<!-- ... -->
<meta-data android:name="com.oculus.ossplash.type" android:value="mono"/>
<meta-data android:name="com.oculus.ossplash.background" android:value="black"/>
</application>
The background value is passthrough-contextual when you choose Passthrough (Contextual). Checking Show System Splash Image also adds a com.oculus.ossplash.colorspace entry whose value follows the Color Space setting in the Meta XR plugin settings. The plugin writes the background entry even when Show System Splash Image is not checked. It shows the system splash image in mono and has no stereo option.
The system shows the splash screen only when the built manifest contains
com.oculus.ossplash with the value
true. Checking
Show System Splash Image adds this entry automatically. For the values of
com.oculus.ossplash,
com.oculus.ossplash.type, and
com.oculus.ossplash.background, see
Add a splash screen (native).
During runtime startup, the splash screen stays where it first appeared in front of the user and does not follow head movement. If the user recenters the view, it moves in front of the user again. It fades out once your app starts.
The system scales the splash screen to fit a fixed area in front of the user. The aspect ratio of your image, not its resolution, determines the displayed size. A higher-resolution image does not appear larger. It looks sharper up to the display’s pixel density. Past that density, extra resolution adds no sharpness and can cause aliasing. The system keeps the image’s proportions and does not crop or stretch it.
Legacy guidance: Meta ended support of Unreal Engine 4.27 in
Meta XR SDK v62, and no further updates will be made. The information below is preserved for teams maintaining existing UE4 projects.
To add a system splash screen in UE4:
- Click Edit > Project Settings.
- Go to Plugins > Oculus VR > Mobile.
- Specify a PNG file to use in OS Splash Screen.
After you complete these steps, build and run your application.
The auto-load splash screen displays after the UE engine has initialized. You can create this screen within the Unreal Editor user interface.
You mustn’t rely on a Blueprints function to load the initial splash screen because Blueprints functions do not display a splash screen until the level has loaded enough to begin processing (BeginPlay is fired). Remember that the engine and renderer must also load when the app first loads. If you use a Blueprint splash screen, the user will have a completely dark experience while these load, and this may prevent your app from being accepted for publication on the Meta Horizon Store.
There is no default loading splash screen.
The Unreal Engine Editor provides a mechanism for setting up an auto-loading splash screen.
Note: An auto-loading splash screen created in the Unreal Engine Editor will not appear when you preview the app from within the Unreal Engine Editor. The splash screen won’t appear because Unreal Engine loads the initial layer automatically when you start the app.
Select Edit > Project Settings. Scroll down to Plugins, and select Meta XR. The Engine Splash Screen section appears:
The Auto Enabled checkbox enables or disables splash screen auto-loading. When auto-loading is enabled, the splash screen(s) will automatically be loaded whenever the user transitions from one level to another. When auto-loading is disabled, the splash screen(s) are never automatically loaded.
You can add multiple splash screens by calling Add Loading Screen Splash from the Head Mounted Display Loading Screen functions. If you enable splash screen auto-loading, all of the splash screens that you have added will be auto-loaded whenever the user transitions from one level to another. Thus, you can think of the individual splash screens as components of the actual splash screen that will be visible to the user.
For more information, see
Splash Screen Blueprints. When you check the Auto Enabled checkbox, it will enable or disable the auto-loading of all splash screens you have previously added.
Add an element under Splash Descs by clicking on ‘+’:
Expand the new Splash Desc:
Select a Texture Path, in this case, a custom-made image that resides on the local hard drive:
Fill in the desired transform values to transform the center of the splash screen’s quad, in meters. The following are the default values:
- Transform position: x=4.0, y=0, z=0 (4 meters forward, no horizontal or vertical offset)
- Rotation: 0, 0, 0 (no rotation)
Fill in the desired quad size values for the quad that will hold the splash screen. The following are the default values:
- Quad size: 3m × 3m (width=3, height=3)
If you want the splash screen to rotate, enter the delta rotation values that will be added for each rendering frame (such as setting the rotation at half of the full VSync rate):
If you want to place the texture at an offset from the top left corner of the splash screen, enter the offset values in meters:
If you want to scale the texture, enter the scale values as floating point multiples of the actual size:
Specify whether the splash layer uses its alpha channel. By default, the alpha channel is used:
Engine splash screen using Blueprints
To display the splash screen, use
Add Loading Screen Splash and
Show Loading Screen from the Unreal Engine Head Mounted Display Loading Screen functions. For Blueprint reference on the splash screen, see
Splash Screen Blueprints. The following examples show how this process works.
Note: The older OculusXR-specific functions Add Loading Splash Screen and Clear Loading Splash Screens are deprecated. On the OpenXR backend (the recommended XrApi), calling these deprecated functions has no effect. Use Add Loading Screen Splash and Clear Loading Screen Splashes from the Head Mounted Display Loading Screen functions instead.
Displaying and Hiding a Splash Screen
The system displays a splash screen for 3 seconds in the sample below and then hides it. Assuming the level is loaded, it will be displayed as soon as the system hides the splash screen:
The Add Loading Screen Splash function is used in the above example. It provides features to control the position, scale, and rotation of the splash screen.
The system hides the splash screen using the Unreal Engine-standard HideLoadingScreen Blueprints function. Now consider how this compares with the Meta-specific Clear Loading Splash Screens (deprecated) function:
The Clear Loading Splash Screens function (deprecated) doesn’t hide the splash screen. The Add Loading Splash Screen (deprecated) and Clear Loading Splash Screens (deprecated) functions add and remove the splash screens to and from memory. But clearing a splash screen from memory doesn’t stop showing the currently displayed copy of it.
However, if you attempt to show a splash screen after calling Clear Loading Splash Screens, the experience goes completely dark. This problem occurs because there is no splash screen in memory to display:
Using Multiple Splash Screens
The following example calls Add Loading Screen Splash twice, with different translation, size, and delta rotation values, and then calls Show Loading Screen. Leave Clear Before Add off (the default) so the calls stack instead of replacing each other.