A hands-on tour of Unity's new CLI: install it, drive the editor you already have open, run arbitrary C# inside it with eval, and hand the whole thing to an AI agent with unity mcp. Real output from a Unity 6 project, and the limits that bite.
We pointed two different AI agents — Claude Code and OpenAI's Codex — at the same Unity project. Without a deterministic tool, the first one read the .meta files and confidently told us 8K textures were eating hundreds of MB and that halving them was free performance. Every part of that was wrong. Then we connected PerfLint over Unity's CLI, asked again, and it retracted its own diagnosis. Then we tried the harder case — a project that doesn't compile at all — and the agent did something our own one-click button can't: it checked the assumption the button makes before letting it run.
Unity dropped the subscription and concurrency limits on its MCP server, so any agent — Claude Code, Cursor — can now read your scene and edit your project directly. That solves the context problem. It does nothing for the judgment problem: an LLM optimizing your project still guesses, and a plausible guess that rewrites 157 files is a faster way to be wrong. Here's what MCP changes, the piece it leaves open — and how PerfLint now plugs into MCP so your agent can call a deterministic scan instead of guessing.
Unity shipped a real command-line tool, and with the Pipeline package it can drive the editor from your terminal. Here's what that unlocks for project health: `unity command perflint_fix` runs a deterministic performance/asset audit against your open editor and applies the safe fixes — no editor path, no -batchmode, no boilerplate. Plus a headless gate that fails CI on a regression. With real output from Viking Village on Unity 6.
Unity's official 3D Game Kit sample spends 1.19 GB on meshes. The textbook fix — disable Read/Write Enabled — is the first thing everyone reaches for, including us. We turned it off on all 238 models, rebuilt, and measured: the number barely moved. Here's what actually held the memory, the one setting that reclaimed 1.23 GB of memory and ~600 MB of build size with the frame time unchanged, and why a plausible answer and a verified one are not the same thing.
We gave Unity's AI Assistant one prompt — 'optimize the Viking Village scene' — and it applied 367 actions across 157 files in a single pass. Here's the full audit: which changes are safe wins, which are quality dials it quietly turned down for you, and one confidently-stated claim about GPU Instancing that doesn't survive a look at the project's actual settings.
A real production Unity project shipped 337 duplicated assets across its Addressables bundles — the same fonts, textures and materials baked into up to 20 bundles each. Here's the full de-duplication walkthrough: why it happens, the two very different kinds of duplication involved, and the before/after receipts — 1.3 GB → 808 MB on disk, duplicate count 337 → 5.
Unity's own Viking Village URP demo breaks on Unity 6: RenderTargetHandle is obsolete, the water shaders render magenta, and GetInstanceID won't compile. Here's what each error means, how to fix them by hand — and how we fixed all of them in a few clicks.
Mipmap Streaming has shipped in Unity since 2018.2, yet almost nobody turns it on: the switch lives in two places, SRP has no debug view for it, and everyone fears blurry textures. We enabled it on Unity's Viking Village demo in one click and watched texture memory drop 0.77 GB → 0.57 GB with no visible quality loss. Here's the whole process, with the Profiler receipts.
Unity 6 marks FindObjectOfType and FindObjectsOfType obsolete. Here's the exact replacement for every call, what the new enum parameters mean, and how to migrate safely without breaking older Unity versions.
Upgrading to Unity 6 from 2021/2022? Beyond the obvious deprecated APIs, these are the real blockers — UI Toolkit event changes, obsolete graphics formats, package-version mismatches, and silent lighting shifts — plus how to check each one.
Duplicate bundle dependencies quietly bloat your build and double your runtime memory. Here's why Addressables duplicates assets, how to find and fix them with the Analyze tool, and the multi-object false-positive trap that breaks the automatic fix.
Seeing GC.Alloc from GetComponent in the Profiler? In the Editor, GetComponent always allocates — but in a build it doesn't. Here's what's real, what's a measurement artifact, and how to profile GC spikes correctly.