Enhet växande smärtor

Enhet är en fantastisk plattform, och den fortsätter att växa. Liksom många andra spelutvecklare har jag bytt till Unity som min primära plattform för spelutveckling. Medan Unity är ett av de mest användarvänliga spelutvecklingsprogrammen jag någonsin haft nöjet att använda, är det inte fritt från växande smärtor. Jag har arbetat med att övervinna och dokumentera dessa försök, och i den här artikeln delar jag min erfarenhet.

relaterade inlägg
  • Hur man lär sig enighet

Förstå inspektören

Enhetsinspektören är där du får se all information om det valda objektet i scenvyn.


Om du skapar en kub och väljer den så kommer inspektören att visa den Omvandla komponent som kommer att visa x, y, och z egenskaper hos kubens position, rotation och skala. Om du har en mer komplicerad fiende som du har skapat, kommer det att visas all information om det objektet, vilket kan inkludera vilket antal komponenter du har kopplat till det objektet.

relaterade inlägg
  • Enhet: Nu tänker du med komponenter

Det finns en fångst: För att en egendom ska kunna synas i inspektören måste den offentliggöras i vilket skript som egendomen tillhör: om du vill se fireSpeed variabel för en komponent som är kopplad till ditt objekt, då fireSpeed måste deklareras som en offentlig variabel.

Det är här inspektörens verkliga styrka kommer in i spel, och här måste man lära sig ännu ett knep. Vilken egenskap som kan ses i inspektören kan redigeras för det objektet. Om ditt skript anger ett standardvärde för en egenskap via kod är det väldigt viktigt att veta det Inspektionsvärdet kommer att åsidosätta det. Detta betyder att om fireSpeed variabeln hade ett standardvärde på 4, och du satte det på 8 i inspektören, då fireSpeed variabel för det objektet kommer att förbli som 8, även om du ändrar värdet till 4 i skriptet och spara det.

(Observera att du ställer in variabeln till en annan räckvidd än allmänheten, det vill säga till privat eller skyddad vilja, återställer egenskapen till skriptvärdet och döljer värdet från inspektören.)

Det sista tricket att komma ihåg är att värdena som redigerats i inspektören medan i scenvyn när spelet inte körs sparas medan värden ändras i inspektören medan spelet är körs under levande redigering (ja, du kan leva redigera variabler medan du testar!) återgår till deras värden när du är klar med att testa projektet.

Dessa få viktiga punkter är inte för komplexa, men det är väldigt viktigt att du kommer ihåg dem, eftersom det inte är medvetet om allt detta kan leda till några mycket förvirrande felsökningar.


prefabs

Prefabs är en av de viktigaste aspekterna av Unity, men de kan vara lite förvirrande i början, eftersom det finns några mindre quirks till dem som inte är helt uppenbara vid första anblicken.

En prefab är i huvudsak en fördefinierad definition av ett objekt-en ritning, för alla ändamål, som en klass i OOP. Prefabs kan bestå av ett antal spelobjekt, grafik, komponenter och så vidare. De används bäst när du vill ha många föremål för ett föremål, och kanske vill ha små förändringar av det specifika objektet.


Om du har en massa prefabs i din scen och gör en ändring av prefab-definitionen, kommer alla instanser av den prefab att uppdateras. Alternativt, om du gör uppdateringar till en viss instans, tryck sedan på Tillämpa, alla instanser av prefab (såväl som den viktigaste prefab definitionen) kommer att uppdateras till konfigurationen för den specifika instansen. Om du har ändrat inspektionsvariabler eller andra egenskaper, kan du på en förekomst av en prefab skriva Återgå för att återställa den instansen till samma konfiguration som prefab-definitionen.


Navigera redaktörens 3D-utrymme

En av de första sakerna jag kämpade med i Unity, även efter att ha tittat på massor av handledningsvideor, var hur man navigerar i det visuella 3D-utrymmet i redigeraren. Jag var visserligen en komplett nybörjare för att flytta runt i 3D-rymden utan att vara låst till en karaktär (till exempel när man spelade ett första- eller tredjepersonsspel), men jag hittade fortfarande rörelsen lite udda och komplicerad.

Det är inte riktigt dåligt när du vänjer dig, men att ha lite mer riktning när jag först hoppade in skulle ha varit bra, så här är några användbara kommandon för att korrekt navigera redaktörens 3D-utrymme:


  • Högerklicka Drag: Titta runt 3D-rymden fritt utan att flytta.
  • Klicka på Objekt + F: Fokusera direkt på ett objekt, flytta kameran precis framför den.
  • Alt + Vänster Klicka Drag: Rotera runt det aktuella fokuserade objektet.
  • Alt + Högerklicka Drag: Olika zoommekanik.
  • Rulla framåt / bakåt: Zooma in och ut direkt framåt eller bakåt.
  • Scroll Wheel Klicka och dra: Flytta upp, ner, vänster och höger, i 3D-utrymme.
  • Piltangenter: Flytta direkt framåt, bakåt, vänster eller höger.

Komma tillsammans med Z

Oavsett om du gör ett 2D eller ett 3D-spel, vill du bli bekant med den fabulerade z-axeln. Många klasser och funktioner kommer att utnyttja z-axeln och medan du kanske inte vill ändra ett objekts position på z-axeln måste du vara medveten om den och rollen som den spelar i olika funktioner.

Z-axelns vanligaste utseende, som verkligen inte kan undvikas, är dess användning i Vector3 klass. Varje objekt i Unity har a Omvandla komponent, vilket är vad som innehåller informationen för rotation, position och all relaterad data. I Enhet, tranform.position är en Vector3, som innehåller objektets x-, y- och z-koordinater.

Så även om ditt spel är 2D måste du arbeta med Vector3 klass, och du måste därför vara medveten om denna parameter. Det enklaste att göra, i det här fallet är att antingen ställa in z parameter till 0, eller att ställa in den till nuvarande z värde genom att läsa det från transform.position.z.


Grundläggande rörelse

Som jag nämnde ovan lagras all rörelsesrelaterad information i a Omvandla komponent. Ah, men du kan inte bara skriva till transform.position Vector3-åtminstone inte i C #. Istället måste du skapa en ny Vector3, Ange värdena för din Vector3 (x, y, och z) och ställ sedan in transform.position till din nya Vector3, som följer:

// Vi kan inte skriva till transform.position, så vi skapar en ny Vector3: Vector3 newPosition; newPosition = ny Vector3 (theX, theY, theZ); // Ställ transform.position till objektet newPosition Vector3. transform.position = newPosition;

Även om detta inte är exakt komplicerat, kommer det definitivt att lägga till stapeln av saker att resa dig om du inte är medveten om!


Slutsats

Sammantaget är inget ovanligt särskilt avancerat eller mycket tekniskt; Det är bara en massa information som nybörjare till Unity missar ofta när de lär sig. Vem som helst kan se allt detta ut så småningom, men det kan ta otaliga timmar av felsökning, Googling och experimentera, och det finns inget behov av det.

Jag har tittat på varje enskild handledningvideo på Unity-webbplatsen, och medan det är rättvist att säga att jag inte absorberade Allt av informationen första gången är mycket av ovanstående helt enkelt inte nämnt, eller får inte tillräckligt med uppmärksamhet för att få det att stå ut. Att lära mig allt jag har lärt mig tog mig en stund, och förhoppningsvis kommer denna sammanställda informationslista att påskynda inlärningskurvan för framtida nybörjare till Unity Development.

Vilka växande smärtor har du stött på när du lär dig Unity?