Category Archives: GameDev

Unity 3d – wprowadzenie do skryptów

Dzisiaj napiszemy nasz pierwszy skrypt w Unity 3d.

Najpierw dodajmy jakiś element na scene, który potem będziemy mogli obracać za pomocą skryptu. W tym celu z menu głównego wybieramy  GameObject->3d Object-> Cube:

1

Następnie w celu dodania skryptu klikamy na “Assets” w panelu “Project” i wybieramy  Create->C# Script:

2

Zanim przejdziemy do edycji skryptu, warto upewnić się, że Visual Studio jest skonfigurowany jako narzędzie do pisania kodu. W tym celu wchodzimy do Edit->Preferences. External Script Editor powinien być ustawiony na VS:

3

Teraz możemy dwa razy kliknąć na skrypcie i Unity 3d odpali instancję Visual Studio w raz z szablonem nowo wygenerowanego skryptu:

public class SpinCube : MonoBehaviour {

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}

Nas interesuje wyłącznie metoda Update, która jest odpalana w każdej ramce renderowania. To właśnie tam będą znajdować się wszelkie transformacje. Jeśli chcemy obracać obiektem wtedy należy skorzystać z pola “transform”:

public class SpinCube : MonoBehaviour
{
	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update ()
	{
             transform.Rotate(0, 1, 0);	
	}
}

Właśnie napisaliśmy nasz pierwszy skrypt. Musimy jednak go doczepić do jakiegoś obiektu. W naszym przypadku będzie to dodany wcześniej sześcian. Wystarczy na niego kliknąć i po prostu przeciągnąć skrypt:

4

Od tego momentu klasa SpinCube będzie wykonana w każdej ramce renderowania. Oczywiście ten sam skrypt możemy doczepiać do różnych obiektów. Po naciśnięci przycisku “Play”, sześcian zacznie obracać się.

Zwykle skrypty przyjmują jakieś parametry wejściowe. W naszym przypadku może to być prędkość obracania. Z punktu widzenia C#, jest to zwykłe pole publiczne:

public class SpinCube : MonoBehaviour
{
        public int Speed;

	void Start () {
	
	}
	
	// Update is called once per frame
	void Update ()
	{
        transform.Rotate(0, Speed, 0);	
	}
}

Po ponownym kliknięciu obiektu, zobaczymy, że “Speed” jest teraz konfigurowalny:

5

Unity 3d – wprowadzenie

Dzisiaj zaczynam nowy cykl wpisów. Pamiętam jak po zaprzestaniu wspierania XNA szukałem nowego framework’a do tworzenia wizualizacji czy gier.

Kilka lat temu może nie było to jeszcze tak oczywiste, ale dzisiaj Unity3d jest pewnego typu standardem dla prostych gier. Unity3d to nie framework, ale cały silnik 2d\3d wraz z zestawem narzędzi. Istnieje kilka typów licencji, ale będę zajmował się wyłącznie unity personal, którego można ściągnąć z stąd.

Jedną z ważniejszych cech Unity to wieloplatformowość. Ten sam kod będzie działał zarówno na Windows, Linux, przeglądarce, iOS jak i na wielu innych platformach.

Na blogu będę oczywiście korzystać z C#, ale Unity wspiera jeszcze skrypty JavaScript. To jest blog programistyczny, dlatego większość postów będzie tego właśnie dotyczyła. Z tego względu, dużo uwagi poświęcę również testom jednostkowym. Przeglądając wiele tutorial’ow, zauważyłem, że ludzie często pomijają testy jak i separacje logiki od warstwy prezentacji. Myślę, że przez to, że wiele rzeczy można zrobić z edytora to bardzo łatwo popełnij błędy związane z zasadami S.O.L.I.D.

Jak wspomniałem, Unity 3d to nie pojedyncza biblioteka a zestaw narzędzi. Głównym elementem jest zatem edytor, od którego wszystko zaczyna się. Po instalacji unity z powyższego linka zobaczymy następujący edytor:
1

Na ekranie widzimy wiele paneli. Najprostszym sposobem jest po prostu spędzenie trochę i czasu  przetestowanie wszystkich menu. Najważniejsze elementy to “Scene”, “Game” oraz “Inspector”.

W pierwszym oknie, jak nie trudno domyślić się, mamy naszą “scenę” czyli świat, który budujemy. Na początku poruszanie się po scenie będzie kłopotliwe, a w raz z czasem, można się przyzwyczaić. W lewym górnym oknie do dyspozycji mamy następujący zestaw przycisków:
2

Bardzo często się z nich korzysta i dlatego warto zapamiętać skróty klawiszowe Q, W, E, R, T.

Pierwszy przycisk (Q), służy do nawigacji. Naciskając lewy przycisk na scenie będziemy mogli poruszać się po niej. Z kolei prawy przycisk myszy albo klawisz ‘ALT’ służy do obracania się. Tutaj warto również zwrócić uwagę na osie w prawym górnym rogu:
3

Pokazują one pozycje i orientację kamery na scenie.

Pozostałe przyciski (W, E, R, T) służą do zmiany pozycji, rotacji oraz skalowania zaznaczonego obiektu:
4

Kolejny ważny panel to “Game”. W tym panelu, nasza gra będzie renderowana. Gdy chcemy ją przetestować, wystarczy nacisnąć przycisk “Play” znajdujący się na górze:

5

Warto wspomnieć, że w dowolnym momencie możemy zatrzymać grę i zmienić parametry takie jak np. rotacja elementu. Za pomocą tego, w łatwy sposób na bieżącą możemy dostosowywać różne parametry do naszych potrzeb.

Wiem, że dzisiaj nie było programowania, ale w następnym wpisie zajmiemy się już Unity Scripting w C#.