Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Unity Play ToolsNew to Visual Studio Code? Get it now.
Unity Play Tools

Unity Play Tools

gangdol

| (0) | Free
Streams a Unity Device Simulator locally with Play Mode controls and optional remote input.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Unity Play Tools

Unity Play Tools is an Editor-only, local Unity Device Simulator stream for Visual Studio Code. It preserves the Genius extension's Play, pause, resume, step, stop, JPEG streaming, remote pointer/keyboard input, reconnect, and panel restore behavior while adapting installation and paths to the current Unity project.

The extension depends on gangdol.unity-tools-base. Base transactionally installs the embedded Unity package and the focused project skill through the fast structural path, normally without closing or launching Unity. A complete exact transaction is reported enabled. Explicit Repair performs deep Unity validation after a new user confirmation for that exact launch; a deep partial is explicitly non-success and disables only each unavailable optional function (streaming, input, or uGUI diagnostics) in the VS Code host. Controls and every other proven function remain usable.

The focused project skill is an independent install domain. A conflicting or modified skill remains untouched and keeps the aggregate operation explicitly partial, but it does not disable a fully structurally installed or later Unity-validated Play package or any of its runtime features.

If detached setup fails, the extension names the failure and offers Retry Setup. The same setup can be re-entered immediately without reloading the VS Code window; a Unity-locked deep operation also explains that its automatic retry is waiting for Unity to close.

Accepted readiness is persisted in host-global state before setup returns it. The exact receipt is keyed by canonical project and binds the Play extension, build, validated capability result, and VS Code workspace composition; a missing or rejected durable-state write cannot become full readiness. Receipts are deduplicated per project and are not evicted by project count. An unchanged full workspace composition skips automatic project discovery entirely. A changed composition falls through to discovery so a new project can adapt, while the unchanged installed project keeps its full receipt and never re-enters installer work. Exact-full open, restore, project switch, transient bridge failure, and reconnect paths remain direct and do not call capability policy or reconciliation. The current workspace's exact setup classification is captured once at activation; full-success open, restore, and reconnect entry points never read readiness or installer APIs. Project switches are a setup boundary so genuinely new projects can still be classified and adapted.

Every operation that can launch Unity uses that Base consent flow. Manual installer commands cannot authorize or launch Unity validation.

An enabled install has no installer-state runtime policy. Status, frames, controls, and input never hash installed files, check inventories or validation generations, acquire capture leases, or consult installer state. The compiled providers register directly and run the original behavior: 90 FPS asynchronous GPU readback/background JPEG encoding, the original 8 FPS synchronous runtime fallback, immediate 202 control acknowledgement, 128 controls per Editor update, canonical Device Simulator touchscreen reuse, and the original bounded input-transition queue.

Before installation, Base protects only a coherently proven original Genius footprint: both exact protocol/bridge declarations and the exact original tool identity must be present together. Once a portable installation validates, Play contains no legacy-type runtime gate; copied or colliding types cannot silently disable its bridge or providers after success.

Installer validation requires a real graphics device and the Device Simulator capture contract, not asynchronous readback support. A real graphics device without async readback therefore remains fully enabled and uses the synchronous fallback. A Null/headless graphics device can yield non-success partial for the stream capability, while remote input remains enabled whenever its Input System provider independently validates.

The control/status core targets Unity 2021.3 or newer. The embedded package declares minimum Input System 1.5.1 and uGUI 1.0.0 dependencies so ordinary installs retain the original input and EventSystem diagnostic features. Device Simulator integration probes the current Editor contract rather than limiting support to the Genius project's Unity patch version.

The bridge binds only to 127.0.0.1 and authenticates every request with a random per-Editor-session token. Normal Unity startup writes the project-local descriptor through the original same-directory temporary-file delete/move publication, plus the original POSIX chmod behavior. Base reads it directly and bounded on initial connection and when its optional watcher marks a new generation; authentication/transport recovery can refresh it without a watcher, so watcher availability never gates a successful runtime. The requested authenticated route proves liveness. Windows uses Base's release-validated, bundled handle-bound ACL verifier and hash-pinned retained launcher only inside installer/consent/Unity-validation operations. Successful status, frame, control, and input paths never invoke that verifier or an extra descriptor identity/status probe. The Windows live harness accepts an official Editor from any canonical VM-local installation layout only after its external Unity.exe passes exact ARM64 PE, Authenticode, native identity, hash, and version attestation. Recursive live-project cleanup additionally requires the exact prior Editor identity from a verifier-held launcher record. That record binds the arm nonce, a one-shot launch challenge, executable identity/hash, PID, and process start ticks in a verifier-read private evidence file; shutdown and recursive cleanup derive the PID from that evidence and accept no caller-supplied PID. They also prove the recorded process has exited and never force-stop Unity. The narrower preparation-only cleanup path is valid solely before launch: an exclusive, nonce/project/executable-bound launch marker is written before the first Unity process probe, and that cleanup preserves the project if the marker or any known Editor, bridge, report, request, or lock artifact exists.

This package does not include the prefab editor. Unity Edit Tools independently registers that provider through the shared Base service registry.

This software is proprietary. Permission to download, install, and use it is provided by the bundled LICENSE file.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft