Unity3D tutorial

Unity3D tutorial

Introduksjon til Unity 3D

Unity 3D er en kraftig spillutviklingsmotor. Det er tverrplattform som det lar deg lage spill for mobil, nett, skrivebord og konsoll, rundt 30 plattformer i alt. Unity 3D har mange spennende funksjoner, noen få av dem er gitt nedenfor:

  • Koste: Unity 3Ds personlige versjon er gratis for nybegynnere, studenter og hobbyister. Unity Personal har alle kjernefunksjonene i enhet. Den har også kjerneanalyse, skybygg, annonser, flerspiller, kjøp i appen og tverrplattformfunksjonene. Annet enn disse funksjonene enhet personlig har noen få begrensninger også. To andre versjoner Unity Plus og Unity Pro er også tilgjengelig for seriøse skapere og fagpersoner, og starter til en pris av $ 35 per måned.
  • Alle i en redaktør: Enhet er kjent som en alt i en redaktør. Unity Editor har flere kunstnervennlige verktøy for å designe imponerende opplevelser. Den har en sterk drakt med utviklerverktøy for implementering av spilllogikk og high end performing gameplay. Unity lar deg også lage både 2D- og 3D -spill. Det inkluderer også AI Pathfinding -verktøy basert på et navigasjonssystem. Den har et utmerket innebygd system for å lage iøynefallende brukergrensesnitt. BOX2D -fysikkmotoren lar oss lage realistisk bevegelse, fart, kraft og gameplay.
  • Plattformer: Unity støtter mange forskjellige plattformer som Linux, iOS, Android, Windows, etc. totalt nesten 30 plattformer.
  • Virtuell og forsterket virkelighet: Unity støtter for virtuell og forsterket virkelighetsutvikling. Det er mest brukt motor for XR -utvikling. Den har Microsoft HoloLens, Stream VR/Vive, Gear VR og PlayStation VR -støtte i Unity Plus for virtuell og augmented reality.
  • Multiplayer: For sanntids nettverks- og flerspillerspill er enhet det beste alternativet. Det gir servere for sanntidssamarbeid.
  • Motorytelse: Unitys motorytelse er ekstraordinær. Flertrådet Compute System kommer for intensive scenarier. Unity Engine har avanserte profileringsverktøy som avgjør om spillet ditt er CPU -bundet eller ikke og også forteller hvordan du kan optimalisere det med bedre erfaring.
  • Unity Asset Store: Det er en massiv katalog med fritt og betalt innhold. Du kan øke utviklingstiden din ved å laste ned mange innebygde gratis modeller og eiendeler. Selv Unity Asset Store har komplette prosjekter både gratis og betalt.
  • Grafisk gjengivelse: Enhet har et av de beste grafiske gjengivelsessystemene. Det lar deg skape miljøer som Luminous Day, Gaudy Glow of Neon Signs, Dismly Lit Midnights og Shadowy Tunnels. Det gir fantastiske visuelle effekter. Selv om Unity støtter multi-plattform, men fremdeles prøver den å dekke grafikk API på lavt nivå for alle plattformer for bedre resultater og kvelere brukeropplevelse.
  • Teamsamarbeid: Den har funksjoner som muliggjør samarbeid og enkel arbeidsflyt. Unitys skylagring lar deg lagre, dele og synkronisere prosjektene dine hvor som helst.
  • Resultatrapportering: Unity Performance Reporting System omhandler problemer i sanntid. Problemer med høy prioriteringer løses veldig effektivt. Finner applikasjonsfeil på tvers av enheter og plattformer.

Enhetsgrensesnitt

La oss utforske enhetsredaktørens grensesnitt, som er konfigurerbare. Det består av tappede vinduer som du kan omorganisere etter ditt behov. La oss utforske standardvinduinnstillingene. Her er bildet hvordan det ser ut

Hierarki -vindu

Hierarki -vinduet representerer alle objekter i scenen. Den viser hvordan gjenstander er knyttet til hverandre i scenen, så disse to vinduene er relatert. I hierarki -vinduet er det en rullegardinliste som heter som Skape. Du kan lage et tomt objekt, 3D -objekter, 2D -objekter, lys, lyd, video, partikkelsystem og kameraobjekter veldig enkelt. Hierarki -vinduet vises nedenfor. 'Untitled' er navnet på scenen. Du kan gi nytt navn til det som du vil. Du kan se et rullegardinikon på høyre side av Untitled (Scene Name). Ved å klikke på dette nedgangen kan du se forskjellige alternativer for Redd scene og Legg til ny scene.

Scenevindu

