Lessons Unity 5 3D-spel för Android. Skapa Android-applikationer. Importera filer och skapande av spelobjekt

Enighet är den motor som de flesta av de moderna spelen är byggda på olika plattformar. Genom motorn är det faktiskt att skapa spel som är inriktade på att starta på datorer (Windows, Linux, MacOS), mobiltelefoner, tablettdatorer (Android, iOS) och även spelkonsoler PlayStation, Xbox, Nintendo.

Hur man skapar spel i enighet?

Grunden för enhet är ett komponentorienterat koncept. Faktum är att alla spel består av massan av föremål utspädd med ytterligare komponenter. Till exempel, under skapandet av plattformen, skapar vi ett gameobject, som dessutom bifogar en grafisk komponent till den, som är ansvarig för att visa tecknet och kontrollkomponenten, det ger teckenkontrollen med mus, tangentbord, joystick eller pekskärm . Motorn ställer inte in begränsningar av antalet liknande moduler. Du kan lägga till så många komponenter till GameObject efter behov. Allt arbete på motorn är byggt på skapandet av GameObject och applicerar lämpliga komponenter till dem.

Nybörjare kan vilseleda den synliga enkelheten i processen, även om det inte är det. Att skapa ett unikt och populärt spel måste skriva mycket komponenter från början. Mer exakt, i enighetsmiljön kallas det ett skript. Det modersmål som skapas är C #, men också delvis används av JavaScript och Boo (Cropped Python-alternativ). Skapa våra egna komponenter är inte lätt, du kan även säga - det här är ett komplext förfarande som är direkt knutet till klassisk programmering. Utan tillgången på en tillräcklig kunskapsnivå i programmeringen måste den vara objuden.

Stödda plattformar

Många stora projekt föredrar enighet på grund av en stor lista med plattformar som är kompatibla med motorn. Den färdiga applikationen körs verkligen på ett datorsystem, populära mobila plattformar och SmartTV. Vad sägs, även webbläsarspel och applikationer för specifika plattformar ( som Tizen OS.) Företrädesvis utvecklad på enighet.

Men här är inte så smidigt. Om det behövs kan du skriva specifika algoritmer baserat på lågnivå kod, under samma Android behöver du ha en grundlig kunskap om Java.

Detsamma gäller för iOS. Ett annat inslag i IOS är att det är möjligt endast från en dator eller en tablett från Apple. I avsaknad av en MacBook eller en liknande enhet är frisättningen av spelet snabbt bås och enhet alls inte alls, ålägger Apple själv en liknande begränsning. Utgången är enkel: Om det finns iOS-utveckling i planerna, bör du välja en lämplig enhet för montering i förväg.

Hur och var att utveckla ett spel på motorn?

Den långsiktiga spelutvecklingsprocessen kan utföras både inom Windows och Mac OS X. Det finns redan versioner av redaktören under Linux, men det är ännu inte nödvändigt att räkna med sitt stabila arbete. För det mesta att skapa spelet, utförs utvecklaren inuti Unity Editor. Du måste fortfarande skriva mycket tid för att skriva skivor av skript, vi kan skapa det antingen i standard monodevelop, eller i någon redaktör för en tredje parts utvecklare. Använd nu aktivt visuell studio, såväl som sublim text, men bara med due-tuning.

Hur snabbt skriver ett spel för Android på enighet

Vid denna tidpunkt kan alla bli en framgångsrik utvecklare av mobila spel eller applikationer, utan att ansöka om denna titaniska ansträngning. Ett exempel på ett sådant fall är Dong Nguyen, som utvecklade Flappy Bird. Det fanns ingen svår mekanik eller grafik i spelet, men det hindrade henne inte att bli populär och ta med till sin skapare femtio tusen dollar om dagen. Det var dock inget anmärkningsvärt i spelet. Allt som behövde lyckas är att vara på rätt ställe vid rätt tidpunkt och lite lycka till. Detta kan hända idag idag behöver du bara rätt idé.

För att visa hur lätt det är att skriva något så här, idag skriver vi vår Flappy Bird med hjälp av enighet på bara 10 minuter.

Speltecken

Skapa först ett nytt projekt och se till att 2D-alternativet är valt.

Ladda dina spritefåglar i scenen. Glöm inte att slå på fantasin!

Justera sedan spritens storlek som du vill, medan du drar den med hörnet i rätt riktning. Sprite ska vara synlig i hierarkifönstret till vänster. Alla objekt i scenen är synliga i det, och för tillfället bör det bara finnas två: en kamera och en fågel.

Dra kameran på fågeln och släpp. Kameran ska vara under fågeln, det kommer att innebära att kameran är nu en "baby" -fåglar. Nu kommer kamerans position att fixas i förhållande till fågeln. Om fågeln går framåt, så gör kameran samma.

Välj en fågel i scenen eller i hierarkinfönstret. Du kommer att se en lista med alternativ och attribut till höger i fönstret som heter Inspector. Här kan du styra olika variabler bundna till ett specifikt objekt.

Klicka nu på Lägg till komponent. Välj fysik2d\u003e RigidBody2D är en färdig uppsättning instruktioner för att applicera tyngdkraften till vår karaktär. Klicka på begränsningar i den här panelen och välj sedan Frysta rotation Z. Detta förhindrar fågelns rotation tillsammans med kameran i en cirkel.

På samma sätt, lägg till Polygon Collider, som säger enighet, där karaktärgränserna är. Klicka på Play och se hur sprite med kameran oändligt faller ner.

Medan allt går bra!

Nu är det dags att gå till karaktärsflyg, bra det blir enkelt.

Först måste du skapa C # -Script. Skapa en mapp för den (högerklicka var som helst i tillgångarna och skapa mappen "Skript", gör höger musknapp och välj Skapa\u003e C # Script.

Låt oss kalla det "karaktär". Klicka på det två gånger för att öppna den i din IDE, oavsett om det är monodevelop eller visuell studio. Lägg sedan till följande kod:

