Unity 3D

Unity 3D – Jak rozpocząć naukę

By on 22 lutego 2017

WSTĘP
Nauka Unity nigdy się nie kończy. Średnio co 2-3 miesiące wychodzi nowa wersja Unity, wraz z nowymi lub zmienionymi funkcjami, więc jeśli zdecydujesz się na Unity, to ciągle będziesz musiał się po trochu dokształcać, żeby nie zostać w tyle.

Ucz się zawsze najpierw jak najnowszej wersji. Nie wędruj zbyt daleko wstecz. Znajomość starszych wersji rzadko się przydaje. Projekty zapisane w nowszej wersji nie są kompatybilne ze starszą wersją Unity, przez co szybko zostaje zapomniana przez programistów.

Jeśli nigdy nie programowałeś wcześniej to nie będę Cię oszukiwał że przyjdzie to od razu, więc jeśli nie masz w sobie wystarczającego zaparcia i chęci żeby siąść do nauki przynajmniej 2-3 razy w tygodniu, przez około rok to daj sobie spokój już teraz, a czas wykorzystaj lepiej na zimne piwko z kolegami, zamiast dojść do tego samego wniosku za kilka tygodni.

Jeśli jest to dla Ciebie coś całkiem nowego nie bierz się od razu za zakup książek, które z doświadczenia wiem, potem zalegają u wielu osób na półkach pokryte grubą warstwą kurzu. Nawet jak jesteś wielkim antyfanem czytania w sieci to przynajmniej na początku zobacz czy to jest to co chciałbyś robić w życiu, a dopiero inwestuj pieniądze. Poza tym jeśli chcesz być programistą, czytania na monitorze i szukania informacji w sieci nie ominiesz.

TO CO NAJLEPSZE ヽ༼ຈل͜ຈ༽ノ
Unity pozwala na bardzo łatwy eksport na wiele platform:
-MOBILNE : iOS, Android, BlackBerry 10, Windows Phone, Tizen, Fire OS
-STANDALONE : Windows, Mac, Linux, Steam OS
-PRZEGLĄDARKA : WebGL, NaCl (do Unity 4.2), Flash (do Unity 4.5), Unity Web Player(do Unity 5.0),
-KONSOLE : PS3, PS4, PS VITA, PS Mobile, XBOX ONE, XBOX 360, Wii U, Nintendo 3DS, Nintendo Switch
-VR : Oculus Rift, Google Cardboard, Steam VR, Playstation VR, Gear VR, Microsoft Hololens, Daydream
-TV : Android TV, Samsung SMART TV, tvOS
-INNE : Facebook Gameroom

Tą samą scenę z grą można eksportować na wiele platform. Zazwyczaj zachodzi potrzeba jedynie bardzo drobnych modyfikacji, żeby przesiąść się z jednej na drugą, o ile wgl taka potrzeba istnieje.
Sam eksport gotowej sceny sprowadza się do 2-3 kliknięć, w tym jedno to wybór docelowej platformy.

Żeby móc eksportować aplikację na niektóre platformy potrzeba spełnić dodatkowe wymogi, takie jak bycie developerem danego typu konsoli i/lub jednorazowa instalacja wymaganego zestawu narzędzi(SDK) na komputerze z zainstalowanym Unity.

ŻEBY NIE BYŁO ŻE JEST TAK IDEALNIE ༼ つ ಥ_ಥ ༽つ
Gry stworzone w Unity jak w innych silnikach są wolniejsze niż te napisane np. w Visual Studio, dodatkowo zajmują więcej miejsca.
Dlaczego więc używa się Unity? Dlatego, że posiada ogromną ilość gotowych funkcji, po które wystarczy sięgnąć, zamiast pisać je od podstaw, a czas to wiadomo pieniądz.
Jednak gdy bardzo zależy nam na szybkości i skomplikowanie aplikacji nie jest duże to poszukałbym innej metody na napisanie jej.

Dodatkowo Unity bardziej jest nastawione na gry niż inne aplikacje i w tym kontekście ma większe wsparcie. Chcąc pisać użytkowe aplikacje musisz trochę więcej włożyć własnego wkładu.

CZYM WŁAŚCIWIE JEST UNITY? ( ͡ᵔ ͜ʖ ͡ᵔ )
Unity to silnik gier ze sporą ilością gotowych komponentów i wizualnym interfejsem wspierającym pracę z kodem.
Teoretycznie można by prawie każdą czynność dziejącą się w aplikacji Unity zapisać w postaci kodu. Poprzez kod wrzucalibyśmy modele obiektów na scenę. Nakazywalibyśmy im oddziaływać na siebie zgodnie z fizyką. Nasłuchiwać dźwięk z otoczenia itp. Jednak sporo czynności ułatwia interfejs graficzny. Zamiast żmudnie obliczać i ustawiać pozycję każdego drzewa na scenie poprzez kod można je ustawić przeciągając w wygodne dla nas miejsce kursorem na scenę. Jeśli chcemy żeby drzewo wydawało charakterystyczny szum to przeciągamy na nie odpowiedni komponent odpowiedzialny za źródło dźwięku. Można by podawać setki przykładów, ale generalnie chodzi o to że Unity wspomaga pracę z kodem. Niektóre czynności pomimo pozostawionego wyboru, szybciej po prostu wykonać wizualnie niż poprzez kod. Dlatego też bardzo ważne jest żeby sprawnie i ze zrozumieniem posługiwać się interfejsem Unity.

