Unity to jeden z najpopularniejszych silników gier, ceniony za przyjazność dla początkujących i ogromne możliwości. Umożliwia tworzenie gier na różne platformy – od PC po smartfony – a jego siłą jest między innymi to, że do pisania logiki gry wykorzystuje język C#. Dlaczego to ważne? Ponieważ C# jest nowoczesnym, stosunkowo prostym do nauki językiem obiektowym, którego znajomość przydaje się nie tylko w gamedevie, ale i w tworzeniu aplikacji biznesowych (np. w .NET). W tym artykule wyjaśnię, jak zacząć przygodę z Unity, poznać podstawy C# w kontekście tworzenia gier i napisać swój pierwszy skrypt.
Unity – silnik gier przyjazny dla początkujących
Czym jest Unity? Unity to gotowe środowisko do tworzenia gier 2D i 3D. Wiele popularnych tytułów (szczególnie na urządzenia mobilne) powstało właśnie w Unity. Silnik ten oferuje graficzny edytor – możesz budować sceny z obiektów (np. postaci, przedmiotów, terenów) dosłownie metodą "przeciągnij i upuść". Dzięki temu nawet bez doświadczenia łatwo stworzysz prostą scenę gry. Unity zapewnia też fizykę, oświetlenie, dźwięk i inne systemy gotowe do użycia – wystarczy je skonfigurować. Dla początkującego oznacza to, że dużo zrobisz bez potrzeby pisania kodu, co zachęca do eksperymentów.
Obiekty i komponenty: Kluczową koncepcją Unity jest system GameObject + Component. Każdy element gry w scenie (np. postać gracza, przeciwnik, pocisk) jest obiektem (GameObjectem). Obiekt sam w sobie jest "pusty", nabiera cech dopiero przez komponenty. Przykładowo, komponent Renderer odpowiada za wygląd (grafikę) obiektu, komponent Rigidbody może dodać mu fizykę (grawitacja, kolizje), a komponent Audio Source pozwoli odtwarzać dźwięki. Skrypty w C# są właśnie kolejnym typem komponentu – dodają obiektom zachowanie. Pisząc skrypt możesz zdefiniować, co obiekt ma robić (np. poruszać się, reagować na sterowanie, znikać po zderzeniu itd.). Taki skrypt dołączasz jako komponent do wybranego obiektu w edytorze Unity.
Dlaczego C# w Unity? Unity początkowo obsługiwało różne języki, ale obecnie C# jest głównym językiem skryptowym. Ma on czytelną składnię (podobną do Java czy C++), duże możliwości i jest stale rozwijany. Dla twórcy gier ważne jest to, że C# daje dostęp do pełnego API Unity – czyli wszystkich funkcji silnika. Dzięki skryptom C# możesz kontrolować przebieg gry: ruchy postaci, zasady rozgrywki, interakcje z graczem, generowanie poziomów i wszystko, co wykracza poza statyczne ustawienia w edytorze. Warto dodać, że nauka C# to inwestycja na przyszłość: to ten sam język, którego używa się w aplikacjach .NET, więc opanowując go, otwierasz sobie drzwi także do świata programowania poza gamedevem.
Tworzenie pierwszego skryptu w C#
Przejdźmy do praktyki – stwórzmy prosty skrypt w Unity. Załóżmy, że masz już zainstalowany Unity (polecam korzystać z Unity Hub, który ułatwia zarządzanie wersjami i projektami). Gdy utworzysz nowy projekt 3D, zobaczysz domyślną scenę z kamerą i światłem. Czas dodać własny obiekt i napisać dla niego skrypt:
1. Dodanie obiektu do sceny: W Hierarchii (Hierarchy) kliknij prawym przyciskiem i wybierz np. 3D Object > Cube, aby dodać prostopadłościan. Pojawi się on na scenie – to będzie nasz przykład obiektu, którym chcemy sterować.
2. Utworzenie skryptu: Z zaznaczonym obiektem Cube kliknij Add Component w Inspektorze (Inspector) i wybierz New Script. Nazwij skrypt, np. MovingObject. Unity utworzy nowy plik C# o tej nazwie i dołączy go do obiektu.
3. Edytowanie skryptu: Dwuklik na nowy komponent skryptu otworzy go w edytorze kodu (domyślnie Visual Studio lub VS Code). Zobaczysz wygenerowaną klasę dziedziczącą z MonoBehaviour – to podstawowa klasa bazowa dla wszystkich skryptów w Unity. Na start masz już puste metody Start() i Update().
Teraz dodajmy prosty kod, który wypisze komunikat przy uruchomieniu gry i sprawi, że nasz obiekt będzie się przesuwał do przodu:
using UnityEngine;
public class MovingObject : MonoBehaviour
{
public float speed = 2f;
void Start()
{
Debug.Log("Witaj w Unity!"); /* Komunikat w konsoli na starcie */
}
void Update()
{
/* Przesunięcie obiektu do przodu z zadaną prędkością */
transform.Translate(Vector3.forward * speed * Time.deltaTime);
}
}Po zapisaniu skryptu wróć do Unity. Upewnij się, że skrypt MovingObject jest przypisany jako komponent do naszego obiektu (powinien widnieć w Inspektorze przy obiekcie Cube). Teraz kliknij przycisk Play u góry edytora, aby uruchomić grę w trybie podglądu. Co się stanie? W konsoli Unity pojawi się napis "Witaj w Unity!" (to wynik działania Debug.Log w funkcji Start(), która wykonuje się raz na początku). Ponadto nasz obiekt zacznie się przesuwać do przodu – to efekt kodu w Update(), który jest wywoływany co klatkę (frame) i przy każdej klatce przesuwa obiekt o niewielki krok. Użycie Time.deltaTime zapewnia, że ruch będzie płynny i niezależny od szybkości klatek na sekundę. Warto zauważyć, że zmienną speed zdefiniowaliśmy jako publiczną – dzięki temu w Inspektorze Unity możesz łatwo zmieniać jej wartość bez edycji kodu (np. zwiększyć prędkość ruchu obiektu).
To był bardzo prosty przykład, ale pokazuje on istotę pracy z Unity: łączenie ustawień w edytorze z pisaniem skryptów w C#. W ten sposób możesz tworzyć coraz bardziej złożone zachowania. Na początku warto eksperymentować: spróbuj zmienić kierunek ruchu (np. Vector3.up żeby obiekt lewitował w górę) albo dodać inną akcję (np. obrót obiektu za pomocą transform.Rotate). Ucząc się metod z API Unity (klasa Transform ma ich sporo) szybko odkryjesz, jak wiele można zrobić kilkoma linijkami kodu.
Podsumowanie i co dalej?
Pierwszy krok w Unity i C# masz za sobą – wiesz już, że Unity umożliwia łatwe tworzenie sceny z obiektów, a C# pozwala tchnąć w te obiekty życie poprzez skrypty. Oczywiście to dopiero początek drogi. Co dalej? Ćwicz regularnie – najlepszym sposobem nauki jest tworzenie prostych gier lub prototypów: zacznij od czegoś małego, jak gra typu pong czy prosty platformer. Korzystaj z darmowych materiałów: oficjalna dokumentacja Unity oraz Unity Learn oferują mnóstwo tutoriali dla początkujących. Warto też dołączyć do społeczności (fora, grupy na Facebooku, Discord dla developerów), gdzie możesz zadawać pytania i dzielić się postępami.
Na koniec, jeśli poważnie myślisz o karierze w programowaniu (nie tylko gier), rozważ wsparcie w postaci zorganizowanego szkolenia online. Programowanie w C# przydaje się w wielu dziedzinach, a solidne podstawy ułatwią Ci zarówno tworzenie gier w Unity, jak i pracę nad aplikacjami biznesowymi. Dlatego warto rozważyć dołączenie do mojego kompletnego szkolenia online Zostań Programistą .NET (droga od zera do pracy jako młodszy programista C#/.NET w 3 miesiące). To kompleksowe szkolenie, które krok po kroku nauczy Cię fundamentów C# i .NET, dając solidną bazę do rozpoczęcia kariery programisty. Niezależnie od tego, jaką ścieżkę nauki wybierzesz, życzę wytrwałości i świetnej zabawy przy tworzeniu własnych projektów w Unity.