Public Class Character: Monobehaviour (Offentlig Rigidbody2D RB; Public Float Movespeed; Public Float Flapheight; // Detta är nödvändigt för att initiera tomtstart () (RB \u003d GetComponent ();) // Uppdatering kallas en gång per ram Void Update (RB. Velocity \u003d Ny Vector2 (Movespeed, Rb.Velocity.y); Om (input.getCouseButtondown (0)) (rb.velocity \u003d Ny Vector2 (rb.velocity.x, flapheight);) om (transform.position.y\u003e 18 || transformation.position.y.< -19) { Death(); } } public void Death() { rb.velocity = Vector3.zero; transform.position = new Vector2(0, 0); } }

Denna kod gör två saker. Han får karaktären att gå vidare med den hastighet vi definierar i inspektören och skapar en känsla av fågelflygning. Uppdateringsmetoden kallas igen i hela spelet, så allt du lägger här kommer att utföras kontinuerligt. I det här fallet lägger vi till lite hastighet till vårt objekt. RB-variabeln är det rigidbody2d-skriptet, som vi tillämpade på vårt föremål före, så när vi skriver Rb.Velocity, vädjar vi till objektets hastighet.

Tryck på skärmen tolkas med enighet som ett musklick om du använder en mobilenhet. Efter att ha tryckt tvingar vi karaktären lite klättra upp.

Variabeln MOVESPEED-variabeln ansvarar för rörelsens hastighet, och flapheight-variabeln är för en ökning av fågelns höjd efter varje press. Eftersom dessa variabler deklareras som offentliga, kommer vi att kunna ändra dem utanför skriptet.

Död () Metod är också förklarad som allmän, vilket innebär att andra objekt och skript kommer att kunna kalla det. Denna metod returnerar helt enkelt karaktärens position till början. Det kommer också att användas varje gång tecknet kommer att flyga för högt eller lågt. Snart förstår du varför det förklaras som allmänhet. Rad rb.velocity \u003d vector3.zero; Behöver du ta bort pulsen - vi vill inte ha efter varje död, föll karaktären snabbare och snabbare?

Nu kan du lämna IDE och lägga till ett skript som en komponent till tecknet. För att göra detta måste du välja vår fågel och klicka på Lägg till komponent\u003e Skript\u003e Tecken. Nu kan vi definiera movespeed och flapheight i inspektören (för detta och behöver offentlig överförd). Vi tilldelar variabla värden 3 respektive 5.

Och mer: I inspektören måste du lägga till en tagg på tecknet. För att göra detta, klicka på Var Tag: Untagged är skrivet och välj sedan spelare i rullgardinsmenyn.

Hinder

Lägg nu till hinder: rör. Någon i rören finner svampar, och någon är deras död.

Dra spritens sprite i scenen till den plats där det första hindret ska vara, och namnet är pipe_up.
Skapa nu ett nytt skript som heter Pipe:

Public Class Pipe: Monobehaviur (privat tecken tecken; - transform.position.x\u003e

Lägg till det här skriptet på rörsprite på samma sätt som tidigare. Således kommer röret att återvända till skärmen efter att ha gått ut för sin vänstra kant. Vi har inte gjort någonting här, men vi kommer tillbaka till detta.

OnCollisionEnter2D () Metod kallas varje gång röret interagerar med tecknet. Därefter kallas dödsfallet () som skapas av den tidigare skapade spelaren i utgångspunkten.

Så vi har ett rör, vilket från tid till annan kommer att försvinna och visas i den andra änden av skärmen. Du kommer att dö i henne - dö.

Inverterade rör

Nu har vi bara ett spritrör. Låt oss lägga till ytterligare en. För att göra detta högerklickar du i fönstret Hierarki, klickar du på Nytt 2D-objekt\u003e Sprite och väljer sedan den sprite du vill använda. Ännu lättare kommer helt enkelt att dra filen till scenen igen.

Namn denna sprite pipe_down. I inspektören i Sprite Renderer, välj alternativet Flip Y för att vrida röret upp och ner. Lägg till samma rigidbody2d.

Skriv nu ett nytt C # -skript som kallas piped. I det kommer det att vara liknande kod:

Public Class Piped: Monobehaviour (privat tecken tecken; - transform.position.x\u003e 30) ()) tomt oncollisionEnter2d (collision2d andra) (om (andra.gameobject.tag \u003d\u003d "spelare") (tecken.death ();) ))

Prefabric

Så vi har tillräckligt med den här koden för att göra hela spelet. Vi kunde flytta rören på höger sida av skärmen varje gång de försvinner, eller kopierar och lägger in så många rör som vi skulle vilja träffas i hela spelet.

Om du går först, se till att rören står efter slumpmässig generation, och det skulle vara svårt att behålla det ära. Efter karaktärens död kunde de dyka upp i kilometer från det första röret!

Om du går för det andra, kommer allt att sluta överdriven konsumtion av minne, med en saktning av spelet och begränsat till att spela, för Allt står på samma platser varje gång.

Låt oss använda Prefabami. Om vi \u200b\u200bbara säger kommer vi att vända våra rör till mallar, som då kan använda för att effektivt skapa ett större antal rör på viljan. Om det finns programmerare, överväga rörklassskriptet, och rören är instanser av det här objektet.

För att göra detta, skapa en ny "prefabs" -mapp. Dra sedan PIPE_UP och RIPE_DOWN från hierarkifönstret till mappen.

Varje gång du drar objektet från den här mappen i scenen kommer det att ha samma egenskaper, så du behöver inte ständigt lägga till komponenter. Dessutom, om du ändrar storleken på komponenten i mappen, kommer den att påverka alla rör i spelet, och du behöver inte ändra var och en separat.

Som du förstår kommer det att spara våra resurser mycket. Det betyder också att vi kan interagera med föremål från koden. Vi kan skapa kopior av våra rör.

Lägg först till den här koden i ett villkorligt uttryck i den uppdaterade () -metoden för rörskriptet, som vi lämnade tomt:

