A small Unity XR prototype for exploring linked 360-degree locations in virtual reality. It was built as a focused exercise in C#, Unity data modelling, runtime UI generation, and XR interaction.
- Data-driven tour locations using
ScriptableObjectassets - Reusable hotspot definitions linking one panorama to another
- Runtime creation and positioning of interactive hotspots from yaw/pitch coordinates
- XR interaction through Unity's XR Interaction Toolkit and OpenXR
- Dynamically generated location-selection UI
- Coroutine-based fades between panoramas
- A custom inside-facing unlit panorama shader
- Universal Render Pipeline configuration for multiple quality levels
Each LocationData asset stores a display name, an equirectangular panorama, and a list of navigation hotspots. TourManager applies the selected panorama to an inside-facing sphere, converts each hotspot's yaw and pitch into a 3D position, and creates XR interactables that link to other locations.
The included prototype contains three connected environments: Cedar Bridge, Little Paris, and Smelting Tower.
- Unity
2022.3.41f1(2022 LTS) - A supported OpenXR headset, or the included XR Device Simulator for editor testing
- Unity Hub is recommended for installing the matching editor version and platform modules
- Clone the repository.
- Open the project folder in Unity Hub with Unity
2022.3.41f1. - Allow Unity to restore packages and import assets.
- Open
Assets/Scenes/SampleScene.unity. - Enter Play mode with the XR Device Simulator, or build for a configured OpenXR target.
The first import can take a few minutes because Unity must recreate the ignored Library directory and import the HDR panoramas.
Assets/
├── Images/ HDR panoramas
├── Locations/ ScriptableObject location definitions
├── Prefabs/ Hotspot and menu-button prefabs
├── Scenes/ Main tour scene
├── Scripts/ Project-authored C# gameplay code
├── Shaders/ Inside-facing panorama shader
└── XR/ XR loader and OpenXR configuration
This is a portfolio prototype rather than a production release. It focuses on the core tour architecture and interaction loop; automated tests, platform-specific deployment polish, accessibility options, and a final art/UI pass are outside its current scope.
The panorama images are from Poly Haven and are available under the CC0 licence:
- Cedar Bridge 2 by Dario Barresi
- Little Paris Under Tower by Dimitrios Savva and Jarod Guest
- Smelting Tower 01 by Savva Zakharov
The repository also contains imported Unity package samples and TextMesh Pro resources, which remain subject to their respective package licences.
The project-authored source code and assets are available under the MIT Licence, so you may use this project as a base for your own work, including commercial projects.
Third-party content is not relicensed by this repository. The Poly Haven panoramas are CC0, while imported Unity package samples and TextMesh Pro resources retain their respective licences.