Ilmentymien luonti

Johdanto

Yksittäisen skenen luonti ja solmujen lisääminen siihen voi toimia pienelle projektille, mutta kun projektin koko ja monimutkaisuus kasvaa, solmujen määrästä muuttuu pian hallitsemattomaksi. Tämän ratkaisemiseksi Godot sallii projektin jakamisen useisiin skeneihin. Se tarjoaa sinulle tehokkaan työkalun, joka auttaa järjestelemään pelisi eri komponentit.

Kappaleessa Skenet ja solmut opit, että skene on kokoelma solmuja puurakenteeseen järjestettynä, niin että yksi solmu toimii puun juurena.

../../_images/tree.png

Voit luoda niin monta skenejä kuin haluat ja tallentaa ne levylle. Tähän tapaan tallennettuja skenejä kutsutaan "Pakatuiksi skeneiksi" ja niillä on .tscn tiedostopääte.

../../_images/instancingpre.png

Kun skene on tallennettu, siitä voidaan luoda ilmentymä toiseen skeneen ikään kuin se olisi mikä tahansa muu solmu.

../../_images/instancing.png

Yllä olevassa kuvassa skene B lisättiin ilmentymänä skeneen A.

Esimerkki ilmentymien luonnista

Oppiaksesi kuinka ilmentymien luonti toimii, aloitetaan lataamalla esimerkkiprojekti: instancing.zip.

Pura tämä projekti minne haluat. Avaa sitten Godot ja lisää projekti projektinhallintaan 'Tuo' (kuvassa 'Import') painikkeella:

../../_images/instancing_import.png

Selaa purkamaasi kansioon ja avaa sieltä löytyvä "project.godot" tiedosto. Tämän tehtyäsi uusi projekti ilmestyy projektiluetteloon. Muokkaa projektia painamalla 'Muokkaa' painiketta.

Projekti sisältää kaksi skeneä: "Ball.tscn" ja "Main.tscn". Palloskene käyttää RigidBody2D solmua tarjoamaan fysiikkamallinnusta ja pääskenessä on joukko esteitä, joihin pallo törmäilee (käyttäen StaticBody2D solmua).

../../_images/instancing_ballscene.png ../../_images/instancing_mainscene.png

Avaa Main skene ja valitse juurisolmu:

../../_images/instancing_mainroot.png

Haluamme lisätä ilmentymän Ball skenestä Main skenen alisolmuksi. Napsauta "ketjun" muotoista painiketta (sen vihjetekstissä lukee "Luo skenetiedostosta ilmentymän solmuksi.") ja valitse Ball.tscn tiedosto.

../../_images/instancing_linkbutton.png

Pallo sijoitetaan ruutualueen vasempaan yläkulmaan (joka on (0, 0) kuvaruudun koordinaatteina). Napsauta ja vedä pallo jonnekin lähelle skenen ylä-keskiosaa:

../../_images/instancing_placeball.png

Napsauta "Pelaa" ja katso, kun pallo putoaa ruudun alalaitaan:

../../_images/instancing_playbutton.png

Useat ilmentymät

You can add as many instances as you like to a scene, either by using the "Instance" button again, or by clicking on the ball instance and pressing Ctrl + D (Cmd + D on macOS) to duplicate it:

../../_images/instancing_multiball.png

Aja skene uudestaan ja katso pallojen putoavan.

../../_images/instancing_multiball.gif

Ilmentymien muokkaus

Open the Ball scene, expand the PhysicsMaterial by clicking on it, and set the Bounce property to 1.

../../_images/instancing_physicsmat2.png

Paina "Pelaa" ja huomaa kuinka pallojen ilmentymät ovat nyt paljon kimpoavampia. Koska pallojen ilmentymät perustuvat tallennettuun skeneen, muutokset tuohon skeneen vaikuttavat kaikkiin ilmentymiin.

You can also adjust individual instances. Set the bounce value back to 0 and then in the Main scene, select one of the instanced balls. Resources like PhysicsMaterial are shared between instances by default, so we need to make it unique. Click on the tools button in the top-right of the Inspector dock and select "Make Sub-Resources Unique". Set its Bounce to 1 and press "Play".

../../_images/instancing_property.png

Huomaa, että muokatun ominaisuuden viereen ilmestyy harmaa "palauta" painike. Kun tämä painike on esillä, se tarkoittaa että olet muokannut ominaisuutta skeneilmentymässä ylikirjoittaaksesi sen tallennetussa skenessä olevan arvon. Vaikka ominaisuutta muutetaan alkuperäisessä skenessä, muokattu arvo jää voimaan. Palautuspainikkeen painaminen palauttaa ominaisuuden tallennetun skenen arvoon.

Lopputulos

Ilmentymien luonti voi olla hyödyllistä, kun haluat luoda useita kopioita samasta objektista. On myös mahdollista luoda ilmentymiä koodissa käyttämällä GDScriptiä, katso Skriptaus (jatkuu).