VOID UPDATE () (IF (CHARACTOR.TRANSFORM.POSITION.POSITION.X - transform.position.x\u003e 30) (Float Xran \u003d Random.Range (0, 10); Float Yran \u003d Random.Range (-5, 5) ; Instantiate (GameObject, Ny Vector2 (Character.Transform.Position.x + 15 + Xran, -10 + Yran), transform.rotation; Förstör (GameObject);))

Det är nödvändigt att skapa en förekomst av vårt gameobject. Resultatet är en ny identisk kopia. I Enhet, alltid när du använder ordet GameObject, hänvisar det till det objekt som skriptet för närvarande är knutet till - i vårt fall till röret.

Vi genererar återhämtningsrör i slumpmässiga variationer för att vara roligare.

Men istället för att göra det på samma sätt i piped-skriptet genererar vi båda objekten på ett ställe. Således kan vi enkelt installera positionen för det andra röret i förhållande till den första. Det betyder också att vi behöver mindre kod för piped.

Skapa ett offentligt spelobject med namnet Pipedown. Uppdatera sedan koden enligt följande:

Om (tecken.transform.position.x\u003e transform.position.x\u003e 30) (Float Xran \u003d Random.Range (0, 10); Float Yran \u003d Random.Range (-5, 5); Float Gapran \u003d Random.Range (0, 3); instantiate (gameObject, ny vector2 (charactS.Transform.position.x + 15 + xran, -11 + yran), transform.rotation); instantiate (pipedown, ny vector2 (characten.transform.position.position .x + 15 + Xran, 12 + Gapran + Yran), Transform.Rotation; Förstör (GameObject);)

Återvänd tillbaka till enhet och dra pipe_down Prefab från prefabami-mappen (det här är viktigt!) Till den plats där "röret ner" är skrivet (meddelande, eftersom vårt kamelfodral ersätts med ett mellanslag) till rörets rörsprite. Om du kommer ihåg, definierade vi röret ner som offentligt spelobject, vilket ger oss möjlighet att bestämma vad det här objektet är från var som helst - i det här fallet via inspektören. Om du väljer ett prefab för det här objektet är vi övertygade om att när du skapar en rörinstans kommer det att innehålla alla attribut och det skript som vi har lagt till tidigare. Vi skapar inte bara sprite, men skapa ett objekt med en kollider som kan döda karaktären.

Allt som vi lägger till samma plats i piped-skriptet är helt enkelt förstört (GameObject) så att röret är självfördelat när skärmen lämnas den vänstra gränsen släpps.

Om du startar spelet nu kommer skärmen längre automatiskt, och du kommer att dö om du stöter på någon av rören. Flip tillräckligt långt, och dessa rör kommer att försvinna och visas framåt igen.

Tyvärr finns det ett långt avstånd mellan rören, och skärmen ser tom ut. Vi kunde fixa det genom att lägga till flera prefabs till vår scen för att skapa en transportör ständigt framträdande rör. Det skulle dock vara bättre att generera rör i skriptet. Detta är viktigt, eftersom annars, efter rörets död, förstörs den i början av banan, och ett tomt utrymme bildas igen.

Således kan vi skapa flera första rör under varje spel belastning och återvända allt på vår plats efter karaktärens död.

Oändlig flygning

Låt oss nu skapa public-sände Rör_Up och Poip_down i teckenskriptet. Detta ger dig möjlighet att hänvisa till de skapade objekten, dra prefabricerna till teckenobjektet, med rätta som när vi lade till Poip_down till rörskriptet.

Vi måste lägga till dessa variabler:

Offentligt gameobject-röre_up; Offentligt gameobject pipe_down;

Då skriver vi den här metoden:

Public Void Buildlevel () (Instantiate (Poip_down, Ny Vector3 (14, 12), Transform.Rotation); Instantiate (Rör_Up, Ny Vector3 (14, -11), Transform.rotation); Instantiate (Poip_down, Ny Vector3 (26, 14), transform.rotation); Instantiate (Rör_Up, Ny Vector3 (26, -10), Transform.Rotation); Instantiate (Rör_Down, Ny Vector3 (38, 10), Transform.Rotation); Instantiate (Rör_Up, Ny Vector3 ( 38, -14), transformation.rotation); Instantiate (Poip_down, Ny Vector3 (50, 16), transform.rotation); Instantiate (Rör_Up, Ny Vector3 (50, -8), Transform.Rotation); Instantiate (Rör_Down, Ny Vector3 (61, 11), Transform.Rotation; Instantiate (Rör_Up, Ny Vector3 (61, -13), Transform.Rotation);)

Vi kommer att kalla det en gång i uppdateringsmetoden () och en gång i metoden för död ().

Efter starten av spelet kallas uppdatering (), och våra rör är inställda enligt en given konfiguration. På grund av detta kommer de första hindren alltid att stå på samma ställe. Efter spelarens död kommer röret att falla på samma platser.

Återgå till scenen i enighet och ta bort de två rören som finns där nu. Ditt "spel" kommer att se ut som en tom skärm med en fågel. Pressspel och rör visas, efter det att de första av deras position kommer att bestämmas slumpmässigt.

Till sist

Så vi gjorde ett helt spel! Lägg till poängmätaren, försök att göra det mer original och öka spelets komplexitet som det främjas. Det kommer inte att vara överflödigt för att göra en meny. En annan bra idé kommer att förstöra rören på skärmen efter karaktärens död. Så snart du slutar med detta - överväga vad som är klart för utgåva i spelbutikspelet i fickan! En gång som ett liknande spel gjorde en annan utvecklare väldigt rik, och det visar sig att du inte behöver vara en geni-programmerare eller ha en rik utgivare för din rygg för att uppnå framgång. Du behöver bara en bra idé och tio minuter!

Vill du skriva applikationer för Android, men vet inte vart du ska börja? Då bekanta dig med vår stora för att utforska Android-utveckling.

Hej alla! Efter att ha lärt sig att göra spel på den här motorn, vill jag lära dig detsamma. Först behöver vi Unity3D själv, alla 3D-modeller redigerare och raka händer växer från axlarna.

1. Studera programmet

Till att börja med rekommenderar jag att du installerar MonoDevelop! Låt oss räkna ut det som enighet är. Enhet - Multiplatform spelutvecklingsmiljö. Det är på grund av hennes enkelhet och tydligare, var tredje åtminstone en gång på den.

Tänk på skärmen ovan:

  • Scenen är din sandlåda för kreativitet.
  • Projekt - Här är alla animeringar och modeller, ljud och texturer.
  • För att installera modeller i den övre tulbaren, välj den nya tillgången för tillgångar. Du kan också fråga tillgångar-import paketet-anpassat paket. I det andra fallet måste paketet vara i förlängnings .unity.
  • Hierarki - Alla föremål på scenen. Där skapar du föräldrar för objektet. Flytta bara objektet till ett annat i hierarkin-menyn, och stängs. Som ett resultat kommer det att visa sig en slags mapp.
  • Tulbar är en lista med verktyg. Där kan du slå på 2D, 3D-läge.
  • Inspektör - Objektets egenskaper, där lägger du till animationer, skript och mer. Där kan du använda Verktyg: Flytta kameran, flytta objektet, sträcka, objektväng.


Nu ser du objektmenyn i den du kan lägga till animering, skript och mer.

Jag tror att med den här menyn får du inte problem.
För att skapa något objekt klicka.

I allmänhet studerade vi programmet snart, du kan redan skriva dina spel.

2. Skapa det enklaste spelet

Till att börja med, skapa territoriet av skapa terräng. Tillsätt gräs och träd. Genom att trycka på jorden till höger visas fönstret valt träd, gräs.


Skapa även berg och oegentligheter. Hämta sedan Charracher Controller Pack till projektet. Därefter söker vi i fönstret med Standart Asset-Characters Controller-projektet och väljer den första personen (kapsel) eller från den tredje (mekaniker).
Om det första ansiktet, bara lägg det på marken. Om den tredje måste du ladda ner animationen. Jag rekommenderar också att du installerar belysningen på den skapade riktlinjen.


För att lägga till musik, dra den till önskat objekt.
Fick är redo, men hur man kompilerar det?

För att göra detta, gå till inställningar för filer-Build-inställningar (för en genväg och namn). Välj en plattform och Voila, redo. För att göra detta måste du installera Android SDK. Men det är nödvändigt att ange mappen med SDK, och det är nödvändigt inte bara en SDK, nämligen API för den önskade nivån (till exempel Android 4.2 - API 17). Till exempel, för att spelet ska vara på Android 4.0+, måste du installera dessa API.

I nästa artikel kommer jag att berätta hur du skapar ledning under Android eller iOS och lär dig hur du skriver skript själv.

Hur snabbt och relativt enkelt att skapa ett enkelt spel eller en app för Android? Detta läses om detta i artikeln nedan, där arbetet med Unity3D-motorn anses vara.

Spelar du datorspel? Om så är fallet, då, i färd med att passera nästa spelblockbuster, hade du ibland tankar som: "Men här skulle jag göra fel!". Och du vill besöka den roll som utvecklaren? Då föreslår jag dig ett litet men mycket underhållande "äventyr";)

Vad är motorn och varför behövs det?

Tidigare, under de första datorernas dagar, skapades spel och program med den så kallade "hardcore" -metoden. Det är för fullfjädrad utveckling det var nödvändigt att vara en ganska erfaren programmerare, som grundligt känner till sitt programmeringsspråk och kan nästan hela spelet (inklusive pixelgrafik och specialeffekter!) Skriv i enkel anteckningsbok. Det fanns få sådana människor och de var mycket uppskattade (och nu och nu) ...

Idag har tröskeln för inträde i ämnet för programmering minskat ibland. Och detta bidrar inte bara till tillgången på litteratur och alla typer av träningsmaterial, men mer och mer förenklande utvecklingsprocess. Numera är det sällsynt att träffa riktiga "hardcorers", eftersom de ganska praktiska utvecklingsmiljöerna har dykt upp, som kallades "motorer".

Motorns essens är att det tillåter ett förenklat visuellt läge att importera alla nödvändiga spelobjekt, placera dem på en virtuell scen och konfigurera alla sina parametrar. Det vill säga att programmeraren är endast korrekt för att skriva spellogik!

Men för bekvämligheten med arbetet är det dock nödvändigt att betala en viss ökning av projektets storlek (ibland till och med flera gånger!) Jämfört med dess analoga skrivna av den gamla "hardcore" -metoden. Det är för den här delen av motorns utvecklare gillar inte eller försöker skriva egna, där endast de nödvändiga komponenterna används ...

Men vi är långt ifrån dig till Tar-programmerare :) Därför skapar vi ett enkelt spel för Android baserat på den populära och kraftfulla Unity3D-motorn.

Komma igång med projektet i Unity3D

Så varför bestämde vi oss för att använda Unity3D:

  • förmågan att skapa fullfjädrade 2D och 3D-spel;
  • möjligheten att sammanställa det färdiga spelet för någon enhet;
  • relativ enkelhet av motorkontroll;
  • bra funktionalitet Extensibilitet på grund av plug-ins;
  • den relativt små storleken på spelets slutmontering (i jämförelse med andra motorer).

Det viktigaste trumfkortet är Unity3D, naturligtvis, dess mångsidighet och multiplatform. Klar spel (kanske med mindre modifieringar) Du kan hamn, även på en dator (med Windows, Linux eller MacOS), åtminstone på Android, åtminstone på PlayStation eller Xbox! För att göra detta måste vi bara hämta själva motorn, som förresten "väger" mer gigabyte och den nödvändiga SDK (om det är planerat att utvecklas för mobila plattformar eller konsoler). Om du vill göra ett spel för Windows behöver du inte ladda ner något annat, men eftersom vi ska göra spelet under Android, måste vi ladda ner mer Android SDK (Software Development Kit). Jag råder dig att ladda ner SDK i Zip Archive för mer bekvämlighet att arbeta med det.

När allt är laddat kan du packa upp alla bekväma Android SDK-mapp som är bekvämt för dig, och fortsätt sedan för att installera Unity3D själv. Den är installerad, som alla vanliga program under Windows, så det borde inte finnas några problem med installationen. Efter installationen av motorn startar och vi först måste skapa ett nytt projekt:

För att göra detta måste vi stänga alla välkomnande och introduktionsfönster, och välj sedan "Nytt projekt" i menyn "File". I fönstret som öppnas (se skärmdump ovan) kommer vi att ges för att ange projektsparappen (dess namn kommer att matcha projektnamnet), importera vissa standarduppsättningar av funktioner (vi behöver inte det) och ange driftsläge. Som ett läge väljer du 2D och klickar på "Skapa" -knappen. Denna beredda del av det färdiga arbetet :)

