Hello World


6.1.2019
Kuten aina ohjelmoinnissa, Hello World on hyvä tapa aloittaa. Tuotos on seuraavan kaltainen:

http://dattari.fi/opettaja/Unity/HelloWorld2019/

Tässä harjoituksessa opittavia uusia asioita:

  • 3D-objektien käsittelyä
  • Tekstuurin lisäämisen
  • Objektin pyörittäminen skriptillä
  • Näytölle kirjoittaminen OnGUI()-funktion avulla
  • Skriptin lisääminen objektin komponentiksi
Käynnistä Unity ja luo uusi 3D-projekti. 3D-projekti eroaa 2D-projektista vain asettelussa, muuten 2D-projektitkin periaatteessa samanlaisia.

Luo Sceneen yksi kuutio (Gameobject | 3D Object | Cube). Varmista Game-näkymästä että kuutio näkyy kameran näkymässä. Siihen vaaditaan myös jonkinlaisen valon olemassaolo, voit katsoa löytyykö sellaista Hierarchyssä.

Tallenna Scene (File | Save).

Avaa jokin yksinkertainen piirto-ohjelma, esimerkiksi Paint, ja piirrä sillä  Hello World -teksti. Tee ainakin hienompi kuin minun tekeleeni alla:

Tallenna kuva .png -muodossa, ja siirrä se projektin Assets -kansioon, jolloin sen pitäisi näkyä Assetsissa:


Venytä nyt luomaasi Cubea siten, että se on yhden akselin suuntaisesti kooltaan nelinkertainen. Tämä onnistuu parhaiten valitsemalla kuutio Hierarchyssä, ja settamalla Inspectorissa sen Transform -komponentin Scalessa yksi akseli ykkösestä neloseksi. Raahaa vielä tekemäsi Hello World -kuva kuution komponentiksi Assetsista Inspectoriin.

Nyt Play-tilan pitäisi näyttää suurin piirtein tältä:


Ei haittaa vaikka teksti olisikin toistaiseksi väärin päin, kuutio asetetaan pyörimään, jolloin sen katselukulma vaihtuu.

Luo nyt uusi C# -skripti nimeltä Rotate. Avaa skriptieditori kaksoisklikkaamalla luotua skriptiä.

Nollasta aloitettu koodi sisältää aina yhden luokan (Class) joka on nimeltään sama kuin tiedosto jossa se sijaitsee (muuten se ei toimi). Luokassa on kaksi oletusfunktiota, Start() ja Update(). Start käydään läpi kerran kun objekti luodaan / alustetaan, Update käydään läpi jokaisella framella, eli jatkuvasti.

Luo luokkaan yksi muuttujamäärittely ennen funktiomäärittelyjä:

public float rotationSpeed = 4.0f;

Tuossa public tarkoittaa sitä, että muuttuja on säädettävissä myös suoraan editorista. Float tarkoittaa liukulukua, ja rotationSpeed on muuttujan nimi. Asetetaan oletukseksi nopeudeksi neljä.

Aseta seuraavaksi Updateen seuraavat rivit:

transform.Rotate(Vector3.up * (rotationSpeed * Time.deltaTime));

transform.Rotate(Vector3.left * (rotationSpeed * Time.deltaTime));

Nämä vaikuttavat suoraan objektin (sen missä tämä skripti on komponenttina) transform -komponentin rotate-ominaisuuteen, eli toinen pyörittää ylöspäin, toinen vasemmalle päin. Eli kyseinen kulma vaihtuu kuluneen ajan ja pyörimisnopeuden tulon verran.

Tallenna skripti nyt, ja lisää se kuution komponentiksi. Nyt objektin pitäisi pyöriä Game-tilassa.

Lisätään vielä oma nimi ruudulle lisäämällä äsken muokattuun skriptiin OnGUI() -funktio:


OnGUI() piirtää suoraan pelaajan näkymään esimerkiksi tekstilaatikon, kuten tuossa koodissa. OnGUI() -funktiota ei tarvitse erikseen kutsua, vaan se toimii "automaattisesti". Laita "Jonne" -nimen tilalta tietenkin oma nimesi. Voit asetella myös tekstin haluamallasi tavalla.

Julkaiseminen
Siirry Build Settingsiin toiminnolla File | Build Settings. Lisää nykyinen Scene buildiin. Valitse WebGL, ja klikkaa Switch Platform. Mene Player settingsiin, ja Publishing settingsistä säädä:
  • Compression Format: Disabled
Julkaise tuotoksestasi WebGL -versio, valitse sopiva kansio (ei nykyisen projektin sisään), siirrä webhotelliin ja lähetä linkki opettajallesi.

No comments:

Post a Comment