Settings tab — hooking resolution, volume and ultimate cutscenes into the actual game
Moved the settings mockup (169) into the menu's settings tab and hooked up resolution, screen mode, VSync, three volumes, music on/off and ultimate cutscenes. Nothing saves until you hit Apply. Graphics quality (which could drop the renderer) and text speed are only saved for now.
The settings tab had been an empty window since step 1 (172). The mockup is the revised version of settings mockup #2 from 169 (no preview, two columns, Default and Apply buttons at the bottom). Two things were in the way. Some options, like text speed, have nothing to receive their values yet, and the project's sounds don't go through an audio mixer. I decided to build the screen as in the mockup and connect whatever options I could to the real game settings.
Screens I built
On the left, DISPLAY has resolution (1920×1080 / 2560×1440 / 3840×2160), screen mode (Fullscreen / Windowed), graphics quality and VSync. On the right, SOUND has master volume, background music, sound effects and a background music toggle, and below that, GAME has text speed and ultimate cutscene playback.
There are three ways to change values: picking with ◀ value ▶, two Off/On buttons (the selected one is blue), and for volume, a bar + diamond handle + number (0–100). On the keyboard it's ↑↓ for options, ←→ for values (volume moves by 5), and F to apply. You can also click the arrows and buttons or drag the bar with the mouse.
Changes only take effect and get saved when you hit Apply. Settings are saved separately from the save file, and if you leave the tab without applying, the changes are thrown away. If nothing changed, the Apply button is disabled. "Reset to default" only resets the values on screen, so you still have to hit Apply for it to take effect.
When I applied master 80, music 60, effects 75 and music on, master went 1.00 → 0.80, effects 1.000 → 0.750, the village BGM 0.500 → 0.300 (= 0.5 × 0.6), and the mute was lifted too.
Things I thought about
- Volume as a multiplier per sound. There's no audio mixer, so each sound remembers its original volume and gets multiplied. The music multiplier applies to the BGM, and the effects multiplier to every other sound (footsteps, sword sounds, prop sounds). Sounds created after the scene opens get the multiplier starting from the next Apply.
- Volume defaults to 100. The mockup example used 80, 60 and 75, but with those as defaults, the current volume would change the moment you hit Apply. So I went with 100.
- Graphics quality is only saved. Changing the quality level (Mobile, PC) swaps the render pipeline asset, which could drop the SUNTAIL-specific renderer and post-processing (141). The description line says "not connected yet" too.
- The background music toggle only saves in release builds. This keeps the rule from 160 that dev builds (the editor) start with music off every time you hit Play.
- Text speed is only saved too. The dialogue box currently shows each line all at once, so there's nowhere to use a speed. I plan to connect it in step 8 when I add character-by-character text (20/40/80 characters/s).
Rabbit hole: opening the menu selected whatever row was under the mouse
When the menu opened, the row sitting under the idle mouse got selected on its own, so key input went to the wrong option. In my first test this even saved "ultimate cutscene playback" as Off.
I changed it so hovering only selects a row when the mouse actually moves. I also wiped all the settings saved during testing to put things back to the initial state.
Rabbit hole: the settings screen file was missing from the compile list
The file that assembles the settings screen wasn't registered in Unity's script list. Renaming the file and recreating it got it picked up properly.
Next up
- Connect graphics quality (fix the renderer problem first)
- Connect text speed in step 8 (dialogue box)
- Resolution and screen mode do nothing in the editor's Game view, so check them in a build