Projektmotor och hierarki gränssnitt

Efter att ha skapat projektet, kommer det att laddas i Unity3D-arbetsytan:

Den här arbetsytan har en modulär struktur och består av flera kapslade fönster som kan flyttas, eftersom du är bekväm. Jag har det konfigurerat så (från vänster till höger och från topp till botten):

  1. Hierarki-fönstret visar det hierarkiska läget för aktiva och inaktiva objekt på scenen. Som standard är det enda objektet som ligger omedelbart i listan kameran (huvudkamera).
  2. Fönstret Scene visar hela spelplatsen och objekten på den (inklusive kameror, ljud, texturer, etc.).
  3. Inspektörfönstret visar alla egenskaper hos den hierarkin som valts i hierarkin eller på objektscenen och låter dem redigera, komplettera eller radera.
  4. Spelfönstret - Visar spelvärlden, som är synlig för kameran och låter dig välja storleken på det virtuella testfönstret i spelet i pixlar. Gör det också möjligt för dig att aktivera utmatningen av maximering på spel och inkludera / inaktivera visningen av olika uppgifter för utvecklaren.
  5. Projekt och konsolfönster. Projektfönstret används för att navigera i projektets resurser: laddade bilder, ljud, modeller, etc. Använd även det här fönstret (snabbmeny) Du kan skapa nya tomma spelobjekt med olika typer och skript. Konsolfönstret tjänar till att visa felmeddelanden (röda), varningar (gula) och olika, som begärs av debuginformation (grå).
  6. Fönstret för tillgångar är botten av inspektörsfönstret, som visar förhandsgranskningen av objektet eller filen som valts i projektfönstret.

Förutom ovanstående, betala din uppmärksamhet på tre knappar längst upp i mitten. De låter dig köra ditt projekt, för att pausa (ibland användbart när de felsöker för att se vad som görs i hierarkin, till exempel) och stängs av.

Vi kommer att skapa en simulator av ett musikinstrument: Indiska folktrummor som kallas "tabla", så att komma igång, kommer vi att skapa två tomma mappar i projektet där ljud och bilder kommer att lagras. Du kan skapa en ny mapp genom att ringa in snabbmenyn i projektnavigatorfönstret (projekt) och välja "Mapp" i listan "Skapa".

