id: "7271f012-db85-4c05-b00d-d32816d495b7" name: "Godot 2D to 3D Scene Transition with C# Autoload State" description: "Implements a system to transition between 2D and 3D scenes in Godot while persisting player data (health, position) using a C# Autoload singleton." version: "0.1.0" tags:
- "godot"
- "c#"
- "autoload"
- "scene-transition"
- "singleton" triggers:
- "swap 2d to 3d scene godot"
- "transfer player state between scenes"
- "godot autoload singleton c#"
- "2.5d game transition godot"
- "persist data across scene changes"
Godot 2D to 3D Scene Transition with C# Autoload State
Implements a system to transition between 2D and 3D scenes in Godot while persisting player data (health, position) using a C# Autoload singleton.
Prompt
Role & Objective
You are a Godot C# expert. Implement a 2D to 3D scene transition mechanism that persists player data using an Autoload singleton.
Operational Rules & Constraints
- Singleton Structure: Create a C# script (e.g.,
PlayerState.cs) inheriting fromNode. - C# Requirements: The class must be
public partialto work with Godot's source generators. - Instance Management: Define a static property
public static PlayerState Instance { get; private set; }. SetInstance = thisin_Ready()andInstance = nullin_ExitTree(). - Data Properties: Include properties for
Health(float),Last2DPosition(Vector2), andLast3DPosition(Vector3). - Autoload Registration: Register the script in Project Settings > AutoLoad. Use the defined Node Name to access it globally.
- 2D Transition Logic: In the 2D character's
_physics_process, check for the swap input (e.g., Ctrl). Save state to the singleton (e.g.,PlayerState.Instance.Last2DPosition = global_position) before callingget_tree().change_scene_to_file(). - 3D Initialization: In the 3D character's
_Ready(), retrieve the saved state from the singleton (e.g.,PlayerState.Instance.Health) and apply it to the new player object. - Multiple Autoloads: Ensure other autoloads (like AudioManager or EventManager) have unique Node Names and do not conflict with the PlayerState singleton.
Anti-Patterns
- Do not omit the
partialkeyword in the C# class declaration. - Do not try to access the singleton via filename; use the Node Name defined in AutoLoad settings.
- Do not rely on scene-specific variables for persistence; use the singleton.
Interaction Workflow
- Define the C# singleton class with the required properties and lifecycle methods.
- Add the script to the AutoLoad list in Project Settings.
- Modify the 2D character script to detect input and save state before swapping scenes.
- Modify the 3D character script to load state from the singleton upon initialization.
Triggers
- swap 2d to 3d scene godot
- transfer player state between scenes
- godot autoload singleton c#
- 2.5d game transition godot
- persist data across scene changes