1.4 Pirmais C# skripts: mainīgie un izvade
Stundas uzdevums: Izveidot Paddle C# klasi, pārbaudīt datu tipus un atsevišķu scēnas instanču īpašības.
80 min plāns: Ievads (~10 min) · raketes klase (~20 min) · mainīgie un instances (~25 min) · pārbaude un skaidrojums (~20 min) · saglabāšana (~5 min).
Pirms sāc: BuildCheck izdruka no 1.3 darbojas. Tagad rakstīsi C# klasi pašai raketei. Šodien pārbaudīsi tās datus; kustības metodi pievienosi 1.5 stundā.
Darba ritms: pēc katra uzdevuma saglabā un pārbaudi rezultātu. Kad projektam pievienots C# skripts, pirms palaišanas nospied Build. Kļūdu gadījumā sāc ar pirmo sarkano kļūdu, nevis nākamo uzdevumu.
Teorija: klase un dati, kurus izmantos spēle
using Godot; ļauj izmantot Godot tipus. public partial class Paddle : CharacterBody2D deklarē klasi, kas atbilst Paddle scēnas saknes tipam. Faila nosaukums ir Paddle.cs, bet šīs klases instances Main scēnā drīkst saukties PaddleLeft un PaddleRight.
_Ready() darbojas, kad mezgls ir gatavs scēnā. GD.Print izvada tekstu; $"...{Speed}..." ievieto mainīgā vērtību virknē. [Export] ļauj mainīt vērtību Inspector pēc Build. Inspector saglabāta vērtība ir svarīgāka par koda noklusējumu.
| Tips | Piemērs spēlē |
|---|---|
float | Speed = 420.0f — ātrums; f norāda float literāli. |
string | InputUp = "p1_up" — darbības nosaukums. |
bool | IsActive = true — vai rakete drīkst kustēties. |
int | Vesels punktu skaits, ko 1.6 glabās Game klase. |
Vector2 | Position vai Velocity ar X un Y komponentēm. |
1. uzdevums -
Pievieno Paddle.cs kopīgajai raketes scēnai
- Atver
Paddle.tscn, izvēlies tās CharacterBody2D sakni un Attach Script → C# →res://Scripts/Paddle.cs. Aizstāj automātiski ģenerēto kustības paraugu ar pilno kodu zemāk. - Pārbaudi Speed, InputUp, InputDown un IsActive.
{ get; set; }ir īpašība, kuru cits skripts vēlāk varēs nolasīt un mainīt, lai pēc uzvaras apturētu raketes. - Saglabā un Build. Atver Main.tscn un ar F5 pārbaudi Output: jābūt divām rindām, vienai no PaddleLeft, otrai no PaddleRight.
- Pārliecinies, ka projektā ir tikai viens Paddle.cs; abas scēnas instances izmanto vienu klasi, bet katrai ir savas vērtības.
1.4 Paddle.cs — pilns fails salīdzināšanai
Lejupielādēt Paddle.cs. Aizstāj tikai atbilstošā faila saturu; neveido otru tāda paša nosaukuma klasi.
using Godot;
public partial class Paddle : CharacterBody2D
{
[Export] public float Speed = 420.0f;
[Export] public string InputUp = "p1_up";
[Export] public string InputDown = "p1_down";
public bool IsActive { get; set; } = true;
public override void _Ready()
{
GD.Print($"{Name}: ātrums {Speed}, vadība {InputUp}/{InputDown}, aktīva {IsActive}");
}
}
Gatavs, kad: abas raketes izdrukā savu mezgla nosaukumu un datus; izskats Main scēnā ir saglabāts.
2. uzdevums -
Iestati katrai raketei savus datus
- Main scēnā atlasi PaddleLeft. Inspector pēc Build redzami skripta lauki: Speed =
420, Input Up =p1_up, Input Down =p1_down. - Atlasi PaddleRight un tikai šai instancei iestati Input Up =
p2_up, Input Down =p2_down. Pati Input Map tiks izveidota 1.5 stundā. - Uz laiku PaddleRight Speed maini uz 300. Palaid F5: izdrukā kreisajai paliek 420, labajai ir 300. Atjauno labajai 420. Tas apliecina, ka kopīgs skripts nenozīmē kopīgu lauka vērtību.
- Paddle.cs _Ready beigās pievieno
GD.Print($"Pozīcija: {Position}");. Main scēnā pozīcijām jābūt (60,360) un (1220,360). Pārbaudi ar F5, tad šo papildu izdruku noņem.
Gatavs, kad: abām instancēm ir atšķirīgi ievades nosaukumi, vienāds ātrums un pareizas pozīcijas.
3. uzdevums -
Paskaidro vērtības un saglabā strādājošo versiju
- README.md izveido tabulu: lauks, tips, vērtība kreisajai raketei, vērtība labajai raketei un tā nozīme spēlē.
- _Ready sākumā uz laiku ievieto
int testScore = 0;, tadtestScore += 1;unGD.Print(testScore);. Katrā jaunā F5 palaišanā katra rakete izdrukā 1, nevis turpina iepriekšējo skaitu. Pieraksti, kāpēc. Pēc tam šīs trīs pārbaudes rindas noņem. - Paskaidro atšķirību starp Speed noklusējumu C# kodā un Inspector saglabāto vērtību. Ja koda maiņa neparādās, apskati instances īpašības; ar atiestatīšanas ikonu var atjaunot noklusējumu.
- No Main.tscn noņem diagnostikas BuildCheck mezglu, jo vide jau pārbaudīta; BuildCheck.cs failu drīkst paturēt. Saglabā, Build, F5 un pārliecinies, ka palikušas divas raketes izdrukas. Veic Commit un Push.
Gatavs, kad: projekts paliek bez pagaidu eksperimentiem, un katras raketes dati ir saprotami un pārbaudīti.
Papildu uzdevums — salīdzini ar Python
README.md salīdzini print un GD.Print, mainīgā tipa deklarēšanu, true un True, figūriekavas un atkāpes. Pie katra C# piemēra paskaidro, ko tas dara tavas raketes klasē.
Ko sagatavo
Stundas mērķis: raketes scēnai ir reāla C# klase ar nākamajā stundā izmantojamiem datiem.
GitHub krātuvē jābūt:
Scripts/Paddle.cs, atjaunināti Paddle.tscn un Main.tscn.- README.md datu tabula un Inspector skaidrojums; abu rakešu izdrukas.
Saglabā projekta iestatījumus, izveidotās scēnas un resursus; no 1.3 stundas arī C# skriptus un projekta failus (.csproj u.c.). .gitignore ieraksti .godot/, bin/ un obj/ katru savā rindā.
Kā iesniedz: veic commit un push. Skolotāja norādītajā vietā iesniedz GitHub krātuves saiti; README.md un pārbaudes pierādījumiem jābūt krātuvē.
Ja kaut kas nestrādā
| Pazīme | Ko pārbaudīt |
|---|---|
| Inspector lauki neparādās | Saglabā failu, Build un atlasi raketes sakni, nevis Visual. |
| Abas izdrukā p1_up | PaddleRight instancei Main scēnā iestati p2_up/p2_down; kopīgajai Paddle.tscn scēnai atstāj p1 nosaukumus. |
| Cannot find class Paddle | Fails Paddle.cs, klase Paddle, mantojums CharacterBody2D; pārbaudi partial un pirmo Build kļūdu. |
| Redzama tikai viena raketes izdruka | Palaid Main ar F5, nevis vienu Paddle.tscn ar F6. |