The only IDE that speaks Unity.

We've shipped games in Unity for years, and every editor we used treated it as just another C# project. The prefabs, the assets, the Editor itself — all invisible to the tool. We got tired of working around that gap. So we built the IDE that closes it.

No licence to buy. Not now, not when you ship.

UNITYIDE NeonDrift — Assets/Scripts/PlayerController.cs Connected
PlayerController.cs Player.prefab MainMenu.uxml Gameplay.inputactions
1using UnityEngine;
2using UnityEngine.InputSystem;
3
4public class PlayerController : MonoBehaviour
5{
6 [SerializeField] float speed = 5.5f;
7 Rigidbody rb;
8
9lifecycle void Awake()
10 {
11 rb = GetComponent<Rigidbody>();
12 }
13
14lifecycle void Update()
15 {
16 var move = moveAction.ReadValue<Vector2>();
17 rb.AddForce(move);
18 }
19}
Problems31 Unity analyzers
UNITY0002 · PlayerController.cs:17
GetComponent called every frame — cache it in Awake.
✓ Quick fix applied · using cached rb from Awake
0 findings · compiled in Unity 6000.3
Assembly-CSharpC# · UTF-8

Why we built it

Every panel here exists because something in Unity cost us a day.

Five of those problems, and what this editor does about each one. Keep scrolling.

01 · Setup

A Unity IDE that just works. No days of setup.

We spent too many afternoons wiring extensions, language servers and debuggers together before writing a line of game code. UnityIDE ships with all of it. Download, add one package to your project, and it finds the running Editor on its own.

Getting started
Download UnityIDE
Windows .exe · macOS .dmg · free
Add the Unity package
Package Manager → Add package from tarball
Open your project
Language server, analyzers and debugger are already there

C# language server, Unity analyzers, debugger, terminal and git — already in the box. Works from Unity 2021.3 through Unity 6.

02 · UI Toolkit

It compiled clean. The Play button did nothing.

A UI Toolkit query is just a string. Get the name wrong and C# is perfectly happy to hand you null at runtime. UnityIDE renders the UXML on a live canvas beside the code — and knows what the element is actually called.

MainMenu.uxml · live canvas
NEON DRIFT
Playname="play"
Garage
Quit
MainMenu.cs
root.Q<Button>("play-btn")
UNITY0501 No element named play-btn. The element in this document is named play.

Everywhere else: compiles clean, returns null at runtime. Invalid UXML is refused here, not warned about.

03 · ScriptableObjects

We renamed one field. Three weapons quietly did zero damage.

A ScriptableObject joins an asset to code through a string. Rename the field and every saved instance resets — no compiler error, nothing in the console. UnityIDE holds your assets and your code index at the same time, so it sees the drift and edits the real typed fields in place.

Weapon.cs
public int damage baseDamage = 45;
Every other editor
Sword.asset0
Bow.asset0
Staff.asset0
Reset to 0. No error anywhere.
UnityIDEDrift · 3
Sword.asset45 45 kept
Bow.asset30 30 kept
Staff.asset60 60 kept
Detected and reconciled against the class.

The Inspector for a .asset file, inside your editor. Bytes are spliced, never re-serialized.

04 · Unity Hierarchy

The scene, as the running Editor has it open.

We opened Player.prefab to find one missing reference and got 1,847 lines of YAML. UnityIDE shows the hierarchy the Editor is actually running — GameObjects, components, live state — not a file you parsed and hoped about.

1
Player
Unity Hierarchy · SampleScene · connected
PlayerTransformRigidbody
ModelMeshRenderer
Camera RigTransform
Main CameraCamera
Weapon SocketTransform
PistolWeaponBehaviour

Prefabs and scenes open as structure too; diffs read as GameObjects and components. Raw YAML stays one click away, behind a warning.

05 · AI copilot

An agent with Unity in its hands — that proves its work.

Twenty-five Unity tools: it reads the scene, sets properties with Unity's own Undo stack intact, runs your tests. Then it recompiles in your running Editor — waking it through the OS if it's in the background — and re-checks every file it touched.

It doesn't tell you it worked. It shows you what it checked — and a skipped check is never a passing one.

Make the enemy drop loot on death
get_scene_hierarchy
unity_set_property Enemy.LootTable
unity_run_tests
Verified · EnemyAI.cs +2Unity 6000.3
compileUnity 6000.3 — 0 errorspassed
analyzers31 Unity rules — 0 findingspassed
GUID integrity14 references intactpassed
ScriptableObjectsno drift against the classpassed
inputevery action name resolvespassed
tests3 / 3 passedpassed
Unity consoleEditor not runningnot verified
Reviewable diffs · checkpoint saved · a console error is never "fixed", only not seen again.

