Description
Changelog
Reviews (0)

A main menu, pause menu and options menu for Godot 4, with settings that are saved to disk (volume per audio bus, fullscreen, vsync) and fade transitions between scenes. Keyboard, mouse and gamepad all work.

Features

  • Title screen with Play, Options and Quit. Set the title and the scene Play opens in the Inspector.
  • Pause menu with Resume, Restart, Options and Quit to Title. Esc, P or a gamepad's Start toggles it, and it pauses on its own when the window loses focus.
  • Options menu with a volume slider per audio bus, plus fullscreen and vsync toggles. One scene, used by both the title screen and the pause menu.
  • Saved settings. Everything is written to user://settings.cfg and applied again on the next launch.
  • Fade transitions for every scene change, including Restart and Quit. They keep running while the game is paused or in slow motion, reset both when the new scene opens, and ignore a second request while a fade is running.
  • Keyboard and gamepad navigation. Every menu focuses its first control when it opens, and focus goes back to where you were when a submenu closes.
  • Esc does the right thing. Inside Options it closes Options; otherwise it toggles the pause.
  • One theme file (menus/menu_theme.tres) styles every menu, with a crisp pixel font.

Requirements

  • Godot 4.7 or later, standard build (GDScript only, no .NET needed).
  • Tested on Godot 4.7.2 stable on Windows. Transition waits for the scene_changed signal, which needs Godot 4.5 or later; earlier versions are untested.
  • Uses the Compatibility renderer, so it runs on older GPUs too.

Quick Start

  1. Press F5. The title screen fades in with Play selected.
  2. Use the arrow keys (or a gamepad) and Enter, or the mouse.
  3. Open Options, drag the Music slider, and press Esc to go back.
  4. Press Play, then Esc or P in the game to pause.
  5. Close the game and start it again: your volumes are still there.

Known Limitations

  • No key rebinding, resolution picker or language setting. The settings file and Settings are easy to extend for them.
  • Fullscreen and vsync can do nothing while the game runs inside the editor's embedded game window. Run it in its own window (or export it) to see them.
  • Settings save when Options closes, not while a slider is dragging. Quitting with Options open (with Alt+F4, say) loses the changes made in it.
  • On the web, Quit is hidden and fullscreen depends on the browser.
  • Running headless (for example in CI), Godot's dummy audio driver reports two leaked audio objects at exit because the demo music is still playing. A normal run does not.
  • Tested on Godot 4.7.2 on Windows only.

License

MIT for the code. See LICENSE.

Third-Party Assets

  • The font is Pixel Operator 8 by Jayvee Enaguas, released under CC0 1.0.
  • The character, ground tiles and sky are from Pixel Platformer by Kenney, released under CC0 1.0.

Details are in THIRD_PARTY_ASSETS.md.

Learn How It Works

Want to understand how this works instead of just copying it?

CodingQuests teaches you how to build systems like this step by step in Godot, with interactive lessons and real projects.

  • 2D Roguelike: Capstone builds a title screen, faded scene transitions and a pause menu, then wires the whole game loop together. The first 3 lessons are free.
  • Capstone: Build the Whole Game finishes a platformer with a music autoload, screen transitions, and a main menu, options and pause, including the three volume sliders. The first lesson is free.

Source code, integration instructions and issue tracker: https://github.com/CodingQuests/godot-menu-system

Changelog for version v1.0.0

2026-10-17 01:04:33

No changelog provided for this version.

Reviews

Menu System has no reviews yet.

Login to write a review.

Consider supporting the creators!

If you enjoyed this asset consider supporting its creator. Follow the link below.