Här är det värt att säga några ord om hur man ringer dessa mappar. För ett enkelt spel, som vår simulator, i princip, kan mapparna "ringer" som du vill, men det finns minst två namn som är bättre att inte använda eftersom de är reserverade av motorn. Detta är namnen på resurser och plugins. I stora projekt skapar resursmappen omedelbart och alla spel "reservdelar" (bilder, ljud, modeller, texturer och prefabrices) lagras redan i den (sortering av undermappar). I plugins, som följer av namnet, sparas alla ytterligare funktioner från tredje part (de så kallade "tillgångarna" (tillgångar)), som är ganska mycket på tillgångsbutiken - förlängningsbutiken för Unity3D.

Importera filer och skapande av spelobjekt

Innan du skapar ett nytt spelprojekt är det lämpligt att förbereda alla filer för sin verksamhet i förväg. I vårt fall är sådana filer bilder och ljud. Importera dem till projektet är det enklaste sättet att dra in den önskade mappen. Låt oss börja med bilder ...

Efter att bilderna visas i mappen i vår bilder ska de konfigureras lite:

Faktum är att som standard3D alla bilderna till projektet komprimerar med förlust av kvalitet. Om vi \u200b\u200binte behöver en sådan förlust (speciellt relevant för spel med HD-grafik), bör vi välja varje bild och i inspektörsfönstret för att ändra värdet på "Format" -parametern med "komprimerad" på "truecolor" i " Standardflik. Du kan också behöva ändra parametern "Max storlek" om den är mindre än den verkliga bredden på bilden (som standard - 1024 pixlar). Efter alla ändringar får du inte glömma att klicka på "Apply" -knappen för att tillämpa dem. Liknande åtgärder, om det behövs, gör för alla andra bilder.

Låt oss nu skapa spelobjekt från våra bilder. För att göra detta, dra bara den önskade bilden i hierarkifönstret. Bilden eller 3D-modellen omvandlas automatiskt till spelobjektobjektet och visas vid utgångspunkten för koordinaten framför kameran.

Först och främst lade vi till en bakgrundsbild, som ska visas i helskärm. Kontrollera om det är möjligt att markera kameran i hierarkinfönstret och titta på hur dess ram visas. I skärmdumpen är det klart ovanför att en del av vår bakgrund är utanför kameravyn, därför måste du justera storleken på den här översynen genom att dra rammen direkt på scenen eller redigera parametern "Storlek" i inspektörsfönstret. I vårt fall var jag tvungen att ändra standardvärdet (5) med 5.4.

Allt, kameran rör inte längre, men lägg till och sätt upp resten av bilderna. När vi lägger till ser vi att några av dem är för stora för vårt spel. Det kan minskas antingen fysiskt i en grafisk redigerare eller ett medel för motorn. Låt oss prova det sista sättet. För att göra detta markerar vi bilden i hierarkinfönstret, och i inspektörsfönstret, ändra "skala" -värdena för x- och y-koordinaten med 1 till 0,5 (det vill säga vi minskar halvvägs). Det är också önskvärt att undvika att foder, tilldela alla spelobjekt till alla spelobjekt (med undantag för bakgrunden) Nonzero lager ordning (ordning i lager):

Det sista steget i förberedelsen av spelobjekt från bilderna kommer att "hänga" på dem Collider (Collider). I Unity3D används kollidrar som interaktionsdetektorer mellan objekt. Det är faktiskt ett virtuellt skal bärs på vår bild, som kan registrera att röra den.

Om du vill lägga till en Collider till ett objekt väljer du det i hierarkifönstret, och sedan i inspektörsfönstret, klicka på knappen "Lägg till komponent". I komponentlistan som visas söker vi fysik 2D (den vanliga 3D-fysiken i vårt läge fungerar inte) och där från alla alternativ är det mest lämpligt för "Circle Collider 2D". Jag väljer det. En grön stroke kommer att visas runt vårt föremål, som visar kolliderarens gränser. Det är bara att markera varan "är utlösare" för att göra vår Collider bara registrera pressen och inte längre interagera med det omgivande spelutrymmet:

Liknande åtgärder upprepar för alla återstående föremål. Olika från andra föremål kommer bara att vara vår bakgrund. För honom tillämpar vi Box Collider 2D och uppvisar position z mer noll för att trycka kollidaren och bakgrunden till bakgrunden (detta är användbart för oss lite senare).

Arbeta med ljud

Med ljud i Unity 3D vid första anblicken är allt lite förvirrat. Men vi kommer att försöka räkna ut det i ordning :)

Först och främst måste vi dra alla ljud i ljudmappen och konfigurera dem också:

Om volymen för alla ljud är initialt justeras, är allt som måste göras för att stänga av 3D-ljudbehandling. I tredimensionella spel behövs denna behandling för att imitera approximationen av ljudkällan när kameran närmar sig den. Men i 2D kan vi göra någonting, så vi allokerar varje ljud i sin tur och tar bort kryssrutan "3D-ljud".

Nu kan vi fortsätta att lägga till ljud till spelobjekt. För att göra detta måste vi markera varje knapp i sin tur och lägga till den en ny "ljudkälla" -komponent från avsnittet "Audio". När komponenten läggs till väljer du motsvarande knapp "AUDIO CLIP" och ta bort kryssrutan för standard "Play on Awake" (spela när du visas):

När alla ljud är anslutna till de högra knapparna kommer tiden att komma till det mest intressanta - skriptet ...

Första skriptet

Innan du börjar demontera vårt första skript är det förmodligen värt ett par ord att säga om skriptsystemet i Unity 3D.

Uniti låter dig skriva kod omedelbart på tre språk: Javascript (mer exakt, den är lite modifierade UnityScript-versionen), C # och Boo. I ett antal böcker och manualer kan du hitta den åsikt som för nybörjare, skriptet i enhet är lättare att behärska på javascriptets exempel. Men detta språk är inte så bekvämt som resten, och i framtiden kommer du sannolikt att bli indragen. Därför är det bättre att omedelbart börja med studien av C # (Boo är inte heller dålig, men det finns få pedagogiska material på den).

Nu om var du ska skriva kod. Som standard är koden i enhet IDE monodevelop. Fördelen med denna utvecklingsmiljö är att den har tips att snabbt ange standardmetoder, klasser och funktioner, liksom syntaxkontrollsystemet. Men minus för mig var besvärlig och hög resursintensitet. Lyckligtvis, i Unity-inställningarna, kan du installera som en textredigerare, allting, så jag "suspenderad" lätt och funktionell anteckningsblock ++ (nästan alla exempel kommer att visas i den).

Och sist. Naturligtvis, utan referensmaterial i utvecklingen av alla visdomar, kommer du inte att gå långt, så här är en lista över flera förnuftiga internetresurser på Unity 3D:

  • http://docs.unity3d.com/ru/current/manual/unitymanualrestructured.html - den officiella handboken på motorn med en partiell översättning till ryska (det verkade nyligen och medan det fungerar instabilt);
  • http://docs.unity3d.com/ru/current/scriptreference/index.html - Officiell manuell-katalog för skript på engelska;
  • http://unity3d.ru/distribution/index.php - Russian-Language Developer Forum under Unity 3D;
  • http://habrahabr.ru/post/141362/ - Lektionscykel för att skapa tredimensionella spel i Habrahaber;
  • http://msdn.microsoft.com/ru-ru/library/618ayhy6.aspx är den officiella C # handboken från Microsoft på ryska.

Tja, för att inte dra det länge, föreslår jag att genast skapa det första skriptet. Under skript, om det finns många fler, är det bättre att markera en separat mapp, men vi kommer att ha ett enkelt spel, så vi kan skapa ett skript direkt i projektets rotmapp. För att göra detta, ring snabbmenyn i fönstret Projekt, välj Skriptlistan och klicka på "C # Script". Låt oss ringa vårt nya skript, till exempel, ljud och öppna det med en dubbel mus. Ta bort standardmetoderna för uppdatering och starta, och sedan, tala det önskade vi får följande typ av skript:

Om du inte omkonfigurerar redaktören, öppnas vårt skript i Monodevelop. Vi kommer att analysera sin struktur ...

Faktum är att varje skript på C # består av tre huvuddelar:

  1. Svart är biblioteken listade som du behöver ansluta till skriptoperationen (till exempel "med hjälp av Unity.Engine" ansluts till själva motorns funktion, och "Använda system.Collections" är ett bibliotek som innehåller a Antal inbäddade klasser för skriptoperationen under olika system).
  2. Klass och variabel deklaration. I C # Det finns inget koncept av ett skript, som sådant. Istället används begreppet "klass", vilket innehåller ett antal metoder och funktioner. Även om det i själva verket i samband med Unity 3D är det nästan samma sak :) Det viktigaste är att komma ihåg att klassnamnet måste matcha namnet vi gav skriptet. Funktionen hos variablerna i C # är att de nödvändigtvis (förutom de tillfälliga, som förklaras i själva skriptet) måste skrivas. I praktiken innebär det att åtkomstnivån ska anges för variabeln och typen (int, float, bool eller eller som vi i skriptet, Audioclip. I det här fallet kan det variabla namnet ges någon. Och jag kan omedelbart och värdeattribut.
  3. Sats med metoder och funktioner. Metoden i C # är praktiskt taget vilken funktion som utför vissa åtgärder. I princip, i litteraturen om Unity 3D, kallas de funktioner, men om vi pratar om C # som ett separat programmeringsspråk är det, metoderna :). Funktioner i ren form i Uniti är till exempel standard ljudutgångsfunktioner, ritning GUI-element etc. som används inuti metoder.

Att veta nu skriptets struktur är det inte svårt att förstå sin mening, som kommer ner till nästa ... i klassen (skript) låter vi förklara 9 variabler av typen av audioclip med namnen på dem för bekvämligheten att skilja dem med namn. Vi gör dem nödvändigtvis offentliga (privat kommer inte att visas i redigeraren, och vi måste "hänga" ljud via redigeraren). Och sedan i skriptets kropp använder vi standardmetoden "void onmousedown ()". Tidigare svarade han bara hanteringen av att klicka med musen, men i nya versioner tolkas och som rör pekskärmen. Vi skriver de villkor för vilka vi kontrollerar namnen på de stängda kollidrarna och, om vi hittar pressen på en av dem, mata ut motsvarande ljud (vi använder funktionen Standard Audio.PlayOnesHot);).

När du skriver koden följer du noggrant närvaron av alla öppnings- och stängningsfästen annars kommer du ständigt att få felrapporter i konsolen och du kan inte starta ditt projekt! Var också uppmärksam på användningen av metoder och funktioner i stora bokstäver. De orsakas ofta av misstag. Och, naturligtvis, behåll alla skyltar (poäng, kolon och parentes), kortare, språksyntax. Först blir det svårt, men över tiden börjar du skriva från början utan fel!

När skriptet är klart, välj det i inspektörsfönstret, tilldela ditt ljud från varje variabel. Nu har vi bara att tillämpa vårt skript till föremål på scenen. Det enklaste sättet att göra är igen genom att dra skriptet direkt till rätt spelobjekt i listan över hierarki:

Om skriptet slogs korrekt, ska det visas i inspektörsfönstret vid det objektet som vi slog det. Därför drar du skriptet till alla objekt som ska låta i spelet och kan försöka köra det. När du klickar på våra spelknappar nu, slutligen kommer det angivna ljudet att låta!

Introduktion till GUI.

I princip har spelet redan fungerat, men en slags skallig ". Det finns inte tillräckligt med något i det ... och åtminstone inskriptionerna med titeln som ligger framför oss! Med andra ord måste du genomföra ett distinkt användargränssnitt.

Egentligen är GUI en minskning från engelska. "Grafiskt användargränssnitt", det vill säga det grafiska användargränssnittet. Traditionellt innehåller den sådana komponenter som:

  • knappar;
  • fönster;
  • textområden;
  • chekboxes och / il radiocans;
  • sloters (Scroll Bar), etc.

I Unity 3D är allt detta (och till och med något över det) helt närvarande. Det viktigaste är att lära sig att använda det! Tänk på hur GUI-medel i enighet kan göra en enkel inskription av rubriken.

För att göra detta, skapa ett nytt skript med namnet gränssnitt och ändra det enligt följande:

Tänk på skriptet i skärmdumpen. Här skriver vi bara en offentlig variabel ny för amerikansk typ Guistyle. Denna typ tillåter visuellt läge att ändra utformningen av de föremål som den här stilen är tilldelad. Stilar är lämpliga att använda om det finns många delar av gränssnittet av samma typ (till exempel knappar), men de borde ha ett annat utseende.

