Z cyklu poradnika Unity3D, pokazujemy jak pisać skrypty w C#. Omówimy jak deklarować zmienne i stałe, oraz metody Unity. Pokażemy przykłady wykorzystania.
Programowanie głównie określić można jako operowanie pewnymi danymi wejściowymi w celu osiągnięcia zamierzonego rezultatu. Nie inaczej jest w przypadku Unity i skryptów, które będziemy pisać. W tej części objaśnimy sobie czym są zmienne, stałe oraz metody. Czyli funkcjonalności, które umożliwiają wykonywanie operacji.
Zmienne
Zmienne, jak sama nazwa wskazuje, są danymi, których wartość może się zmieniać. To z nich korzystać będziemy najczęściej. Przykład: zdrowie bohatera, może przyjmować różne wartości przez całą rozgrywkę.
Każda zmienna musi mieć zadeklarowany typ. Inaczej zapiszemy zmienną, która przechowuje liczbę, a inaczej zmienną, która przechowuje ciąg znaków.
Deklaracja zmiennej wygląda następująco:
typZmiennej nazwaZmiennej;
Deklaracja odbywa się raz. Chcąc skorzystać później z zadeklarowanej zmiennej odwołujemy się po prostu po jej nazwie, i tak:
nazwaZmiennej = 2;
Przypisze do tej zmiennej wartość 2. Zakładając, że jej typ jest typem liczbowym.
Znak równości w programowaniu oznacza PRZYPISANIE wartości, nie sprawdzenie czy wartości są równe, jak mogłoby się wydawać.
Wartości zmiennych można dowolnie między sobą modyfikować, przypisywać, mnożyć, dzielić, dodawać, odejmować i tym podobne.
Zatem prawidłowe są zapisy takie jak:
zmienna1 = zmienna2; zmienna1 = zmienna2 + 3; zmienna 1 = (zmienna2 + zmienna3) / 2;
I tak dalej.
Możliwe jest również przypisanie zmiennej wartości domyślnej. Takie działanie nazywamy inicjalizacją. Dokonuje się tego przy deklaracji, w ten sposób:
typZmiennej nazwaZmiennej = wartośćDomyślna;
Lista podstawowych typów zmiennych
Typy numeryczne:
short – 16-bitowa liczba całkowita
int – 32-bitowa liczba całkowita
long – 64-bitowa liczba całkowita
float – liczba zmiennoprzecinkowa
double – liczba zmiennoprzecinkowa podwójnej precyzji
Typy short,int i long różnią się między sobą wielkością liczby, którą mogą przechowywać. Optymalnie jest dostosować typ zmiennej do naszych potrzeb, gdyż im większą liczbę przechowywać będzie zmienna, tym więcej miejsca na dysku będzie zajmować. To samo tyczy się typów float i double, które służą do przechowywania ułamków. Double zajmuje więcej miejsca w pamięci, ale jest precyzyjniejszy i przydaje się bardziej tam, gdzie ta precyzja jest niezbędna.
Typy znakowe:
String – ciąg znaków
char – pojedynczy znak ASCII
Zauważmy, że typ String oznaczamy wielką literą. Dzieje się tak, że nie jest on typem prostym jak reszta, a obiektem klasy String. Umieszczam go na tej liście jednak dlatego, że String jest jednym z najczęściej używanych typów.
Uwaga! W przypadku zmiennych znakowych ich zawartość należy umieścić w cudzysłowie („”), w ten sposób kompilator będzie w stanie rozróżnić zawartość ciągu znaków od innych słów kluczowych. Łączenie różnych ciągów znaków osiągamy jak dodawanie liczb, za pomocą znaku +.
Typ logiczny:
bool – wartość logiczna: prawda/fałsz
Typ bool również jest często używany i przyjmuje wartości true albo false.
Poniżej przykład kodu z użytymi różnymi zmiennymi i wypisanym na ekran efektem ich użycia.
Stałe
Stałe są danymi, które jak sama nazwa wskazuje, raz zainicjowane utrzymują swoją wartość i nie pozwalają jej zmienić. Przydaje się to w sytuacjach, gdy potrzebne są nam pewne dane, których dokładna wartość nie musi być doskonale znana na pamięć, albo jej wpisywanie jest uciążliwe. Wystarczy wtedy sobie zadeklarować ją jako stałą i problem z głowy. Doskonałym przykładem może być liczba PI.
Stałą definiujemy jak zmienną. Dodajemy jedynie przedrostek const.
Przykład:
const double Pi = 3.14159;
Metody
Metody są funkcjonalnościami posiadającymi deklarację pewnego zestawu zachowań.
Szablon podstawowej metody wygląda następująco:
typDanej nazwaMetody(typParametru nazwaParametru){ return Dana; }
Pomiędzy klamrą otwierającą a słówkiem kluczowym return zawieramy wszystkie działania, które nasza metoda ma wykonywać.
Po słówku kluczowym return należy umieścić daną, którą metoda będzie zwracać. Dana ta MUSI być takiego samego typu jak typ umieszczony przed deklaracją metody. Metoda typu int zwraca jakąś daną typu int, i tak dalej.
Jedynym odstępstwem od tej reguły jest typ void, unikalny dla metod. Void oznacza pusty, dlatego w tym przypadku nie używamy w ogóle słówka return i nie zwracamy niczego. Wbrew pozorom typ void jest bardzo często wykorzystywanym typem. Używa się go wtedy, gdy metoda ma przetwarzać jakiś kod ale nie przekazywać dalej żadnego wyniku.
Dodatkową ciekawostką są umieszczone w nawiasie parametry. Są to dane wejściowe do metody. Definiuje się je zupełnie jak zwykłe zmienne, oddzielając przecinkami kolejne parametry. Przykład wykorzystania metod z parametrami zamieszczę później.
Wykorzystanie metod
Metody deklaruje się raz, identycznie jak zmienne. Używać ich można później wielokrotnie, podobnie jak w przypadku zmiennych odwołując się jedynie po nazwach. Wykorzystując metodę należy wywołać ją po nazwie, następnie umieścić nawiasy ( w środku ewentualne wartości parametrów), a na końcu średnik. Wywołując metodę nie używamy już klamer, gdyż nie deklarujemy jej ciała. To dzieje się to tylko raz, przy deklaracji metody.
Uwaga! Wewnątrz ciała deklarowanej metody można wywoływać inne, zadeklarowane metody, ale nie można umieszczać deklaracji innych metod. To znaczy, że zapis:
void metoda2(){ void metoda1(){ } }
Jest błędny!
Natomiast zapis:
void metoda1(){ } void metoda2(){ metoda1(); }
Jest jak najbardziej poprawny!
Przykład deklaracji metod i ich wykorzystania
Wszystkie cztery przykłady wykonują dokładnie to samo – dodają do siebie dwie liczby. Różni się jedynie podejście. Polecam dokładnie je sobie przeanalizować na spokojnie.
Przykład 1
Przykład 2
Przykład 3
Przykład 3
Przejdź do poradnika Unity3D: