Maak een 2D-platformgame met Unity en de Dolby Audio API

Wat je gaat creëren

Invoering

In deze tutorial leer je hoe je een mobiel 2D-spel maakt met C # en Unity. We zullen profiteren van de Dolby Audio-plug-in voor Unity om de audiale ervaring van het spel te verbeteren. Het doel van het spel is eenvoudig, de andere kant van het level bereiken terwijl je vijanden ontwijkt en munten verzamelt.

In deze tutorial leer je de volgende aspecten van Unity game-ontwikkeling:

  • opzetten van een 2D-project in Unity
  • Prefabs maken
  • bewegings- en actieknoppen
  • werken met natuurbotsingen
  • een spriteblad gebruiken
  • integratie van de Dolby Audio API

1. Maak een nieuw eenheidsproject

Open Unity en selecteer Nieuw project van de het dossier menu om het nieuwe projectdialoogvenster te openen. Vertel Unity waar u het project wilt opslaan en stel het inStandaardinstellingen instellen voor: vervolgkeuzemenu naar 2D.

 

2. Bouw instellingen

In de volgende stap krijgt u de gebruikersinterface van Unity te zien. Stel het project in voor mobiele ontwikkeling door te kiezen Bouw instellingen van de het dossier menu en selecteer Android als het doelplatform.


3. apparaten

Aangezien we op het punt staan ​​om een ​​2D-game te maken, is het eerste dat we moeten doen nadat we het doelplatform hebben geselecteerd, het kiezen van de grootte van de illustraties die we in de game zullen gebruiken. Omdat Android een open platform is, is er een breed scala aan apparaten, schermresoluties en pixeldichtheden beschikbaar op de huidige markt. Een paar van de meest voorkomende zijn:

  • Samsung Galaxy SIII: 720px x 1280px, 306 ppi
  • Asus Nexus 7 Tablet: 800 px x 1280 px, 216 ppi
  • Motorola Droid X: 854px x 480px, 228 ppi

Hoewel we ons in deze zelfstudie zullen concentreren op het Android-platform, kunt u dezelfde code gebruiken om een ​​van de andere platforms te targeten die Unity ondersteunt..


4. Grafieken exporteren

Afhankelijk van de apparaten die u target, moet u de illustratie voor het spel mogelijk converteren naar de aanbevolen grootte en pixeldichtheid. U kunt dit doen in uw favoriete foto-editor. Ik heb de Grootte aanpassen ... functie onder de Hulpmiddelen menu in OS X's Voorbeeld toepassing.


5. Unity gebruikersinterface

Voordat we beginnen, klikt u op de 2D knop in de Tafereel paneel. U kunt ook de resolutie wijzigen die wordt weergegeven in de Spel paneel.


6. Spelinterface

De interface van onze game is eenvoudig. De bovenstaande schermafbeelding geeft u een idee van de illustraties die we gaan gebruiken en hoe de uiteindelijke spelinterface eruit zal zien. U kunt de illustraties voor deze zelfstudie vinden in de bronbestanden van deze zelfstudie.


7. Programmeertaal

U kunt een van de drie programmeertalen gebruiken wanneer u Unity, C #, UnityScript, een variant van JavaScript en Boo gebruikt. Elk van deze programmeertalen heeft zijn voor- en nadelen en het is aan u om te beslissen welke u kiest. Mijn persoonlijke voorkeur gaat naar de programmeertaal C #, dus dat is de taal die ik in deze zelfstudie zal gebruiken.

Als u besluit een andere programmeertaal te gebruiken, neem dan eens een kijkje op Unity's Script Reference voor voorbeelden.


8. 2D-afbeeldingen

Unity heeft een naam opgebouwd als een geweldig platform voor het maken van 3D-games voor verschillende platforms, zoals Microsoft's Xbox 360, Sony's PS3, Nintendo's Wii, het web en verschillende mobiele platforms.

Hoewel het altijd mogelijk was om Unity voor 2D-game-ontwikkeling te gebruiken, duurde het tot de release van Unity 4.3 dat het native 2D-ondersteuning bevatte. In de volgende stappen leren we werken met afbeeldingen als sprites in plaats van texturen.


