Openupm
A Unity package that makes it easy to curve your HUD and give a more immersive first person experience.
What It Is / What It’s Not
Open Up Mn
If you do a quick Google search for “unity curved ui”, for the most part you will see Unity assets and packages that curve your UI in world space, like a cylinder around the player. These kinds of solutions are great in Virtual Reality.
However, Curved UI Utility curves UI elements in canvas space, and is meant for overlay canvases. While your UI will indeed be curved, it will still be in the same plane that the Canvas is on.
'name': 'com.littlebigfun.addressable-importer', 'displayName': 'Unity Addressable Importer', 'version': '0.9.4', 'unity': '2018.3', 'description': 'A simple rule. Install Node.js on major Linux distros. Use the appropriate command on your distribution to install Node.js. On some distributions, npm is installed along with the nodejs package. One important benefit of using OpenUPM is that once the package is installed, it works like a normal Unity package. Updates do not need to be manually tracked, but they will be available as they are released. Svelto.ECS and Svelto.Tasks on OpenUPM Svelto.ECS and Svelto.Tasks can now be installed in Unity using OpenUPM. !Under construction! My games at itchio. I’m Tim, a game developer who work with Unity since 2018 and have little windows and web developer experience before.
In short, if you want UI that wraps around the player in world space, this is not the package for you.
Why?
The idea for this project came from an effect from the Halo games, notibly Halo 3 and Halo: Reach.
In those games, your HUD in first person is curved inwards a bit, further driving the feeling that you are playing as a Spartan. When going into third person, the HUD animates into its true flat appearance.
To get a better idea of what I’m talking about, which this clip of the Master Chief entering and exiting a vehicle. Pay attention to the UI elements, such as the Shield bar at the top center, and the motion tracker at the bottom left.
For some odd reason, I am really interested in this effect, and wanted to recreate it in the Unity engine.
My Solution
Curved UI Utility can easily recreate the HUD curve found in games like Destiny, Halo, and Cyberpunk 2077, as well as being configurable enough to create your own. You do not need to recreate your entire UI to take advantage of Curved UI Utility; just slap some components and you are good to go.
EARLIEST UNITY VERSION TESTED: 2019.3.15f1
I currently do not have a lot of time to test Curved UI Utility with earlier versions of Unity. As such, minimum Unity versions are also missing from the package manifest. If you test Curved UI Utility on earlier Unity versions, then please let me know whether or not you succeeded.
Unity Package Manager
Manual
To manually add Curved UI Utility, copy and paste this code into your project’s manifest.json file, in the dependencies object:
OpenUPM

Have OpenUPM? Cool. You can head over to the OpenUPM page and install the installer.unitypackage file, and import that directly into your Unity project. The installer will download the contents and automatically install the package.
If you happen to prefer the CLI, then you can execute this command: openupm add com.caeden117.curved-ui-utility
GitHub Releases
If that doesn’t suit your fancy, you can go to the Releases page and download the latest Curved.UI.Utility.zip file. From there, you can add it to your Unity project as a local package.
GitHub Actions
You can also add Curved UI Utility by going into the Actions page and downloading the latest successful artifact. From there, you can add it to your Unity project as a local package.
GitHub Source
This repository is actually the project that I use to develop Curved UI Utility, which explains the long Git URL for the Package Manager.
With the project, the repository also contains a demo scene that gives an example implementation of Curved UI Utility. Feel free to clone the source and browse through the project before adding it to your own.
- Add the
CurvedUIControllercomponent to the Canvas that you wish to curve.Settings Sourcedetermines the initial curve settings.From Scriptable Objectwill inherit settings from aCurvedUISettingsObjectasset. A couple of these are included in the package, and you can also create your own.From Starting Settingswill give you basic HUD settings to play around with.
Curve Transitionaffects the transition between different HUD settings.
- Add/replace various components to child UI objects you wish to curve.
Images should be replaced withCurvedImage, which increases the mesh detail for a smoother curve.- TextMeshPros should be replaced with
CurvedTextMeshPro. CurveComponentshould be added to every component exceptCurvedTextMeshPro, includingCurvedImage.- For masking to work properly, all
RectMask2Ds should be replaced withMasks with curved images.
- Press play. If done correctly, your curved UI will show up.
- Setup is complete, and you may now write scripts that take advantage of
CurvedUIController.
- Setup is complete, and you may now write scripts that take advantage of
Currently WIP. I plan on utilizing the GitHub Wiki to document the various components and features of Curved UI Utility.
Open Up Menu
For the time being, most of what you would want comes from the CurvedUIController class.
- Add some editor tooling to speed up initial setup.
- Test Curved UI Utility in earlier Unity versions
- Create more Demo games/scenes to further test Curved UI Utility
License
Curved UI Utility and the Demo assets included in this project are released under the MIT License.
Open Up My Heart Yolanda Adams
While not a requirement by any means, I do request that attribution/credit be given in some form if Curved UI Utility is used in another Unity project.
