InitialPrefabs / UGUIDOTS

Converting UGUI to be DOTS compliant
MIT License
114 stars 12 forks source link
data-oriented-design entity-component-system renderer ui unity

UGUIDOTS

Logo done by Sabrina Lam

UGUIDots is a Data Oriented Tech Stack library aimed to bridge the gap in between Unity's WYSIWYG UI and the Entity Component System. This is a low level library which augments on top of Unity's UI and does not serve as a replacement - so the workflow of authoring UI designs in games largely remains the same.

Why do this?

A DOTS compliant UI is still underway (which will be based off of UIElements). Until then, I need a UI solution the works with the Scriptable Render Pipeline - without building too many custom tooling. Similarly - one that has the performance capabilities and low overhead for both mobile and desktops. That said supported platforms are primarily for:

Beta/Experimental Content

Check out the develop branch of the repository for the redesigned system! This is something I've been working on lately and it redesigns how conversion and transformations are done. I haven't decided to merge this into the master branch as of late because I am trying to update the entire documentation and some features are missing.

Wiki

The wiki is currently being worked on and contains basic information about Image/Text pipelines.

Changelog

General purpose change log can be found here.

Contributions

If you would like to help contribute to the development of UGUIDots, please see the contribution guidelines here.

TODO

Support for the following will come over time - depends on the needs for my own game.

Installation

OpenUPM

There is currently a known issue with OpenUPM, where Unity internal scopes are added to the registry. After adding the package via OpenUPM, head over to the manifest file and delete the com.unity.* under the scopes entry.

cd <path-to-project>
openupm add com.initialprefabs.uguidots

Git Submodule

git submodule add https://github.com/InitialPrefabs/UGUIDots.git <path-to-folder>

Manually

Download the latest release and add it to your project directly.

QuickStart

Below are the basic steps to get the package working in game.

Setting up the Render Command

Converting GameObjects to Entities

Setting up input

Sample Repository

Please see the Sample repository here.

Dependencies

Grab these from Unity's package manager.

Limitations

Development is still underway - so not all of the features Unity has by default is supported. Similarly - there are certain cases that are not accounted for, like sub canvases as I barely use features like that.

Credits

Some thanks to a few folks who've helped me figure out things along the way