MATEMATYKA i FIZYKA..CZYLI KOSZMARY NIEJEDNEGO UCZNIA (╯︵╰,)
Matematyka i fizyka nierozłącznie związane są z programowaniem większości scen trójwymiarowych i niektórych dwuwymiarowych. Czym dalej będziesz się zagłębiał w algorytmikę, tym bardziej te dziedziny będą się zazębiać. Czym więcej nie uważałeś w szkole tym więcej czeka Cię do nadrobienia.
Zanim weźmiesz się za dalsze kroki przypomnij sobie albo nadrób chociaż podstawy matematyki: algebra, logika, podstawy statystyki, podstawy prawdopodobieństwa, stereometria, planimetria, przynajmniej jakaś podstawowe pojęcie o grafach, operacje na wektorach i podstawowe wzory fizyczne związane z poruszaniem się obiektu.
Dla odrobinę bardziej zaawansowanych przydają się również pochodne i różniczki, a dla jeszcze bardziej zaawansowanych kwaterniony.
Nie ucz się wzorów na pamięć. Zawsze możesz ich poszukać w internecie. Zamiast tego zajmij się ich zrozumieniem.

DO YOU SPEAK ENGLISH? ( ͠° ͟ʖ ͡°)
Niestety chcąc się uczyć Unity, języka angielskiego nie ominiesz. Nawet zaczynając naukę w języku polskim, przyjdzie taki moment, że będziesz musiał zajrzeć do anglojęzycznej dokumentacji. Z początku może być ciężko. Słownictwo jest bardzo specjalistyczne, którego nie uczą w szkołach. Jednak po nauczeniu się już kilkudziesięciu technicznych słówek okaże się że te teksty nie są wcale takie straszne i przypominają angielski co najwyżej na poziomie podstawowej matury.

Czy C# to C#? ﴾͡๏̯͡๏﴿
Unity na tą chwilę wspiera 2 języki : C#, UnityScript. Do wersji 4.6 wspierło także Boo, ale korzystał z niego tylko co dwusetny programista, więc postanowiono się w końcu z nim pożegnać.
Zdecydowanie dominuje C# posiadając około 80% rynku, pozostałe 20%, przypadło UnityScript. W obrębie jednego projektu, część kodu może być napisana w jednym, a druga część w drugim języku, więc najlepiej nauczyć się obu języków, żeby nie tracić zleceń, albo żeby nie ograniczać się do korzystania tylko z części gotowych rozwiązań znajdujących się w internecie, które proszą się o pobranie i wykorzystanie.

C# i UnityScript mogą korzystać z tego samego zestawu funkcji udostępnionych poprzez Unity. Różnią się za to składnią. Jednak znając jeden z języków, nauczenie się drugiego to kwestia maksymalnie kilkunastu godzin nauki.
UnityScript dużo częściej nazywany jest potocznie JavaScriptem, jednak nie ma z nim prawie nic wspólnego. UnityScript jest dostępny jedynie w obrębie Unity, dlatego o jego składni mniej wyczytasz, niż o C#, który jest dostępny również w VisualStudio. Najpierw polecam naukę C#.

Należy także zwrócić uwagę, że C# w Unity nie jest „pełnowartościowym” językiem. Jest to język skryptowy, czyli wykonywany wewnątrz danej aplikacji i przez to ograniczony.

Osoby mające problemy z językiem angielskim na początek mogę zacząć od nauki zupełnych podstaw C# dla VisualStudio. Ucząc się C# dla VisualStudio szczególną uwagę zwracaj na jego składnię, a nie na dostępne funkcjonalności, takie jak możliwość rysowania itp., bo Unity będzie posiadać w większości inny zestaw funkcji.
Jak już załapiesz o co chodzi, albo czujesz się na siłach to przerzuć się od razu na anglojęzyczny kurs okrojonego C# dla Unity.

Ostatnia i bardzo ważna rzecz jeśli chodzi o język programowania to należy pamiętać, że nie jest to książka fabularna i wszystkie źródła z których się uczymy czytamy bardzo powoli i wnikliwie, w razie potrzeby powtarzając zagadnienie, a czytanie przerywamy często ćwicząc zdobytą wiedzę. Pamiętaj, więcej czasu poświęcaj programowaniu, niż czytaniu o nim!

