UI, audio //
un publicēšana
Polished Control nodes UI, Tween animācijas, audio bus sistēma un desktop eksports uz itch.io. Kursa noslēgums.
6 stundas - UI, audio, debug un publicēšana
UI elementi un Control nodes
CanvasLayer, VBoxContainer, Button, Label, ProgressBar - galvenā izvēlne.
Animācijas un Tween
CreateTween(), TweenProperty(), easing curves, AnimationPlayer spēles stāvokļiem.
Audio sistēma
Audio buses (Master/Music/SFX), AudioStreamPlayer, skaņas efekti un mūzika C# kodā.
Atkļūdošana un profilēšana
Godot Debugger, Profiler FPS/CPU laiki, Remote Inspector, atmiņas noplūžu meklēšana.
Eksports un publicēšana
Export templates, Windows/Linux/macOS eksports, ZIP augšupielāde itch.io un spēles lapa.
Noslēguma projekts: Puzzle spēle
Polished puzzle spēle ar UI, audio, animācijām, save/load un publicēta itch.io. Kursa noslēgums.
6. tēmas špikeris - UI, animācijas, skaņa un publicēšana
Saskarne, Tween, audio, atkļūdošana un eksports. Katrs bloks atbilst vienai stundai.
6.1 UI: Control mezgli un konteineri
// Control mezgli NAV Node2D - tiem ir enkuri, konteineri un tēma.
// Label teksts Button poga
// LineEdit viena rinda TextEdit vairākas rindas
// VBoxContainer kārto vertikāli HBoxContainer horizontāli
// GridContainer režģis PanelContainer fons un rāmis
// Konteiners kārto bērnus PATS - nelieto rokas pozīcijas tajā.
using Godot;
public partial class MainMenu : Control
{
public override void _Ready()
{
Button button = GetNode<Button>("VBoxContainer/StartButton");
button.Pressed += OnStartPressed;
}
private void OnStartPressed()
{
GetTree().ChangeSceneToFile("res://level1.tscn");
}
}
Enkurs (Layout -> Anchors Preset -> Center) notur izvēlni vidū, mainot loga izmēru.
6.2 Tween - animācija ar kodu
Tween tween = CreateTween();
// no pašreizējās vērtības uz (600, 300) vienā sekundē
tween.TweenProperty(node, "position", new Vector2(600, 300), 1.0);
// izgaismošanās
node.Modulate = new Color(1, 1, 1, 0);
tween.TweenProperty(node, "modulate:a", 1.0, 0.5);
tween.SetParallel(true); // visas reizē, nevis pēc kārtas
tween.SetTrans(Tween.TransitionType.Elastic); // atlec mērķī
// Ja notikums var atkārtoties ātri - apturi veco:
if (activeTween != null && activeTween.IsRunning()) activeTween.Kill();
// AnimationPlayer = vizuāli veidota animācija ar atslēgkadriem
// player.Play("uzvara");
Animācija nav tikai skaistums - tā pasaka spēlētājam, ka darbība tika pamanīta.
6.3 Audio: efekti, mūzika un bus
AudioStreamPlayer sfx = GetNode<AudioStreamPlayer>("SFX");
sfx.Play();
// Mūzikas mīksta ienākšana
AudioStreamPlayer music = GetNode<AudioStreamPlayer>("Music");
music.VolumeDb = -40;
music.Play();
CreateTween().TweenProperty(music, "volume_db", 0.0, 1.0);
// Atsevišķi bus (apakšā cilne Audio): Master -> Music , SFX
int index = AudioServer.GetBusIndex("Music");
AudioServer.SetBusVolumeDb(index, -10.0f);
// Skaļumu mēra decibelos: 0 dB = pilns , -80 dB = kluss
Mūziku un efektus liec atsevišķos bus - tad spēlētājs var izslēgt mūziku, saglabājot skaņas.
6.4 Atkļūdošana: trīs veidi atrast kļūdu
// 1. Izdrukas - ātrākais veids saprast, KUR vērtība kļūst nepareiza
GD.Print("pirms: ", Position);
GD.PrintErr("KĻŪDA: mezgls nav atrasts"); // sarkans
// Pašpārbaude - labāk brīdinājums nekā klusa avārija
Node node = GetNodeOrNull<Node>("Player");
if (node == null) GD.PrintErr("Nav mezgla Player!");
// 2. Breakpoint - Debugger cilne
// uzklikšķini rindas numura kreisajā malā -> spēle apstājas
// Stack Variables rāda VISUS mainīgos uzreiz, neko neizdrukājot
// Step Into / Step Over - iet pa vienai rindai
// 3. Profiler - Debugger -> Profiler -> Start
// kārto pēc laika -> augšā ir funkcija, kas ēd visvairāk
Izdrukas ir ātrākas vienai vērtībai. Breakpoint ir labāks, kad jāredz daudz mainīgo reizē.
6.5 Eksports un publicēšana
# 0. Editor -> Manage Export Templates -> Download (vienreiz)
# Pirms eksporta C# projektam
dotnet build
# Desktop versija
# Project -> Export -> Add -> Windows/Linux/macOS -> Export Project
# build/ mapē jābūt visiem eksportētajiem failiem
# Pārbaude
# 1. Aizver Godot
# 2. Palaid eksportēto failu no build/ mapes
# 3. Saspied visu build/ saturu ZIP arhīvā
# 4. Izpako ZIP citā mapē un palaid vēlreiz
# Publicēšana: itch.io -> Upload new project -> Downloadable
# augšupielādē ZIP un norādi platformu
# Godot 4 C# šajā kursā nepublicējam kā Web build.
Pēc publicēšanas obligāti pārbaudi lejupielādi un izpakošanu citā mapē - tā noķersi trūkstošus eksportētus failus.