9. Geluidseffecten

Ik zal een aantal geluiden gebruiken om een ​​geweldige audiale ervaring voor het spel te creëren. De geluidseffecten die in deze zelfstudie worden gebruikt, zijn verkregen van as3sfxr en PlayOnLoop.


10. Activa importeren

Voordat we beginnen met coderen, moeten we onze activa toevoegen aan het Unity-project. U kunt dit op verschillende manieren doen:

  • kiezen Nieuwe activa importeren van de Middelen menu
  • voeg de items toe aan de map met items in uw project
  • sleep de activa in het projectvenster

Nadat u deze stap hebt voltooid, ziet u de items in uw project Middelen map in de project paneel.

11. Maak scène

We zijn klaar om de scène van ons spel te maken door objecten naar de te slepen Hiërarchie of Tafereel paneel.


12. Achtergrond

Begin met het slepen en neerzetten van de achtergrond naar de Hiërarchie paneel. Het zou automatisch moeten verschijnen in de Tafereel paneel.

Omdat het Tafereel paneel is ingesteld om een ​​2D-weergave weer te geven, zult u merken dat het selecteren van de Hoofdcamera in de Hiërarchie toont een voorbeeld van wat de camera gaat weergeven. Je kunt dit ook zien in de Spel uitzicht. Om de hele scène zichtbaar te maken, wijzigt u de Grootte waarde van de Hoofdcamera naar 1.58 in de Inspecteur paneel.


13. Verdieping

De vloer wordt gebruikt om te voorkomen dat onze hoofdpersoon valt wanneer we de fysica aan de game hebben toegevoegd. Sleep het van de Middelen map en plaats deze in de scène zoals hieronder wordt weergegeven.


14. Floor Collider

Om de vloer te laten detecteren wanneer het personage het aanraakt, moeten we een component toevoegen, een Box Collider 2D precies zijn.

Selecteer de vloer in de scène, open de Inspecteur paneel en klik Component toevoegen. Selecteer uit de lijst met componenten Box Collider 2D van de Natuurkunde 2D sectie.

15. Springknop

We zullen knoppen gebruiken om onze hoofdpersoon in het spel te besturen. Sleep en plaats de springknop in de Tafereel en voeg een toe Circle Collider2D component zoals getoond in de vorige stap.


16. Spring geluid

Om een ​​geluid te spelen wanneer het personage springt, moeten we het eerst aan de springknop koppelen. Selecteer het van de Hiërarchie of Tafereel weergave, klik op de Component toevoegen knop in de Inspecteur paneel en selecteer Geluidsbron in de audio sectie.

Haal het vinkje weg Speel op Awake en klik op de kleine stip rechts, onder het tandwielpictogram, om het geluid te selecteren dat we willen spelen als de speler op de knop tikt. In de volgende stap zullen we de logica implementeren voor het afspelen van het geluid wanneer de speler op de knop tikt.


17. Jump Script

Laten we het script maken dat ons karakter beheerst. Selecteer de springknop en klik op de Component toevoegen knop in de Inspecteur paneel. kiezen Nieuw script en noem het Springen. Vergeet niet om de taal te wijzigen in C #.

Open het nieuw gemaakte bestand en voeg het volgende codefragment toe.

gebruikmakend van UnityEngine; met behulp van System.Collections; public class Jump: MonoBehaviour public float jumpForce; privé GameObject-held; // wordt gebruikt om te verwijzen naar ons personage (held) op de scène // Gebruik dit voor initialisatie ongeldig Start () hero = GameObject.Find ("Hero"); // krijgt het hero game-object // Update wordt eenmaal per frame ongeldig Update () / * Controleer of de gebruiker de knop op het apparaat aanraakt * / if (Application.platform == RuntimePlatform.Android) if ( Input.touchCount> 0) if (Input.GetTouch (0). Phase == TouchPhase.Began) CheckTouch (Input.GetTouch (0) .position, "started"); // functie gemaakt onder else if (Input.GetTouch (0). Phase == Touch Phase.Ended) CheckTouch (Input.GetTouch (0) .position, "ended");  / * Controleer of de gebruiker de knop op de Editor aanraakt, wijzig de OSXEditor-waarde als u op Windows * / if (Application.platform == RuntimePlatform.OSXEditor) if (Input.GetMouseButtonDown (0)) CheckTouch (Input.mousePosition, "started");  if (Input.GetMouseButtonUp (0)) CheckTouch (Input.mousePosition, "ended");  void CheckTouch (Vector3 pos, string fase) / * Krijg het scherm punt waar de gebruiker contact opneemt * / Vector3 wp = Camera.main.ScreenToWorldPoint (pos); Vector2 touchPos = nieuwe Vector2 (wp.x, wp.y); Collider2D hit = Physics2D.OverlapPoint (touchPos); / * als knop wordt aangeraakt ... * / if (hit.gameObject.name == "JumpButton" && hit && phase == "started") hero.rigidbody2D.AddForce (new Vector2 (0f, jumpForce)); // Voeg sprongkracht toe aan hero-audio.Speel (); // speel audio af op dit spelobject (springgeluid)

Het codefragment lijkt misschien ontmoedigend, maar het is eigenlijk vrij eenvoudig. We krijgen eerst een verwijzing naar de held object, een instantie van de GameObject klasse, zodat we deze later kunnen gebruiken. We detecteren vervolgens of de gebruiker de springknop aanraakt en, als ze dat zijn, een kracht toevoegen aan de held voorwerp. Last but not least spelen we het springgeluid wanneer op de springknop wordt getikt.

18. Bewegingsknoppen

De stappen voor het toevoegen en implementeren van de bewegingsknoppen, links en rechts, lijken sterk op elkaar. Begin met het plaatsen van de knoppen in de scène en voeg een toe Circle Collider 2D op elke knop zoals we deden met de springknop.



19. Bewegingsscripts

Maak een nieuw script, koppel het aan de linkerknop en noem het Ga naar links. Vervang de inhoud door het volgende codefragment, dat het volgende bevat Ga naar links methode.

gebruikmakend van UnityEngine; met behulp van System.Collections; public class MoveLeft: MonoBehaviour public Vector3 moveSpeed ​​= new Vector3 (); private bool moving = false; privé GameObject [] scène; // reeks game-objecten die overeenkomen met de scène privé GameObject bg; // Gebruik dit voor initialisatie void Start () scene = GameObject.FindGameObjectsWithTag ("Moveable"); // Spelobjecten met beweegbare tag bg = GameObject.Find ("Achtergrond"); // Achtergrond van spel // Update wordt eenmaal per frame ongeldig Update () / * Detect touch * / if (Application.platform == RuntimePlatform.Android) if (Input.touchCount> 0) if (Input.GetTouch (0). Phase == TouchPhase.Began) CheckTouch (Input.GetTouch (0) .position, "started");  else if (Input.GetTouch (0) .phase == TouchPhase.Ended) CheckTouch (Input.GetTouch (0) .position, "ended");  if (Application.platform == RuntimePlatform.OSXEditor) if (Input.GetMouseButtonDown (0)) CheckTouch (Input.mousePosition, "started");  if (Input.GetMouseButtonUp (0)) CheckTouch (Input.mousePosition, "ended");  // Verplaatsen als knop wordt ingedrukt als (moving && bg.transform.position.x < 4.82f)  for (int i = 0; i < scene.Length; i++)  if (scene [i] != null)  scene [i].transform.position += moveSpeed;     void CheckTouch(Vector3 pos, string phase)  Vector3 wp = Camera.main.ScreenToWorldPoint(pos); Vector2 touchPos = new Vector2(wp.x, wp.y); Collider2D hit = Physics2D.OverlapPoint(touchPos); if (hit.gameObject.name == "LeftButton" && hit && phase == "began")  moving = true;  if (hit.gameObject.name == "LeftButton" && hit && phase == "ended")  moving = false;   

In dit script maken we een array met de elementen die zijn getagd als beweegbaar-we zullen ze later in deze zelfstudie labelen om het gemakkelijker te maken ze allemaal tegelijk te verplaatsen. Om de elementen te verplaatsen, controleren we eerst of de knop wordt aangeraakt en veranderen we de positie met bewegingssnelheid in de Bijwerken functie. Zo simpel is het.

Maak een ander script, koppel het aan de rechterknop en geef het een naam Ga naar rechts. Dit script bevat de Ga naar rechts methode en de uitvoering ervan is vergelijkbaar met die van de Ga naar links methode die we zojuist zagen. We veranderen de richting van de beweging door te vervangen += bewegingssnelheid met -= bewegingssnelheid. Hiermee verplaatst u de scène in de tegenovergestelde richting.

In de Ga naar rechts script, we controleren ook of de speler het niveau heeft voltooid.

gebruikmakend van UnityEngine; met behulp van System.Collections; public class MoveRight: MonoBehaviour public Vector3 moveSpeed ​​= new Vector3 (); private bool moving = false; privé GameObject [] scène; privé GameObject bg; openbare AudioClip compleetSound; privé GameObject [] knoppen; privé GameObject completeText; private bool ended = false; public Font goodDog; // Gebruik dit voor initialisatie void Start () scene = GameObject.FindGameObjectsWithTag ("Moveable"); bg = GameObject.Find ("Achtergrond"); buttons = GameObject.FindGameObjectsWithTag ("Buttons");  // Update wordt eenmaal per frame ongeldig Update () if (Application.platform == RuntimePlatform.Android) if (Input.touchCount> 0) if (Input.GetTouch (0) .phase == TouchPhase.Began ) CheckTouch (Input.GetTouch (0) .position, "started");  else if (Input.GetTouch (0) .phase == TouchPhase.Ended) CheckTouch (Input.GetTouch (0) .position, "ended");  if (Application.platform == RuntimePlatform.OSXEditor) if (Input.GetMouseButtonDown (0)) CheckTouch (Input.mousePosition, "started");  if (Input.GetMouseButtonUp (0)) CheckTouch (Input.mousePosition, "ended");  // Verplaatsen als knop wordt ingedrukt && stadium is niet over als (moving && bg.transform.position.x> -4.8f) for (int i = 0; i < scene.Length; i++)  if (scene [i] != null)  scene [i].transform.position -= moveSpeed;    // Stage Completed if (bg.transform.position.x <= -4.8f && ended == false)  Alert("complete");   void CheckTouch(Vector3 pos, string phase)  Vector3 wp = Camera.main.ScreenToWorldPoint(pos); Vector2 touchPos = new Vector2(wp.x, wp.y); Collider2D hit = Physics2D.OverlapPoint(touchPos); if (hit.gameObject.name == "RightButton" && hit && phase == "began")  moving = true;  if (hit.gameObject.name == "RightButton" && hit && phase == "ended")  moving = false;   public void Alert(string action)  ended = true; completeText = new GameObject(); completeText.AddComponent("GUIText"); completeText.guiText.font = goodDog; completeText.guiText.fontSize = 50; completeText.guiText.color = new Color(255, 0, 0); if (action == "complete")  AudioSource.PlayClipAtPoint(completeSound, transform.position); completeText.guiText.text = "Level Complete!"; completeText.guiText.transform.position = new Vector3(0.24f, 0.88f, 0);  else  completeText.guiText.text = "Game Over"; completeText.guiText.transform.position = new Vector3(0.36f, 0.88f, 0);  bg.GetComponent().Stop(); for(int i = 0; i < buttons.Length; i++)  buttons[i].renderer.enabled = false; Invoke("restart", 2);   void restart()  Application.LoadLevel(Application.loadedLevel);  

De alarm  functie maakt en geeft een bericht weer aan de speler en speelt het geluid af dat aan de achtergrondsprite is gekoppeld. Om dit te laten werken, voeg je het bijbehorende geluid toe aan de achtergrondsprite zoals we eerder in deze tutorial zagen. We verbergen ook de knoppen en herstarten het spel met een vertraging van twee seconden.

20. Sprite-blad

We gebruiken een sprite-blad voor de rest van de game-elementen. Unity heeft een spriteditor die het gebruik van sprites een fluitje van een cent maakt. De illustraties in deze tutorial zijn verkregen van OpenGameArt.org.

Importeer de illustratie, selecteer deze uit de Middelen paneel en wijzig de Sprite-modus optie om Meerdere in de Inspecteur paneel.

Open de Sprite Editor door op de onderstaande knop te klikken en selecteer Segment> Automatisch.


21. Held

Klik met het sprite-blad in plakjes en klaar voor gebruik op de pijl die verschijnt wanneer het sprite-blad is geselecteerd en kies de sprite voor de held, het hoofdpersonage van onze game. Plaats het ter plaatse en voeg een toe Collider 2D component ervan.


22. Hero RigidBody 2D

Om een ​​botsing met onze held te detecteren, moet ten minste één van de botsende voorwerpen een hebben RigidBody 2D component eraan verbonden. Selecteer om een ​​toe te voegen aan onze held Component toevoegen in de Inspecteur paneel gevolgd door Natuurkunde 2D > RigidBody 2D.

Controleer de Vaste hoek om te voorkomen dat de held draait als er een botsing plaatsvindt.

23. Heldengeluid

Wanneer onze held door een vijand wordt geraakt, spelen we een ander geluid om de speler feedback te geven. Als je Super Mario Bros. ooit hebt gespeeld, weet je waarschijnlijk welk effect we hebben. Om dit te bereiken, moeten we eerst het geluid toevoegen. Selecteer het van de Hiërarchie of Tafereel weergave, klik op de Component toevoegen knop in de Inspecteur paneel en selecteer Geluidsbron in de audio sectie.

De details van de audiocomponent worden weergegeven in de Inspector Panel. Klik op de stip onder het tandwielpictogram en selecteer de raken geluid.

24. Munten verzamelen

Zoals in veel traditionele 2D-platformspelers, kun je munten verzamelen in onze game. Omdat we dit object meerdere keren in het spel gebruiken, zullen we het omzetten naar een prefab zodra we alle benodigde componenten hebben toegevoegd.

Sleep de munt uit de Middelen map en voeg een toe Collider2D zoals we in de vorige stappen zagen.


25. Muntgeluid

We spelen een geluid wanneer onze held een munt verzamelt. Voeg een toe Geluidsbron component zoals we zojuist zagen en selecteer de munt geluid van de activa van het project.



26. Coin Script & Prefab

Voeg dit eenvoudige script bij de munt. Het detecteert wanneer de munt en de held botsen. De munt wordt vernietigd en er wordt een geluid gespeeld om aan te geven dat de munt door de held is verzameld.

gebruikmakend van UnityEngine; met behulp van System.Collections; openbare klasse GrabCoin: MonoBehaviour void OnTriggerEnter2D (Collider2D anders) if (other.gameObject.name == "Hero") audio.Play (); Vernietigen (gameObject.collider2D); gameObject.renderer.enabled = false; Destroy (gameObject, 0.47f); // Vernietig het object -na het gespeelde geluid

Met alle componenten op hun plaats, sleept u de munt uit de Hiërarchie paneel naar de Middelen paneel om het naar een te converteren prefab. Je zult zien dat de tekst blauw wordt, wat aangeeft dat het nu een Prefab is.


27. Vijand

Laten we de vijanden van het spel niet vergeten. Sleep de illustratie voor de vijand van de Middelen map en voeg er twee toe Collider 2D componenten zoals getoond in de onderstaande screenshot.


De botsers worden verkleind om te voorkomen dat de held in botsing komt met beide botsers tegelijk. Verander de instellingen van elk Collider 2D component zoals hieronder.

De eerste collider in het paneel is de bovenste collider die we hebben toegevoegd aan de vijand. Het detecteert of de held bovenop de vijand springt en deze vernietigt. De logica voor deze actie wordt weergegeven in het onderstaande script.

We markeren de tweede collider als een trigger door het selectievakje met het label aan te vinken Is Trigger. Het detecteert wanneer de vijand de held tegenkomt of andersom. Wanneer dat gebeurt, verliest de speler het spel.


Het script dat aan de vijand is bevestigd, wordt hieronder weergegeven en implementeert de logica die we zojuist hebben besproken. Zoals je kunt zien, wordt de vijand in elk frame naar links verplaatst en detecteert het script wanneer de held bovenop de vijand springt of wanneer de held de vijand inrijdt.

gebruikmakend van UnityEngine; met behulp van System.Collections; public class Enemy: MonoBehaviour public Vector3 moveSpeed; openbare AudioClip hitSound; openbare GameObject-melding Bridge; // Gebruik dit voor initialisatie ongeldig Start ()  // Update wordt eenmaal per frame ongeldig Update () transform.position - = moveSpeed; // Verplaats de vijand naar links void OnCollisionEnter2D (Collision2D anders) // Hero springt op vijand if (other.gameObject.name == "Hero") AudioSource.PlayClipAtPoint (hitSound, transform.position); Vernietigen (gameObject);  void OnTriggerEnter2D (Collider2D anders) // held raakt kant van vijand if (other.gameObject.name == "Hero") other.gameObject.audio.Play (); // Audio afspelen Vernietigen (other.gameObject.collider2D); // Verwijder de collider om te voorkomen dat audio wordt afgespeeld other.gameObject.renderer.enabled = false; // Maak het object onzichtbaar Vernietig (other.gameObject, 0.626f); // Vernietig object wanneer het geluid klaar is met spelen, het eerder vernietigen zal ervoor zorgen dat het geluid stopt met signaleren.Bridge.GetComponent (). Alert ("gameover"); 

28. stenen

Bakstenen worden gebruikt als platforms. De held kan op de stenen springen om vijanden te ontwijken en munten te verzamelen. Sleep de stenen afbeelding van de Middelen paneel en voeg een toe Collider 2D component ervan. Vergeet niet om het naar een te converteren prefab, omdat het behoorlijk in het spel gebruikt zal worden.


29. Het einde

We gebruiken een sprite om de finishlijn van het level te tonen. Sleep het van de Middelen paneel naar de Tafereel zoals getoond in de onderstaande screenshot.

30. Dolby Audio-plugin


Laten we de audiale ervaring van ons spel verbeteren door de Dolby Audio Plug-in voor Unity te gebruiken. Laat me echter eerst uitleggen waarom je de Dolby Audio-plug-in zou moeten gebruiken en hoe het je spel zal verbeteren.

Dolby Digital Plus is een geavanceerde audio-oplossing ingebouwd in vele mobiele apparaten, waaronder tablets. Mobiele applicaties kunnen via API de Dolby Digital Plus-mogelijkheden benutten. Enkele van de voordelen zijn Audio-optimalisatie, Volumemaximalisatie en Volumehooglating. Dolby heeft zijn API beschikbaar gemaakt voor verschillende platforms, waaronder Android en Kindle Fire. In onze game zullen we profiteren van de Dolby Audio Plugin voor Unity.

Merk op dat de plug-in voor Unity gratis te gebruiken is en zeer eenvoudig te integreren is. Met andere woorden, er is geen reden om het niet in je volgende spel op te nemen.

Begin met het downloaden van Dolby's Unity-plug-in. Je kunt het downloaden van de Unity Asset Store of rechtstreeks van de ontwikkelaarswebsite van Dolby. Als u voor de laatste optie kiest, maak dan een gratis account om de plug-in te downloaden of log in als u al een Dolby-ontwikkelaarsaccount hebt. Pak het pakket uit en kopieer de versie die u nodig hebt Activa> Plug-ins> Android. Zo eenvoudig is het om de plug-in voor Unity te installeren.

Maak een nieuw script en koppel het aan een object dat altijd in het spel aanwezig is, zoals de achtergrond of de camera. Geef het script een naam Dolby en vul het in met het volgende codefragment.