Scenevindu er der du lager scenen din. Det er der du kan samhandle med spillobjektene og modellene dine. Du kan endre størrelse på, omforme og omplassere sceneobjektene dine. Dette er vinduet der du begynner å jobbe med enhet. Scenevisning kan være 2D eller 3D avhengig av innstillingen til prosjektet ditt. Her er et skjermbilde av hvordan scenevinduet ser ut:

I scenevindu kan du se en annen fane merket Skyggelagt, Det er her du kan velge hvilken type visning du vil ha enten skyggelagt eller wireframe. Det har mange andre alternativer som diverse, global belysning, sanntids GI, Baked GI og mange andre. Du kan se til 2D eller 3D ved å bruke knappen ved siden av Skyggelagt fall ned. Neste er vippeknappen for scenebelysning. Tilsvarende en vippeknapp for scenelyd. Neste er en rullegardinliste for å aktivere himmelboks, tåke, animert materiale og bildeeffekter.

Spillvindu

Spillvinduet representerer ditt endelige, publiserte spill i spillemodus. Det er gjengitt fra kameraene du brukte i spillet ditt. I spillvinduet kan du se en annen verktøylinje som vist nedenfor i skjermbildet:

Display 1 viser kamera til stede i spillscenen din. Som standard er den satt til Display 1 for hovedkamera. Hvis du har flere kameraer og vil bytte, kan du velge fra rullegardinlisten. Ved siden av dette kan du se et nedtrekk for aspektforhold. Du kan velge i henhold til skjermbildet Target Device Monitor. Neste kan du se en Skala glidebryter å zoome inn. Bla til høyre og undersøk flere detaljer om scenen din i spillemodus. Neste er knappen for Maksimer på spill, Når du klikker, vil spillvindusstørrelsen være maksimal på spillemodus. Stum lyd Veksling brukes til demp/ikke -lyd lyd. Statistikk viser gjengivelsesstatistikk om spillets lyd og grafikk.

Prosjekt eiendeler vindu

Som navnet viser at Assets Window har alle eiendelene til prosjektet ditt som du kan bruke. Hvis du importerer noe nytt, vil det vises i prosjektet. Project Asset Window har to deler, venstre panel og høyre panel som vist i skjermbildet nedenfor:

Venstre rute viser den hierarkiske strukturen i prosjektets eiendeler. Når du klikker på en hvilken som helst mappe, vil den vise detaljene i høyre panel. For eksempel i den gitte figuren Prefabs Mappen klikker i venstre panel, slik at detaljene vises i høyre panel, da den inneholder to spillobjekter. I venstre panel kan du se en Favoritter seksjon, der du kan dra elementer som du vil bruke veldig ofte for å unngå tidsavfall i å søke etter dem. Over det kan du se en Skape Dropp som gjør at du kan lage et C# -skript, en mappe, en skyggelegger, en GUI -hud, en scene, en prefab, et materiale og mye mer.

Konsollvindu

Konsollvindu er stedet hvor du kan se feilene dine, advarsler og meldinger. Du kan justere dem ved å klikke på vekslingsknappene deres. Det lar deg også fjerne alle feil, advarsler og meldinger. Du kan pause feil i en viss tid. Her kan du se i følgende figur

Rullegardinikonet helt øverst til høyre har alternativer for redigeringslogg og stakksporingslogging.

Inspektørvindu

Inspektørvinduet er et av de mest interessante og nyttige vinduene i redaktøren. Det er stedet hvor du kan redigere alle egenskapene til det valgte spillobjektet. Hvert spillobjekt har sin egen type slik at egenskapene deres vil være forskjellige og inspektørens vindu kan variere. Eiendeler, skript og spillobjekter varierer i eiendommer. La oss se egenskapene til en kube i inspektørvinduet. Her er bildet:

Du kan gi nytt navn til spillobjektet ditt ved å bare klikke på forrige navn og skrive et nytt. Deretter vil du se transformasjonsdelen der du kan justere posisjon, rotasjon og skalering av det valgte spillobjektet. I det siste ser du et knappnavn som Legg til komponent, Klikk på den for å legge til nye komponenter i spillobjektet ditt, for eksempel hvis du vil legge ved et skript, bare klikk på Legg til komponent og skriv inn skriptnavnet ditt.

Verktøylinje

Sist er kategorien Tool Bar, den har mange nyttige funksjoner. Den inneholder noen grunnleggende verktøy for å manipulere scenevisningen og gjenstandene. I midten er det knapper for spill, pause og trinnkontroll. De to neste knappene viser enhetens sky og enhetskonto. Her er figuren hvordan det ser ut:

Komme i gang med enhet

La oss begynne å lage et nytt prosjekt i enhet fordi det er på tide å leke med det vi har lært. Dobbeltklikk på Unity -ikonet som følger vinduet vises:

Tast inn prosjektnavn, Velg en arbeidsplass plassering og velg deretter type prosjekt enten 2D eller 3D. Klikk på Lag prosjekt.

Som standard vil du se en uten tittel scene som inneholder et hovedkamera og retningslys i scenen. La oss begynne å skape et miljø.

Bygningsmiljø

Først av alt lager du et fly ved å klikke på Opprett -> 3D -objekt og velg deretter Fly. Eller alternativt kan du opprette den ved å klikke på GameObject -> Game Object og velg deretter Fly. Gå til Hierarchy -vinduet og klikk på Plane Game Object. Gå nå til Inspector Window og gi det nytt navn til som Bakke. Juster nå transformasjonsverdier slik at dette flyet ser ut som en rett vei. Bare skala x til 6 og z til 50. Her er bildet hvordan det ser ut

Last ned en veistekstur og bruk den på bakkeobjektet. Lag et mappenavn som tekstur. Dra nedlastet veistekstur til teksturens mappe. Velg nå Bakke og drag road -tekstur i scenevisningen. Her er bildet hvordan det ser ut

Dette er tekstur jeg lastet ned

Etter å ha påført tekstur på bakken, klikk på bakken og sett flislegging i inspektørvinduet. Slik setter jeg den.

Nå har du laget en vegmodell, la oss lage en ballmodell i enhet.

Gå til Opprett -> 3D -objekt og velg deretter Sfære, Du vil se et sfæreobjekt i scenevinduet. Velg den og gå til inspektørvinduet for å gi nytt navn til det som Ball. Juster nå transformasjonsverdier deretter. Bare skala den til 5 langs alle tre aksene og omplasser den til midten av veien. Slik ser det ut

Lag nå et gjerde eller vegg rundt veien.

Gå til Opprett -> 3D -objekt og velg deretter Kube. Velg den og gi den nytt navn til Vegg1. Gå til Inspector Window og angi transformasjonsverdier slik at det ser ut som en vegg rundt veien. Slik ser det ut:

Se disse transformasjonsverdiene for Vegg1. Skala til 6 og z til 500. Juster deretter posisjonen slik at den kommer ved hjørnene av veien.

Nå søk etter en veggtekstur last ned den og kopier til Tekstur mappe i eiendeler. Dra veggtekstur til veggen i scenevinduet. Juster jordbearbeiding slik at det ser fint og glatt ut. Jeg justerte flislegging som x til 50 og y til 1.5. Etter å ha justert flislegging er det slik det ser ut

Dette er tekstur jeg brukte til vegg

Vi har skapt vegg for den ene siden av veien. Gjør det samme for den andre siden av veien også. I stedet for å gå gjennom hele prosessen kan vi bare kopiere Vegg1 og gi det nytt navn til Vegg2.

Plukke ut Vegg1 I hierarki -vinduet og høyreklikk deretter og velg deretter Duplisere alternativ. Det vil skape et annet spillobjekt med samme størrelse og transformasjonsverdier. Klikk på Wall1 (1) og gi det nytt navn til Vegg2. Juster nå posisjon slik at det kommer til det andre hjørnet av veien.

Se følgende bilde hvor kult det ser ut

Mine posisjonsverdier for vegg2 er x til -29.6 til 2.6 og z til 2.6.

Lag nå et materiale for Ball. Gå til prosjektvinduet og lag en mappe ved å høyreklikke på musen og velg deretter Mappe. Nevn det som Materialer. Høyreklikk igjen på musen og lag et materiale. Nevn det som rød ball. I inspektørens vindu velger du farge på materiale. Gå til Hovedkart og velg Albedo Color to Red. Øk den metalliske tekstur ved å rulle stangen til høyre. Dra dette materialet til Ball I scenevisningen. Slik ser det ut

Slik ser materiell ut:

Så vi er ferdige med miljøutviklingen. Nå er det tid til å gjøre noe koding. For dette må vi lage et skript.

Skripting i enhet

Å implementere dine egne spillfunksjoner og å kontrollere oppførselen til spillenhet gir som en skriptemekanisme. Du kan skrive ditt eget manus for ønsket utgang av spillet. Med disse skriptene kan du utløse spillhendelser, kan endre komponentens egenskaper, og du kan svare på brukerinnganger. I utgangspunktet støtter Unity to forskjellige programmeringsspråk for skriptingsformål, den ene er C# og den andre er JavaScript. Annet enn disse to språkene mange andre .Netspråk kan også brukes med enhet. Skript er kjent som atferdskomponent i enhet.

Opprette et skript

