# Custom Controller Setup


A fully customizable controller can be built entirely inside Unity by using the Dual Render Fusion feature.

The Snapdragon Spaces Unity package includes the possibility to spawn a controller upon startup of the application on the host device.

This Snapdragon Spaces Companion Controller is enabled by default in the BaseRuntimeFeature, which is located under Edit > Project Settings > XR Plug-in Management > OpenXR (> Android Tab) > OpenXR Feature Groups > BaseRuntimeFeature (by clicking on the cog wheel).

If a custom implementation with a different appearance and slightly different functionality is desired, an alternative controller archive can be build in the steps described in the custom controller section.

The resulting archive from these steps can then be included anywhere in the Assets folder of the Unity project, and the Use Custom Controller toggle has to be enabled (which requires the Launch Controller On Host option to be enabled as well).

Custom controller setting in BaseRuntimeFeature setting panel


In some instances, adding a custom controller archive might lead to Gradle caching errors. In that case, removing the temporary Gradle project folder generated in the project folder under Temp > gradleOut might resolve the issue.