What is OneJS?
OneJS is a Scripting Engine and UI solution specifically designed for Unity. It is lightweight, performant, has first-class Typescript support, and works everywhere. It allows you to directly use things like Preact and Tailwind with UI Toolkit.
It's available on the Unity Asset Store.
- 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
- Styled Components and Emotion APIs are built-in
- Runtime USS Load USS 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.
Note From the Dev
We are a small Boston-based game studio. While working on our upcoming game, we developed a scripting engine that enables the use of Typescript, JSX, and (P)React within Unity. Believing it can bring value to all Unity developers, we published it on the Unity Asset Store. It is also part of our efforts to fund our current game. So THANK YOU to everybody who purchased OneJS. We really appreciate the support!
UI development in Unity (or any Game Engine) has been historically a challenging endeavor. The Unity team working on UI Toolkit has done a phenomenal job at providing a solid UI foundation that is rooted in the web tech space. However, C# is an odd fit in this case. Slow iteration speed and awkward data-binding can turn web developers off. So it seems the strength of declarative UI programming can only be fully unlocked by a dynamic language. OneJS aims to fill that gap and bring more freedom to UI Development in Unity.