Därefter skapar vi en knapp ("GUI.Button), som har följande syntax: villkor - 4 koordinater (inslag horisontellt från vänster kant, indrag vertikal från toppkanten, bredden, höjd) - synlig text i citat och vidare , Eventuellt ingångsstil. Inuti förhållandena för knappen är de nödvändiga funktionerna föreskrivna. I vårt fall föreskrev vi övergången till utvecklarplatsen ("application.openurl ("); ").

Skript med GUI kan arbeta med några spelobjekt, men vanligtvis rekommenderar de "hänga" till kameran som vi kommer att göra, dra skriptet till huvudkameraobjektet. Nu, om du är markerad i hierarkinfönstret, i inspektörsfönstret, kommer vi att kunna se en offentlig variabel i vår stil, distribuera vilka vi får full tillgång till inställningarna för denna stil!

Vi kan ange textens färg och texturen för bakgrunden i alla situationer (för den knapp du behöver registrera tre av dess alternativ (normal - normal vy, svävar - när du svänger och aktiv - när du klickar), ställer du in streck Och konfigurera teckensnittet. Som standard är den enda tillgängliga i Unity 3D-teckensnittet Arial, men du kan manuellt ladda någon annan i projektet och applicera det i fältet Font genom att konfigurera alla relaterade parametrar.

Det som är intressant och samtidigt är det inte helt bekvämt, GUI-elementen visas inte på scenen tills vi startar projektet, så justeringen av parametrarna för varje element kan ta mycket tid. Låt oss starta projektet och se hur vår knapp som skapas ovan kommer att se ut:

Ändra gränssnitt för tillstånd och statiska variabler

Vi har redan gjort mycket, men det finns alltid mycket att förbättra :) Därför föreslår jag som det sista exemplet för att skapa ett referensfönster, som vanligtvis normala utvecklare ger sina spel och applikationer. För att göra detta, lägg till en bild i en mapp med bilder för en sådan knapp som ett frågetecken och göra ett spelobjekt från det. Vi kan hänga en kollider på den och skriva ett skript med ett namn, till exempel "hjälp" enligt följande:

I det här skriptet har vi två variabler. Den första variabeln definierar huden som kommer att användas för alla gränssnittselement som beskrivs i den här klassen. Till skillnad från stilar kan det arbete som vi tittade ovan, skinnen tillåter dig att ändra utseendet på inte bara ett separat objekt som de tillskrivs, och alla delar av en viss typ omedelbart. Dessutom, till skillnad från stilar, är skinnen inte föreskrivna till elementen, men förklaras omedelbart för hela metoden och arbeta tills en annan hud förklaras. Det bör också komma ihåg att skinn inte bara finns i form av variabler, utan också som separata filer. Därför, innan du förklarar huden, måste du omedelbart skapa den i fönstret "Projekt" från snabbmenyn: "Skapa" - "GUI Skin".

Den andra variabeln är logisk (eller i en annan bulev). Det kan bara ha två värden: "Sanning" (TRUE) eller "FALSE" (FALSE). På grund av sin binära natur är en sådan variabel perfekt för genomförandet av alla slags omkopplare. I vårt fall är det ansvarigt för att visa text med beskrivningen av vårt spel.

Men om du ser uppmärksamt kan du se att den sista variabeln har en underbar parameter - "statisk". Att lägga till variabler av en sådan parameter gör att du kan göra dem statiska och få tillgång till dem från andra skript!

Men tillbaka till resten av koden. Redan är bekant att "void onmousedown ()" -metoden här kommer att fungera som en omkopplare på variabeln "iskounible" med ett enkelt skick. Men efter det finns det en annan funktion. Denna funktion ("debug.log ();") tjänar till att matas ut "på flugan" i konsolen av värdena för de variabler vi behöver (vi går utan citat i parentes). Som du kan se, i funktionen kan du kombinera både oföränderlig text (skrivet i citat) och variabler (utan citat). Det viktigaste är att endast "+" -tecknet mellan alla data.

Nästa, på skripttexten, har vi en metod för att rita ett gränssnitt ("void ongui () ()"), inom vilken vi ser en ny hud ("Gui.skin \u003d hjälpskinn") och ett nytt element i GUI.BOX typgränssnitt. Till skillnad från en knapp är boxning ett inaktivt element och brukar användas för att mata ut olika text- eller grafiska data.

Var uppmärksam på hur vi ställer in positioneringen för boxning. Här är alla värden inte direkt angivna, men med hjälp av matematiska uttryck, som i själva verket är en analog av en "gummi layout" i webbutveckling. Problemet är att när de specificerar de exakta dimensionerna av GUI-elementen med olika skärmupplösningar, kommer de inte att anpassa och kan vara antingen för små, eller, tvärtom, stor. I nästa version lovar motorutvecklarna att göra GUI Adaptive, men måste fortfarande vara perverterad :(

Det sista steget mot framgång kommer att vara konfigurationen av vår hud. I skriptvariabeln, ange skinnfilen och välj sedan den här filen i projektfönstret. När det gäller andra filer visas skinninställningarna i inspektörsfönstret. Här söker vi det element som kan ändras (i vår fodral), vi avslöjar det och konfigurerar samma stil på samma sätt som ovan:

För att se om vårt skript fungerar korrekt, starta projektet och försök klicka på Hjälp-knappen:

Nu fungerar allt, men det är inte alltid bekvämt att trycka på hjälpknappen för att dölja beskrivningen tillbaka. Mer bekant till försvinnandet av alla meddelanden att peka i något ledigt utrymme än att sikta i knapparna. Och här är vi bara användbara för oss att vi gjorde en variabel "esVisible" statisk, liksom hängde på bakgrundsbilden av collider ...

Låt oss gå tillbaka till vårt första skript ("ljud"), som höll på att trycka på knapparna för att spela ljud. I det (mer exakt, inuti metoden "ogiltig onmousedown ()"), kommer vi tillräckligt att föreskriva en rad:

om (This.Name! \u003d "HelpButton") (help.isvisible \u003d False;)

Med den här raden anger vi villkoret: Om namnet på den pressade collidaren inte är lika med hjälpknappsnamnet, kommer "ISISIBLE" -variabeln i "Hjälp" -skriptet att vara "false". Det är bara nödvändigt att den variabla "ignorible" exakt hade en "statisk" recept, annars får vi ett misstag.

Nu vid uppstart ser vi att vårt hjälpfönster stängs när du trycker på inte bara knappen i övre högra hörnet, men också när du rör någon gratis del av skärmen. Det enda som kan förbättras är att fönstret är dolt och genom att klicka på det själv ... Det blir ditt "läxa";) Jag kommer bara att säga att GUI-Boxen måste ändra samma dekorerade Knapp, igen, med inställningshuden och förskriva en funktion som ändrar variabeln ". Allt, då tyst :)

Kompilera spel och spara projekt

Slutligen arbetar allt med oss! Det betyder att det är dags att hålla vårt spel och testa på den riktiga enheten. Och för detta måste den sammanställas i den körbara filen (för Windows, till exempel i EXE och för Android i APK).

Om du vill kompilera spelet för en dator behöver du inte göra några preliminära inställningar. Men för Android måste du först ansluta den nedladdade av oss i början av Android SDK. Det här är ganska enkelt: Vi går till menyn "Redigera", ring "Preferences" -posten och i fönstret som öppnas, gå till fliken "Externa verktyg". Här söker vi en sträng "Android SDK-plats" och i den anger sökvägen till det uppackade arkivet med SDK (se skärmdump nedan). Förresten, här kan du ändra den aktiva standardmonoderta textredigeraren till din favorit :)

