- Marketplace Link
- https://assetstore.unity.com/packages/tools/gui/onejs-221317
OneJS is a Scripting Engine and UI Solution specifically designed for Unity. It is lightweight, performant, pure C# based, has first-class Typescript support, and works everywhere.
Description
Website & Documentation • Discord • Youtube • Twitter • Forum Thread
(Familiarity with React and Typescript is recommended)
The biggest benefit of OneJS is the ability to design your UI with the React (JSX) workflow. We achieve this by providing a thin layer of "dom" for Preact. Under the hood, it's just pure UIElements, so things will be very performant. UI Toolkit's controls, events, vector API, and styles all just work out of the box.
With OneJS, there's no more C# scripts to compile everytime you change some UI code. You will have super fast iteration time, especially with the built-in Live Reload.
Besides UI, you can also easily use OneJS to build Addon systems for your players, so they can also have the power of Typescript + JSX + CSS to create addons/mods/contents for your game.
Technical details
Requirements
- Unity.Mathematics
- Unity Version 2021.3+ (for stable UI Toolkit)
- Unity Version 2022.1+ (if you need to use UI Toolkit's Vector API)
Feature Highlights
- Use Typescript & JSX for UI Development in Unity
- Fast Iteration speed with Live Reload (even across multiple devices)
- Awesome Performance due to 1-to-1 interop between Preact and UI Toolkit
- Runtime CSS Load CSS strings dynamically at runtime!
- Tailwind! Utility Classes, Arbitrary Values, and Responsive Breakpoints are supported.
- Async/Await & C# Task are supported
- Preact Signals works out of the box
- TS Definitions for tons of UnityEngine and UIElements types. We also provide an C#-to-TS Type Converter that will make your Typing life much easier.
- Works Everywhere (Mac, Windows, iOS, Android, Editor, Standalone, Mono, Il2cpp)
- Built-in Security when you need it. (Should you choose to give your players scripting capabilities, you can set many security settings such as memory limit, call depth, script timeout, among many others, courtesy of Jint)