„I STAŁA SIĘ ŚWIATŁOŚĆ” ( ͡° ͜ʖ ͡°)
Wbudowane komponenty w Unity wspierają fizykę, grafikę, dźwięk i komunikację. W rzeczywistości są skryptami napisanymi przez programistów Unity i udostępnionymi do użytku w obrębie Unity. Dzięki nim na obiekty zacznie działać grawitacja, wykryta zostanie kolizja pomiędzy obiektami, obiekt będzie oświetlony, wróg będzie znał najkrótszą ścieżkę do gracz i wyświetlona zostanie stan życia bohatera. Aplikacja bez komponentów po prostu nie istnieje, więc regularnie korzystając z dokumentacji poznawaj ich jak najwięcej.

ALEŻ TO JEST NUDNE… ( ͠° ͟ʖ ͡°)
Z doświadczenia wiem że ludzie lepiej przyswajają na początku wizualne aspekty tworzenia aplikacji, a nie pisanie kodu, bo dla wielu jest to nudne i męczące. Efekty wizualne są szybko zauważalne na scenie, a ich tworzenie przypomina często zabawę. Unity posiada wbudowane narzędzie do tworzenia terenu i najlepiej od tego zacznij. Dodaj oświetlenie, wymodeluj prosty teren z górami i korytem rzeki, oteksturuj go, dodaj do terenu wodę, wstaw drzewa i trawę, dodaj niebo. Dodaj Character Controller na scenę, odpal grę i ciesz się z możliwości podziwiania swojej własnej mapy, chodząc po niej. Czy to nie super?
Dzięki temu nauczysz się interfejsu Unity i roli podstawowych komponentów. Jak już to ogarniesz to weź się za pisanie kodu.

ALE JA JESTEM TYLKO BIEDNYM STUDENTEM ಠ╭╮ಠ
Unity posiada za równo darmową i płatną wersję tzw. Unity PRO. Zajmij się tylko podstawowym, darmowym Unity. Jak już ogarniesz je w pełni zdecyduj czy chcesz zakupić rozszerzoną wersję. No i weź się w końcu za zarabianie [̲̅$̲̅(̲̅ ͡° ͜ʖ ͡°̲̅)̲̅$̲̅].

Tu znajdziesz porównanie podstawowych i płatnych licencji:
http://unity3d.com/unity/licenses
Na uwagę zasługuje, że podstawowe Unity może być używane do 100000 $ dochodu w skali roku podatkowego. Większość z was pewnie się zmieści w tym zakresie 😉

Z CZEGO CZERPAĆ WIEDZĘ ( ͡°╭͜ʖ╮͡° )
Podstawą wszelkiej twojej wiedzy jest dokumentacja Unity.

Zanim zaczniesz programować zapoznaj się z:
http://docs.unity3d.com/Manual/
Tu znajdziesz opisy poszczególnych komponentów, interfejsu itp.

Jeśli do nauki składni C# najpierw chcesz podejść w języku polskim to przerób te krótkie kursy:
http://www.centrumxp.pl/dotNet/20,kategoria,Kurs-C-cz-I.aspx
http://www.centrumxp.pl/dotNet/116,kategoria,Kurs-C-cz-II.aspx
Potem weź się za oficjalny tutorial od Unity dotyczący programowania:
https://unity3d.com/learn/tutorials/modules/beginner/scripting

Dla języka UnityScript(JavaScript) możesz skorzystać z mojego kursu, który będę publikował na tym blogu,a potem ewentualnie znów się przerzucić na wyżej wymieniony tutorial od Unity.

Pisząc skrypty posiłkuj się tą dokumentacją:
http://docs.unity3d.com/ScriptReference/
Po nauce składni poznaj jak największą ilość klas i ich składowych. Nie musisz od razu znać wszystkiego na pamięć. Musisz wiedzieć że istnieją klasy o takich funkcjach, wiedzieć gdzie ich szukać i jak ich używać na podstawie dokumentacji.

Następnie zacznij się uczyć zagadnień na konkretnych przykładach:
https://unity3d.com/learn/tutorials/modules
Najpierw przerób TOPICS, a potem możesz się wziąć za PROJECTS.

Jak to przerobisz przyjrzyj się jak wyglądają projekty innych osób. Ściągnij kilka darmowych:
https://www.assetstore.unity3d.com/en/
i ucz się z gotowych rozwiązań.

Poszukaj także wideotutoriale z jak najnowszą wersją Unity i czerp z nich wiedzę. Skupiaj się na zrozumieniu zagadnienia, a nie na powtarzaniu czynności które wykonuje lektor. Spróbuj za każdym razem zmodyfikować to co zobaczysz. Jeśli masz film ze skryptem chodzenia, to spróbuj zrobić tak żeby postać poruszała się szybciej niż na filmiku itp. Dzięki temu połączysz wszystko w jedną logiczną całość.

GDZIE SZUKAĆ POMOCY ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°)
Najłatwiej otrzymać pomoc od angielskiej społeczności Unity, bo tam jest największe skupisko użytkowników:
http://forum.unity3d.com/
http://answers.unity3d.com/

Pomoc można także otrzymać na:
http://forum.warsztat.gd/

To wszystko z mojej strony i mam nadzieję, że komuś pomogłem.

TAGS

LEAVE A COMMENT