Och nu är sanningens ögonblick det ögonblick! Vi går till menyn "File" och letar efter objektet "Bygginställningar". I fönstret som öppnas måste vi omedelbart lägga till scener att bygga. Om scenen är en (som i vårt projekt), kommer det att räcka för att klicka på knappen "Lägg till aktuell". Om det finns flera av dem, kommer det att vara nödvändigt att öppna var och en av dem och göra ett liknande sätt till listan över scener, och sedan genom att dra för att konfigurera den ordning du behöver:

Nästa steg är att välja monteringsplattformen (vi planerar spelet under Android, det betyder att det är valt) och tryck på "Player Settings" -knappen nere. I inspektörsfönstret är ett antal inställningar från vilka vissa är obligatoriska eller mycket önskvärda öppna. Det är önskvärt att ange namnen på utvecklaren, programmet och dess ikoner (företagsnamn, produktnamn och standardikon) längst upp i listan över inställningar.

På botten av samma del i avsnittet "Övriga inställningar" finns två obligatoriska parametrar: "Bundle Identifier" och "Bundle Version". Standardversionen är fäst som 1,0, men identifieraren måste skapas manuellt och helst unik. Det ska bestå av tre delar separerade av prickar: det reserverade ordet "com", sedan namnet på utvecklarens företag, och i slutet av ansökans namn.

De återstående monteringsinställningarna kan ändras på egen hand eller inte alls. Det viktigaste är att nu kan kompileringen redan startas. För att göra detta är det tillräckligt att trycka på "Build" -knappen i fönstret "Bygginställningar" och vänta tills programmen ger oss en klar, packad i APK-filansökan :)

Slutsats

På detta kommer vår lektion överblick för att skapa de enklaste applikationerna för Android till ett slut. För att du ska kunna upprepa allt vi pratade om, i slutet av artikeln, kommer jag att ge en länk till arkivet, där alla spelresurser lagras i form av en separat mapp (om du vill göra allt från Skrapa) och som en fil med UnityPackage-tillägget. Den sistnämnda gör att du kan importera hela projektet i Uniti samtidigt, inklusive beroenden, etc.

För att importera vårt projekt (och förresten måste alla plugins nedladdade från Internet eller tillgångara) gå till menyn "Tillgångar", välj "Importera paket" och i den "Custom PacKe", varefter du anger Sti till vår fil och tryck på "Importera" -knappen. Förresten, gör en fullständig säkerhetskopia av ditt projekt, med att spara i en sådan enhet kan du från samma meny ("tillgångar") genom att klicka på "Exportera paket".

Det verkar, allt :) Som en person som behärskade Unity 3D från början, i artikeln försökte jag ge svar på det maximala antalet frågor och markera de främsta nyanserna att arbeta med den motorn som uppstår först. Men kanske kommer inte att räcka, så om du har några frågor, kan du hantera antingen direkt till mig på posten, eller på forumet: Vad kan jag hjälpa!

Jag önskar er all lycka till och framgångsrikt genomförande av alla projekt!

P.S. Det är tillåtet att fritt kopiera och citera den här artikeln om du anger en öppen aktiv referens till källan och upprätthåller författningen av Ruslana-näringsidkaren.

Enighet 3D kommer att vara en oumbärlig assistent för dem som professionellt närmar sig uppgiften att skapa kvalitetsmaterial. Applikationen Integrerade färdiga modeller, skript och texturer som kan kompletteras med ditt eget innehåll - bilder, ljud och videoinspelningar.

Färdiga produkter skapade i Unity 3D är kompatibla med nästan alla populära plattformar - allt från mobiltelefoner och slutar med smarta TV-TV.

Programkapacitet:

  • lärande enhetsmotor;
  • flexibel multifunktionell redigering;
  • hög kompileringshastighet;
  • lätt att mastera gränssnittet;
  • kompatibilitet med ett stort antal plattformar.

Driftsprincip

För att använda programmet måste du ladda ner Unity Hub-plattformen, och du kan prova funktionerna i den fria versionen av Personal Through IT. Den är tillgänglig på volymen av monetisering på upp till 100 tusen dollar årligen.

Förutom det fria alternativet kan du prenumerera på två andra utökade versioner:

Unity Plus (~ $ 25 månadsvis) - Ger begränsad tillgång till kundsuccesstjänsten, samlar in information om fel på användarenheter, bildskärmar.

Unity Pro (~ $ 125 Monthly) - Maximal prenumerationsalternativ. Ger stöd från professionella utvecklare, det gör det möjligt att få prioriterad tillgång till stöd från programskapare, innehåller förbättrade funktioner för övervakning av prestanda och samla statistik.

Att bygga alla spelåtgärder bygger på en ganska högkvalitativ fysisk kärna i programmet (PhysX), från vilken modellernas beteende beror på. På grund av möjligheten att importera texturer och objekt kan produkten ges unikhet eller använda de verktyg som är integrerade utvecklaren. Det är viktigt att förstå att varje objekt som skapats i denna designer är en specifik uppsättning skript och evenemang, som kan hanteras oberoende.

För professionellt arbete med Unity 3D är det nödvändigt för en tid att bekanta sig med gränssnittet och ansökans kapacitet. För att göra detta, på internet kan du hitta många rullar eller besök specialkurser, som hålls i många större städer.

Det bör noteras att du ska arbeta med 3D-grafik måste du ha en modern dator med ett hårdvarukort.

Fördelar:

  • praktiskt taget obegränsad funktionalitet för att skapa projekt;
  • stöd för Browser 3D-grafik;
  • kompatibilitet med spelkonsoler och moderna TV-apparater;
  • ett stort antal visualiseringsverktyg;
  • det finns en gratis version.

Minuses:

  • för att skapa en högkvalitativ produkt behövs särskild kunskap;
  • det finns ingen möjlighet till mycket fin konfiguration av programmets fysiska kärna.
  • det finns ingen gränssnittsöversättning till ryska.

Du kan ladda ner Uniti 3D inte bara för att förbereda en konkurrent till en populär online Jaggernaut leksak (som också dras av verktygen i hjälten i vår recension), men också att skapa chic tredimensionella presentationer. Låt det ta lite längre tid, men WOW-effekten för publiken är garanterad.

För att möta plattformens kapacitet är det tillräckligt att ladda ner den fria versionen av Unity 3D. Om du behöver tillgång till källkoden, ta en titt mot de betalda versionerna.

Analoger:

  • Game Editor - En gratis app för att skapa spel;
  • Konstruera 2 är en populär speldesigner, som kännetecknas av ett enkelt gränssnitt.
  • Konstruera 2 är ett kraftfullt program för att skapa 2D-projekt.