Visitar URL original
[Feature]: Run code (or wait) after Play Mode startup — statics set before play are wiped by domain reload · Issue #1437 · CoplayDev/unity-mcp · GitHub
Skip to content

[Feature]: Run code (or wait) after Play Mode startup — statics set before play are wiped by domain reload #1437

Open

Description

@HivemindMinion

What problem are you trying to solve?

manage_editor action=play triggers a domain reload (with the default Enter Play Mode settings), which wipes any static state set beforehand. Agents often need to set something up, then observe startup. For example: "ask the main menu to open the History panel on arrival, enter Play Mode, confirm it did." Setting the static before play doesn't work because the reload clears it. The workaround is to enter Play Mode, set the static, then call SceneManager.LoadScene(...) to re-run the scene's startup, which is a different code path from a real cold start.

Separately, when play returns, an agent can't easily tell when the first scene's Start methods have run, so the first execute_code call after play sometimes races initialisation.

What would you like to see?

  • An optional on_ready_code on manage_editor action=play (a C# body, same compiler as execute_code) that runs once, after the first scene has loaded and one frame has ticked, with its result returned in the play response.
  • Or a lighter version: wait_until: "scene_loaded" | "first_frame" on play, so the next execute_code is guaranteed to run after startup.

Prior art / how do you work around this today?

Enter Play Mode, poll with execute_code until the singletons exist, then reload the scene to re-run startup with the desired state. It works, but it's slow and doesn't exercise the real cold-start path.

Scope hint

Small to medium: hook SceneManager.sceneLoaded / EditorApplication.update after the play-mode transition, then run the compiled snippet.

Environment

  • Unity: 6000.3.8f1 (URP) · MCP for Unity: 10.2.1-beta.6 · Client: Claude Code · Transport: stdio · OS: Windows 11 Pro

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions