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:
Następnie w celu dodania skryptu klikamy na “Assets” w panelu “Project” i wybieramy Create->C# Script:
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:
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:
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:
Parokrotnie piszesz o ramce renderowania, co jest nie do końca prawdą ;). To po prostu ramka, a w pojedynczej ramce odbywa się między innymi renderowanie.