Also wired to the Editor

Unity Consolelive
LOGPlayer spawned at (0, 1, 0)PlayerController.cs:18
LOGLoaded 3 input maps, 11 actionsInputBootstrap.cs:9
WARNNavMesh not baked for SampleSceneEnemySpawner.cs:41
ERRNullReferenceExceptionEnemyAI.cs:34
✦ Ask AI about this errorstack trace + EnemyAI.cs:34 attached

Unity Console

Logs stream in live. Every stack frame is a link.

Console output from the running Editor, with click-to-source on every trace. The agent reads the same console — so after a turn it checks for errors it introduced and makes one bounded repair pass.

Input System

Your real action names. Not JSON, not guesses.

Action maps, bindings and control schemes open as a table you can read. The agent reads .inputactions directly, so generated handlers use the actions your project actually defines — and a binding conflict Unity reports nothing about gets flagged.

Gameplay.inputactionsConflict · 1
MapActionBinding
PlayerMoveWASD · Left Stick
PlayerJump<Keyboard>/space · Button South
UINavigateArrows · D-Pad
UISubmit<Keyboard>/space · Button South
Jump loses — it never fires while the UI map is enabled. Unity reports nothing for this.
Unity ProfilerPlay Mode · frame 1,204
SamplemsGC alloc
EnemyAI.Update4.81.2 KB
PlayerController.FixedUpdate0.60 B
✦ AnalyzerGetComponent called every frame in EnemyAI.Update — cache it

Profiler

See the frame. Then see the line that spent it.

Profiler samples from the running Editor, next to the code that produced them. The Unity analyzers already know the usual suspects — allocations inside Update, GetComponent in hot paths, Camera.main lookups — and point at them in the gutter.

Bring your own agent

Connect the coding subscription you already pay for.

External agents plug in over ACP and get the same 25 Unity tools, the same running-Editor verification, and the same reviewable diffs. Your subscription, our Unity context.

AgentsACP
CClaude CodeAnthropic · Pro / Max subscriptionSupported
XCodexOpenAI · ChatGPT subscriptionComing soon
Any ACP agentAgent Client ProtocolSupported
Built-in models stay available on every plan.

And the rest

Everything else we needed it to do.

.cs
C# that knows it is Unity
Unity analyzers, lifecycle markers in the gutter, FormerlySerializedAs generation, and a debugger that attaches to the Editor.
.unity .prefab .mat
Scenes and prefabs as structure
Open as a navigable tree. Diffs read as GameObjects and components, not as text.
.asmdef .shader .hlsl
The rest of the project
Assembly definitions, ShaderLab and HLSL are first-class. Meta files stay paired; new files get a valid GUID.
AI
An agent that knows your project
A knowledge graph of classes, YAML, input actions and asmdefs — indexed once, queried by the AI instead of guessed at.

Why choose UnityIDE

General-purpose IDEs treat Unity as a C# project. We don't.

Capability
UnityIDE
Rider
Visual Studio
Built only for Unity Every panel exists for a Unity workflow
general .NET
general
Scenes & prefabs as structure GameObjects and components instead of YAML text
YAML text
YAML text
ScriptableObjects as typed forms Real fields, drift detection against the class
UI Toolkit live canvas UXML rendered beside source; unresolvable queries flagged
syntax only
Input actions as a table Action names validated against .inputactions
references
Unity-specific analyzers Allocations in Update, GetComponent in hot paths…
Live link to the running Editor Play / pause, streaming console, tests
Debugger attached to the Editor Call stack, variables, watch
AI checked against the Editor Recompiles and re-verifies every file it touched
generic AI
generic AI
UnityYAMLMerge as merge driver Scene and prefab conflicts merge with Unity's tool
Price for the IDE
Free
Paid · free non-commercial
Community free

Based on publicly documented features of each product at time of writing. Rider and Visual Studio are trademarks of their respective owners. Spotted a mistake? Tell us.

Try it on the project that cost you a day.

The IDE is free. Paid plans add AI usage and the bigger reasoning modes — see pricing.

1
Install the IDE on your machine
The desktop app. Pick your OS.

Dev builds. Linux is not built yet.

2
Then add the bridge to your Unity project
A small Editor package. This is what connects the IDE to the running Editor.
com.unityide.editor.dev dev build · Unity 2021.3 → Unity 6
a Download the .tgz below
b In Unity: Window → Package Manager → + → Add package from tarball…
c Open the project in UnityIDE — it shows Connected