Podstawy podstaw. Czyli wszystko o interfejsie Unity3d, oraz jego podstawowych funkcjach i możliwościach. Początek większego kursu w Unity3d, czyli Unity poradnik.
Jeżeli czytasz ten tekst, zakładam że interesuje Cię Game Development, czyli tworzenie gier. Zacznijmy od zera. Czym jest Unity3d? Jest to dość rozbudowany, darmowy silnik gier (game engine), który pozwoli Ci stworzyć dowolną grę komputerową. Jeśli na tym etapie nie wiesz czy lepsze dla Ciebie będzie 2D czy 3D, mam o tym poradnik. Oczywiście musisz mu dostarczyć modele, napisać skrypty itp. Jednak jest to narzędzie o dużych możliwościach, trzeba tylko poświęcić trochę czasu żeby je poznać.
Domyślam się że już teraz masz wiele pytań na temat tego silnika. Dlatego oferuję małe FAQ:
Kurs C#
Jeżeli do tej pory nie miałeś styczności z językami programowania i patrzenie na skrypty przyprawia Cię o ból głowy, stworzyłem prosty kurs dla opornych i leniwych. Nie zrobi z Ciebie programisty C#, ale pozwoli zrozumieć jak działają skrypty, jak się je pisze i do czego służą. Wszystko łopatologicznie i po najmniejszej linii oporu:
Kurs C# dla Leniwych pod Unity3d
Kompletne tutoriale:
Jak stworzyć grę w Unity
Unity3d – FAQ:
- Skąd mogę pobrać Unity3d?
Możesz to zrobić z oficjalnej strony Unity: http://unity3d.com/unity/download - Czy Unity3d jest darmowe?
Owszem. Sam silnik jest darmowy i pozwala na komercyjną publikację gier za darmo. Jednak w licencji jest zapis, który mówi że w momencie kiedy zarobisz na swoich produktach ponad $100 000, musisz kupić wersję pro, wartą $1000. Można też zdecydować się na abonament $85 miesięcznie. - W jakim języku mogę pisać skrypty w Unity3d?
Do wyboru masz 3 języki: C#, JavaScript, Boo. Przy czym C# ma aspirację do bycia oficjalnym językiem. - W jakim języku najlepiej pisać?
Wg. mnie i wielu osób C#. Dlaczego akurat on, już pisałem szerzej. - Skąd mogę wziąć grafikę do gry?
Oczywiście możesz ją zrobić sam za pomocą jakiegoś programu graficznego. Możesz skorzystać z jakiegoś portalu z assetami. Unity udostępnia również sklep z assetami (elementami gry), gdzie część dostępna jest za darmo: https://www.assetstore.unity3d.com/ Do tego w internecie znajdziesz wiele różnych innych darmowych grafik. - Na jakie platformy mogę stworzyć grę w Unity3d?
Chyba na wszystkie. Serio! Windows, Linux, Mac, Android, PS3, PS4, XBox360, XBox One, Przeglądarkowe, Blackberry. Obecnie jest 21 platfom! - Jakie programy polecasz do tworzenia assetów?
Grafika 2D: Darmowe: GIMP, Graphics Gale
Grafika 3D: Darmowe: Blender, Wings 3D, Milkshape 3D ; Płatne: 3D Studio Max, Maya, Zbrush
Muzyka: Darmowe: FL-Studio - Co potrzebuję żeby zacząć pracę z Unity3d?
Trochę dobrych chęci, czasu i zapału. Na początek przyda się jakiś tutorial np. taki jak ten. :) - Skąd wziąć pomysł na grę?
Z tego poradnika.
Unity3d – Słowniczek: Unity Guide
Zanim zaczniemy, wypadałoby przyswoić podstawowe pojęcia:
- GameObject – Jest to każdy element, znajdujący się w scenie gry. Postać gracza, kamera, beczka. Obiekty mogą zawierać w sobie kilka innych obiektów (być dla nich rodzicem – jest to relacja parent-child z ang. rodzic-dziecko). Występuje też obiekt pusty. Czyli coś co istnieje w świecie gry, ale go nie widać. Najczęściej służy do grupowania innych obiektów.
- Komponent – Jest to część składowa obiektu. Na jeden obiekt, może przypadać wiele komponentów i właściwie one definiują czym dany obiekt jest. Każdy komponent posiada swoje parametry (zmienne), które przechowują wartości definiujące komponent. Np. dla komponentu transform, opisującego położenie obiektu w świecie gry, zmiennymi będą położenie na osiach x, y, z. Mówiąc najprościej: Komponenty definiują obiekt.
- Assety (Zasoby) – Najprościej można powiedzieć, że zasobami jest wszystko z czego będziemy budować grę: Sceny, prefabrykaty, tekstury, dźwięki itd. To wszystko możemy znaleźć w panelu Project.
- Scene (Scena) – To pojedynczy obszar gry. Np. jeden z jej poziomów, czy obszar, który ma się załadować niezależnie od reszty. (Menu gry, może również być poziomem).
- Prefab (Prefabrykaty) – Jeżeli jakiś model pojawia się w grze często lub możemy potrzebować jego nieograniczoną ilość, np. pocisk, czy przeciwnik, tworzymy wtedy prefabrykat. Jest to matryca, na podstawie, której, Unity potrafi stworzyć dowolną ilość takich obiektów w grze, w dowolnym miejscu i czasie.
- Skrypty – Czyli kod napisany w jednym z dozwolonych w Unity języków (C#, JavaScript, Boo). To one dają moc sprawczą naszej grze. W głównej mierze, odpowiadają za to że możemy z grą prowadzić interakcję. Skrypty w Unity3d możemy edytować w domyślnym IDE jakim jest MonoDevelop. Osobiście go lubię i nie narzekam. Aby go uruchomić, wystarczy dwukrotnie kliknąć na skrypt w panelu Project.
- Interface – Czyli ogólny wygląd programu, omówiony szczegółowo w następnym punkcie.
Tworzenie projektu
Załóżmy, że pobrałeś Unity 5.0 i uruchomiłeś je. Pierwsze okienko jakie zobaczysz, to coś takiego:
Co tutaj mamy? Na samym środku, mamy listę ostatnio otwieranych projektów. W górnym panelu po lewej są dwie zakładki. Projects, czyli ta w której jesteśmy, oraz Get Started, czyli krótki filmik jak zacząć z Unity.
Po prawej są dwa przyciski. Open other – pozwala otworzyć już istniejący projekt (jeżeli został napisany w poprzedniej wersji Unity, silnik sam dokona konwersji!). New project, tworzy nowy projekt – zaraz to omówimy.
Na dole mamy kilka linków, do społeczności, dokumentacji i oficjalnych (po angielsku) tutoriali Unity.
Jeżeli wybrałeś opcję “New project”, pojawi Ci się takie okno. Opcje są banalne. Podajesz nazwę projektu, lokację na dysku dla projektu, perspektywę w jakiej będziesz tworzyć grę (2D lub 3D). Czym one się różnią opisałem dokładniej w innym artykule. Ostatnia opcja to Asset packages. Czyli domyślne paczki assetów, dostarczone przez Unity. Są bardzo przydatne i wygodne. Jeżeli klikniesz ten przycisk, trafisz na następujące okienko:
Tutaj, możemy sobie zwyczajnie pozaznaczać, jakie pakiety nas interesują. Nie bój się, jeśli czegoś zapomnisz, da się to dodać później.
Unity3d – Interface
Zacznijmy od budowy interface’u programu. Bez tej elementarnej wiedzy nie mamy się za co zabierać.
Obrazek powyżej przedstawia nam całe okno programu. Każdemu elementowi (panelowi) przyjrzymy się z bliska i każdy z nich opiszę oddzielnie.
Panel Scene (Scena). Jest to nasza piaskownica. Tutaj wrzucamy wszystkie elementy gry i układamy je w spójną całość. W prawym górnym rogu mamy różę kierunków, której możemy użyć do nawigacji poza typowym sterowaniem (Sterowanie omówię w późniejszym podrozdziale). U samej góry mamy kilka przycisków.
- Tryb rysowania – Domyślnie z teksturami. Trybem możemy manipulować, jeśli interesuje nas jakiś inny aspekt gry. Np. chcemy zobaczyć krawędzie modeli.
- Wymiar – Od wersji 4.0 Unity3d dostarcza narzędzia developerskie 2D. Przycisk ten pozwala przełączyć się na tryb 2D aby uprościć nawigację, gdy robimy grę korzystającą z 2 wymiarów.
- Oświetlenie – Umożliwia włączenie lub wyłączenie oświetlenia.
- Dźwięk – Pozwala wyciszyć dźwięki.
- Efekty – Pozwala ukryć efekty jak SkyBox czy flary czy mgłę.
- Gizmos – Przycisk po prawej odpowiada za wyświetlanie ikonek z podpowiedziami. Na screenie widać małą ikonkę kamery. W opcji Gizmos możemy zmienić rozmiar tych ikonek, albo wyłączyć wyświetlanie niektórych z nich itp.
Panel Game (Gra). Jest on trochę analogiczny do panelu sceny. Różnicą jest fakt, że to co zobaczymy w tym okienku, jest tym samym co zobaczy gracza w momencie grania. Dokładniej jest to widok z kamery ustawionej jako kamera główna. Mamy tutaj tylko kilka ustawień:
- Aspect Ratio – Czyli proporcja ekranu. Możemy sobie sobaczyć, jak gra będzie wyglądała na innej rozdzielczości niż nasza.
- Maximize On Play – Rozszerza okno gry na cały ekran, w momencie jej uruchomienia.
- Mute Audio – Po prostu wyłącza dźwięk w grze.
- Stats – Pokazuje statystyki gry, takie jak np. ilość klatek na sekundę (Frame Per Second – FPS).
- Gizmos – Tak jak w przypadku sceny, pozwala ukryć lub zmienić ustawienia wyświetlania ikonek.
Panel Project (Projekt) – Ten panel nie wymaga zbytniego komentarza bo jest najbardziej oczywisty: Są to po prostu wszystkie pliki, przypisane do naszego projektu znajdujące się na dysku. Możemy je przeglądać, filtrować (Do tego służy pasek wyszukiwania u góry), oraz dodawać nowe (Przycisk Create po lewej).
Panel Console (Konsola) – Ten panel jest nam bardzo przydatny gdy zajmujemy się pisaniem skryptów. To tutaj zostaniemy poinformowani o wszystkich błędach, oraz zostaną tu wyświetlone dane pomocnicze, gdy sobie je wypiszemy za pomocą komendy Debug.Log.
- Clear – Czyści panel.
- Collapse – Przewija zawartość panelu do najnowszych błędów.
- Clear On Play – Czyści panel, przy każdym uruchomieniu gry.
- Error Pause – Pauzuje grę, gdy pojawi się jakiś błąd.
Przyciski z prawej strony służą do filtrowania powiadomień, kolejno: Informacje (Info), Ostrzeżenia (Warning), Błędy (Error).
Panel Hierarchy (Hierarchia) – Jeden z dwóch ważniejszych paneli w grze. Mamy tutaj oznaczone wszystkie elementy składowe będące na scenie. Zaznaczone mamy ich zawieranie (Tutaj: First Person Controller, posiada pod sobą dwa obiekty podrzędne: Graphics oraz Main Camera). Zaznaczone też mamy typy obiektów. Zwykłe obiekty są zaznaczone na czarno. Niebieskie są to Prefabrykaty. Możemy tutaj również wyszukiwać, oraz tworzyć nowe obiekty.
Panel Inspector (Inspektor) – Chyba najważniejszy z paneli. W nim zawierają się wszystkie informację o danym obiekcie. Jego nazwa, tag, warstwa na której się znajduje oraz komponenty ze swoimi parametrami. Wygląda bardzo skomplikowanie, ale nie wszystkiego zawsze użyjesz.
Unity3d – Podstawowe funkcje i sterowanie
Sterowanie
Najbardziej podstawową kwestią jest sterowanie: W górnym lewym rogu ekranu, mamy do dyspozycji 5 przycisków
- Hand (ręka ; skrót: Q) – Służy do przemieszczania się po panelu sceny. Klikając lewy klawisz myszy, możemy przesuwać kamerę, zaś klikając prawym “rozglądać się”. Jeśli trzymamy prawy klawisz myszy, możemy też sterować za pomocą klawiszy: WSADQE. Gdzie: WS to przybliżanie i oddalanie, a ADQE, to poruszanie kamerą w linii prostej. Jeżeli przytrzymamy klawisz Alt i wtedy klikniemy prawy klawisz myszy, możemy zoomować, ale to samo osiągamy kółkiem myszy.
- Translate (translacja ; skrót: W) – Służy do manipulacji obiektami w oknie sceny. Możemy wybrać obiekt i zmienić jego położenie przeciągając, lub korzystając z uchwytów.
- Rotate (obrót ; skrót: E) – Również pozwala na manipulacje obiektem, jednak tym razem chodzi o jego obrót.
- Scale (skala ; skrót: R) – Jak wyżej, jednak chodzi o skalowanie.
- Transform (przekształcenie swobodne ; skrót: T) – Najbardziej ogólne przekształcenie obiektu. Widzimy zaznaczone jego 4 rogi, którymi możemy swobodnie manipulować.
Dwa dodatkowe przyciski obok pozwalają zmienić punk zaczepienia lub tryb. Punkt zaczepienia można wybrać jako “Center” albo “Pivot” czyli środek obiektu lub podstawa. Najwyraźniej widać o co chodzi, gdy wybierzesz sobie narzędzie translacji, zaznaczysz jakiś obiekt i pozmieniasz tryb. Druga opcja to czy rotacja obiektu ma się odbywać po jego lokalnych osiach, czy po osiach globalnych. Co to znaczy? Jeśli obiekt jest childem innego obiektu, to jego rotacja odbywa się względem obiektu macierzystego, zmieniając tę opcję, można zmusić go do obrotu względem świata.
Jak widać, podstawowe narzędzia odnoszą się do podstawowego komponentu obiektów, jakim jest komponent: Transform. Przydatną sztuczką jest jeszcze korzystanie z klawisza F. Jeżeli mamy zaznaczony dowolny obiekt, kliknięcie F w obszarze scene, wycentruje nam obraz na tym właśnie obiekcie (przydatne, do znajdowania zagubionych obiektów)
Uruchamianie gry
Ten mały niepozorny panel, pozwala nam testować naszą grę. Ikonki są dość jednoznaczne. Pierwsza uruchamia grę – po uruchomieniu zmienia się w kwadrat stopujący grę. Drugi przycisk to pauza, a ostatni to uruchomienie jednej klatki gry.
Uwaga odnośnie tego elementu jest taka, że w trakcie gry można zmieniać parametry obiektów w niej występujących za pomocą panelu Inspector. Np. w czasie gry zmienić obrażenia zadawane przez broń. Jednak po wyjściu z trybu grania do trybu edycji, ustawienia zostaną przywrócone do tych sprzed uruchomienia gry.
Warstywy
W Unity jak w różnych programach graficznych mamy do czynienia z warstwami. Pierwszy z paneli pozwala nam na ustawienie, które warstwy mają się wyświetlać. Warstwy sami możemy tworzyć i ustawiać obiekty na danych warstwach. Layout to przycisk pozwalający szybko zmienić układ okienek edytora Unity na jeden z predefiniowanych.
Dodawanie obiektów
Kolejnymi podstawowymi funkcjami jest dodawanie obiektów i komponentów. Możemy to zrobić na wiele sposobów!
- Menu – Podstawowym w obu przypadkach skorzystanie jest z menu na samej górze (Pola gameObject i Component). Aby dodać komponent, w tej metodzie, trzeba mieć zaznaczony obiekt.
- Przeciągnij i upuść (Drag & Drop) – Tyle wystarczy! Aby dodać obiekt, wystarczy przeciągnąć go z panelu Projekt do Sceny lub do Panelu Hierarchii. Analogicznie, aby dodać komponent (najczęściej skrypt), wystarczy go przeciągnąć z panelu Projekt, na odpowiedni obiekt w panelu Hierarchii, panelu sceny lub do panelu Inspektor. To ostatnie zadziała, jeżeli akurat mamy zaznaczony dany obiekt – inaczej nie będziemy widzieć jego komponentów w panelu Inspector.
Ta technika działa również jeśli chcemy do dowolnej zmiennej jakiegoś komponentu przypisać wartość. (Np. Zmienną w skrypcie jest typu AudioSource, więc odpowiedni dźwięk, możemy zwyczajnie przeciągnąć w odpowiednie miejsce). - Przycisk Create – Na zdjęciach interfaceu, były widoczne przyciski Create dla panelu Hierarchii oraz Projektu. Z nich również można skorzystać aby dodać obiekt.
- Przycisk Add Component – Na jednym ze zdjęć, widać było panel Inspektora, gdzie na samym dole był wspomniany przycisk. Jak się pewnie domyślacie, również się nada.
Oczywiście nie trzeba znać wszystkich metod. Wystarczy wybrać sobie najwygodniejsze!
Zmiana nazwy obiektu
Następna warta wspomnienia rzecz to zmiana nazwy plików i obiektów. Na to również jest wiele sposobów. Opiszę dwa, z których ja korzystam.
- Przycisk F2 – Jeśli mamy zaznaczony obiekt, klikamy F2 i możemy zmieniać nazwę.
- Dwukrotne kliknięcie myszą – między kliknięciami powinna być lekka przerwa. (Dwukrotne szybkie kliknięcie, wycentruje nam obiekt w panelu scene!)
Tutorial – FAQ
- Czemu tutorial nie jest w formie wideo?
Myślałem o tym i możliwe że będę dokładał wersję wideo, jeśli zapanuję nad sprzętem i wymyśle na to fajną i ciekawą formę. - Czym to się różni od Unity3d QuickTip?
W Unity3d QuickTip, rozwiązuje proste problemy oderwane od całej otoczki. Tutaj chce stworzyć spójny kurs. - Co zrobić aby być na bieżąco?
Możesz obserwować mnie na FaceBooku, Google+ lub Twitterze. Nowe wpisy są tam wrzucane zaraz po pojawieniu się na blogu. Linki do obserwacji znajdziesz na stronie “Współpraca“, albo w stopce strony. - Co jeśli mam pytania/sugestie/uwagi?
Komentuj na blogu lub na FaceBooku, postaram się odpowiedzieć.