La oss begynne å lage et enhetsskript. Gå til vinduet for eiendeler og opprette en ny mappe som heter Skript (Du kan hoppe over å lage nye mapper for hver ny type eiendel, men det er god praksis å holde ting organisert). Slik ser eiendelsvinduet ut nå:

Nå åpner Skript mappe, høyreklikk, gå til deretter Skape og velg C# manus. Gi nytt navn til Bevegelse. Vi lager dette skriptet for å bevege og rulle ballen på veien. For nå er ballen stasjonær, gjør ingenting, la oss skape litt bevegelse i den.

Dobbeltklikk på bevegelsesskriptet det åpnes i Mono Develop. Hvis skriptet ditt er en mono -oppførsel, vil du se noen forhåndsskrevet kode som dette

Bruke system.Samlinger;
Bruke system.Samlinger.Generisk;
bruker UnityEngine;
public class Movementscript: monobehaviour
// Bruk dette til initialisering
void start ()

// Oppdatering kalles en gang per ramme
void update ()

Du kan se to funksjoner starte () og oppdatere ().

Start(): Startfunksjon brukes til å initialisere variabler og objekter. Det kalles bare en gang når skriptet er aktivert rett før noen annen oppdateringsfunksjonsanrop.

Oppdater(): Det er en mono atferdsfunksjon, den kalles en gang i hver ramme.

Annet enn disse to er det mange andre mono -atferdsfunksjoner for eksempel våken (), fikseringsdato (), lateupdate () osv.

For å bevege ballen på veien først må du gjøre den til en stiv kropp (det er en ideell solid kropp der deformasjon blir forsømt). Plukke ut Ball i hierarki -vinduet og klikk på Legg til komponent Knapp i inspektørvinduet. Skriv stiv kropp og trykk Tast inn. En stiv kropp vil feste seg til Ball. Gå nå til manus og lag en privat variabel av typen Stiv kropp. Tilordne nå stiv kropp på ballen til denne variabelen du nettopp opprettet i manuset.

privat stivkropp RB;
rb = getComponent ();

Skriv nå litt kode for bevegelse av denne stive kroppen. Hva er ideen? Ball skal bevege seg når jeg trykker på piltastene til nøkkelkortet. Den skal bevege seg fremover når opp tasten trykkes, bakover når nedtasten trykkes og så videre.

Så innspillet når jeg kommer fra tastaturet, hvordan skal jeg få denne inngangen? Unitys inngangsklasse har et funksjonsnavn Getaxis (), for å returnere verdien av virtuell akse identifisert med aksenavnet. Lag to variabler en for x-aksen og en for y-aksen inngang. Slik skal det være

float moveHorizontal = input.Getaxis ("horisontalt");

Lag nå en Vector3 -variabel for å få bevegelsesverdier.

Vector3 Movement = New Vector3 (MoveHorizontal, 0.0f, MovEverticle);

Første parameter er verdien av x-aksen, det andre er verdien av y-aksen og tredje er verdien av z-aksen. Ettersom ball ikke vil bevege seg i retning av y-aksen, så tilordne null til den. Til slutt tilsett denne bevegelsen til stiv kropp og multipliser med et konstant tall for hastighet eller lag en annen variabel for hastighet. Se hele koden nedenfor

Bruke system.Samlinger;
Bruke system.Samlinger.Generisk;
bruker UnityEngine;
Offentlig klassebevegelse: monobehaviour
offentlig flyterhastighet;
privat stivkropp RB;
// Bruk dette til initialisering
void start ()
rb = getComponent ();

// fast oppdatering kalles etter fast antall rammer
void fasteupdate ()
float moveHorizontal = input.Getaxis ("horisontalt");
float movEverticle = input.Getaxis ("horisontalt");
Vector3 Movement = New Vector3 (-1*MoveHorizontal, 0.0f, -1*MovEverticle);
RB.Addforce (bevegelse * hastighet);

Siden hastighet er en offentlig variabel slik at du kan tildele verdi i inspektørvinduet. Fest dette skriptet til ballen ved å dra det til inspektørvinduet eller ved å trykke Legg til komponent knapp. Trykk på spillknappen og test kodingen din begge ballene beveger seg eller ikke.

Innstilling av kamera

Det siste du vil legge merke til er når du trykker på knappen frem og ball begynner å bevege det går ut av kameraet, da kameraet er stasjonært. Hva skal vi gjøre? Vi bør flytte kamera også? Ja det er det enkleste å gjøre. Gjør kameraets barn på ballen ved å dra hovedkamera til ballen.

Konklusjon

Dette var en grunnleggende introduksjonsopplæring der du lærte mange interessante funksjoner, miljøbygging og skripting i enhet. Ikke nøl, begynn å lage ditt første spill med enhet i dag og nyt!