gebruikmakend van UnityEngine; met behulp van System.Collections; met behulp van System.Runtime.InteropServices; // Stelt ons in staat DLLImport publieke klasse Dolby: MonoBehaviour private GameObject debugText; public Font arial; / * Importeer plugin-functies * / [DllImport ("DSPlugin")] public static extern bool isAvailable (); [DllImport ("DSPlugin")] public static extern int initialize (); [DllImport ("DSPlugin")] public static extern int setProfile (int profileid); [DllImport ("DSPlugin")] public static extern int suspendSession (); [DllImport ("DSPlugin")] public static extern int restartSession (); [DllImport ("DSPlugin")] public static extern void release (); // Gebruik dit voor initialisatie ongeldig Start () / * Tekstveld gemaakt voor feedback * / debugText = nieuw GameObject (); debugText.AddComponent ( "GUIText"); debugText.guiText.font = arial; debugText.guiText.fontSize = 14; debugText.guiText.color = nieuwe kleur (255, 0, 0); debugText.transform.position = new Vector3 (0, 1, 0); / * Initialiseer Dolby indien beschikbaar * / if (is beschikbaar ()) Invoke (Init, 0.1f); // Wacht 100ms om te controleren of de Dolby-service is ingeschakeld else debugText.guiText.text = "Dolby Sound Not Available";  void Init () debugText.guiText.text = "Dolby Sound beschikbaar"; setProfile (2); / * Stel Profiel in op "Game" * / initialize ();  void OnApplicationPause () suspendSession (); // Dolby-geluid stopt als app is overgeschakeld of gepauzeerd void OnApplicationFocus () restartSession (); // Start Dolby-geluid opnieuw als app actief is void OnApplicationQuit () release (); // Stopt Dolby Sound volledig 

Ik ben er zeker van dat u het ermee eens bent dat het heel eenvoudig is om de Dolby Audio API in uw spel te integreren. We maken eerst een debugText object, dat van het type is GameObject, om feedback van het apparaat te ontvangen. Vervolgens importeren we de noodzakelijke functies die zijn gedefinieerd door de Dolby Audio API en initialiseren we de Dolby Audio API als het apparaat van de gebruiker dit ondersteunt.

Om ervoor te zorgen dat de Dolby-service is ingeschakeld, wachten we even (0,1 s) voordat we de initialiseren () methode. Als we dit niet doen, is er een kans dat u een ontvangt -1 fout, wat kan gebeuren wanneer u Dolby aanzet wanneer de service wordt gestart.

Dolby heeft ook functies om het geluid op te schorten en opnieuw op te starten wanneer dat nodig is, wat handig is wanneer we naar een andere toepassing overschakelen en we hebben geen behoefte aan de geluidsverbetering. Dit is belangrijk om batterijvermogen en andere apparaatbronnen te sparen. We kunnen de geluidsverbetering ook volledig stoppen door op te roepen vrijlating zoals we doen in OnApplicationQuit.


31. Testen

Het is tijd om de game te testen. Druk op Command-P om het spel in Unity te spelen. Als alles werkt zoals verwacht, bent u klaar voor de laatste stappen.


32. Spelerinstellingen

Als je tevreden bent met je spel, is het tijd om te selecteren Bouw instellingen van de het dossier menu en klik op de Speler instellingen knop. Dit zou de Speler instellingen in de Inspecteur paneel waar u de parameters voor uw toepassing kunt instellen.

Deze instellingen zijn toepassingsspecifiek en omvatten de maker of het bedrijf, de toepassingsresolutie, de weergavemodus, enzovoort. Deze instellingen zijn afhankelijk van de apparaten die u target en de winkels of markten waar u uw game op publiceert.


33. Pictogrammen en Splash-afbeeldingen

Met behulp van de afbeeldingen die u eerder hebt gemaakt, kunt u nu een leuk pictogram en een splash-afbeelding voor uw spel maken. Unity toont u de vereiste formaten, die afhankelijk zijn van het platform waarvoor u bouwt.

34. Bouw en speel


Zodra uw project correct is geconfigureerd, is het tijd om terug te gaan naar de Bouw instellingen en klik op de Bouwen knop. Dat is alles wat nodig is om uw spel te bouwen voor testen en / of distributie.

Conclusie

In deze zelfstudie hebben we geleerd over de nieuwe Dolby Audio-plug-in voor Unity, sprite-sheets, besturingselementen, botsingsdetectie en andere aspecten van game-ontwikkeling met Unity. Ik moedig je aan om met het resultaat te experimenteren en het spel aan te passen zodat het je eigen spel wordt. Ik hoop dat je deze tutorial leuk vond en vond het nuttig.