https://github.com/fuqunaga/rosettaui
Code-based UI library for development menus for Unity
https://github.com/fuqunaga/rosettaui
debug development menu ui uitoolkit unity
Last synced: about 1 year ago
JSON representation
Code-based UI library for development menus for Unity
- Host: GitHub
- URL: https://github.com/fuqunaga/rosettaui
- Owner: fuqunaga
- License: mit
- Created: 2021-08-20T04:03:49.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2025-04-11T06:09:54.000Z (about 1 year ago)
- Last Synced: 2025-04-14T06:49:39.435Z (about 1 year ago)
- Topics: debug, development, menu, ui, uitoolkit, unity
- Language: C#
- Homepage:
- Size: 51.2 MB
- Stars: 432
- Watchers: 14
- Forks: 26
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# RosettaUI
[](https://badge.fury.io/js/ga.fuquna.rosettaui)
[](https://openupm.com/packages/ga.fuquna.rosettaui/)
Code-based UI library for development menu for Unity

```csharp
public class ExampleSimple : MonoBehaviour
{
public string stringValue;
public float floatValue;
public int intValue;
public Color colorValue;
void Start()
{
var root = GetComponent();
root.Build(CreateElement());
}
Element CreateElement()
{
return UI.Window(nameof(ExampleSimple),
UI.Page(
UI.Field(() => stringValue),
UI.Slider(() => floatValue),
UI.Row(
UI.Field(() => intValue),
UI.Button("+", () => intValue++),
UI.Button("-", () => intValue--)
),
UI.Field(() => colorValue)
)
);
}
}
```

# Installation
This package uses the [scoped registry] feature to resolve package
dependencies.
[scoped registry]: https://docs.unity3d.com/Manual/upm-scoped.html
**Edit > ProjectSettings... > Package Manager > Scoped Registries**
Enter the following and click the Save button.
```
"name": "fuqunaga",
"url": "https://registry.npmjs.com",
"scopes": [ "ga.fuquna" ]
```

**Window > Package Manager**
Select `MyRegistries` in `Packages:`

Select `RosettaUI - UI ToolKit` and click the Install button

### Input System(optional)
RosettaUI recommends using Input System.
See [Tips](#disable-keyboard-input-when-typing-in-ui).
Install according to the official documentation.
https://docs.unity3d.com/Packages/com.unity.inputsystem@1.5/manual/Installation.html
# How to use
1. Put `Packages/RosettaUI - UIToolkit/RosettaUIRootUIToolkit.prefab` in the Hierarchy
1. Write code to generate `Element` instance
1. Call `RosettaUIRoot.Build(Element)` to generate the actual UI ( [Example] )
[Example]: Assets/Example/ExampleSimple.cs
Examples are available in this repository.
I recommend downloading and checking it out.
# Functions
## UI.Field()


## UI.Slider()


## UI.MinMaxSlider()


## UI.List()


## Layout elements


## And more!
Please check the [Examples](Assets/Scenes)
# Enviroment
| Platform | Support |
| -------- | ----------------- |
| Windows | ✔ |
| Mac | Maybe(not tested) |
| Linux | Maybe(not tested) |
| IL2CPP | Suspended |
| UI Library | Support |
| ---------- | ----------- |
| UI Toolkit | ✔ |
| UGUI | Suspended |
| IMGUI | Not planned |
# Tips
## Disable keyboard input when typing in UI
When using InputSystem, set `RosettaUIRoot.disableKeyboardInputWhileUITyping=true (default)` to disable keyboard input while typing in UI.
```csharp
// false while typing in UI
if ( Keyboard.current[Key.A].wasPressedThisFrame )
{
// do something
}
```
For LegacyInputSystem, refer to `RosettaUIRoot.WillUseKeyInputAny()`.
```csharp
if ( !RosettaUIRoot.WillUseKeyInputAny() && Input.GetKeyDown(KeyCode.A) )
{
// do something
}
```
# See also
[PrefsGUI](https://github.com/fuqunaga/PrefsGUI) - Accessors and GUIs for persistent preference values using a JSON file