Stap 6: De Play knop laten werken!
Je kunt zelf bepalen wat zo’n standaard Unity knop moet doen als je erop klikt door een script te schrijven met daarin een kleine ‘functie’ die door de knop wordt uitgevoerd als erop geklikt wordt.
De Play knop die je maakt voor deze tutorial hoeft slechts éen ding te doen als erop geklikt wordt, namelijk Level 1 laden, maar het is ook mogelijk om een knop meerdere dingen achter elkaar te laten doen als erop geklikt wordt, bijvoorbeeld een geluid maken en een lampje laten knipperen.
Je kunt de regels code daarvoor onder elkaar in een zogenaamde ‘functie of method’ schrijven. Zo’n functie code blok of ‘machine’ kun je zelf een naam geven en ‘starten’ door ergens anders in je script de naam van die functie te schrijven, of, in dit geval, wanneer er op een knopje gedrukt wordt.
Klik in de Menu balk op ‘Assets > Create > C# Script’, om een nieuw script te maken. Geef dit script bijvoorbeeld de naam “PlayButton” en open het script door erop te dubbelklikken.
Verander het script zodat het er uitziet zoals hieronder en let er op dat je ook de regel met ‘using UnityEngine.SceneManagement;’ in je script schrijft.
Door deze regel kun je in het script gebruik maken van de SceneManagement functies/opties van Unity waar ook de functie om een scene te laden bij zit.:
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
public class PlayButton : MonoBehaviour
{
public void LoadLevel ()
{
SceneManager.LoadScene(“Level 1“);
}
}
De ‘Start ()’ en de ‘Update ()’ functie worden door dit script niet gebruikt, dus deze kun je uit het script verwijderen.
In plaats van de standaard Unity Start () en Update () functies, staat er in dit script alleen een zelfgemaakte functie met de zelfverzonnen naam “LoadLevel ()”.
Functie namen worden altijd met een hoofdletter begonnen om gemakkelijk onderscheid te kunnen maken tussen functies en variabelen, die men met een kleine letter begint.
Functies hebben ook altijd gewone haakjes achter de naam, die niet altijd worden gebruikt. Deze zijn bedoeld voor informatie die je eventueel in een functie kunt stoppen om er wat mee te doen, dit noemt men de parameters.
Als je kijkt naar de LoadLevel () functie zie je dat deze de haakjes niet gebruikt, maar de LoadScene() functie gebruikt de haakjes voor de naam van de scene die de functie moet laden.
De loadScene() functie staat geschreven in een script van Unity met de naam SceneManager, vandaar dat dit nog voor de LoadScene () staat. De regel ‘SceneManager.LoadScene()’ verwijst dus eerst naar een ander script met de naam SceneManager en daarna naar een functie (stukje code) in dat andere script met de naam LoadScene().
Klik op Ctrl + S om het script op te slaan en keer terug naar Unity.
Om met de Play knop de functie uit het PlayButton script te kunnen gebruiken moeten we het script aan een object in het level vastmaken. Aan welk object je het script in de Hierarchy View vastmaak maakt niet veel uit, het zou aan de Main Camera vastgemaakt kunnen worden, maar voor het gemak kun je het ook aan een apart leeg object vastmaken.
Klik in de Menu balk op ‘GameObject > Create Empty’ en geef het lege object bijvoorbeeld de naam ‘LeegObject’:
Sleep het PlayButton script uit de Project View op ‘LeegObject’ in de Hierarchy View om het eraan vast te maken. Je kunt ook op LeegObject klikken in de Hierarchy View en daarna met de ‘Add Component’ knop in de Inspector View het script eraan vast maken:
Selecteer het ‘Button’ object van het Canvas in de Hierarchy View om de instellingen van het Button component te zien in de Inspector View.
Klik op het plus-teken in het On Click () gedeelte:
Sleep daarna het LeegObject object uit de Hierarchy View naar het vakje onder ‘Runtime Only’:
Klik op ‘No Function’ en selecteer ‘PlayButton > LoadLevel()’ :
De knop weet nu welke functie er gestart moet worden als er op de knop gedrukt wordt, namelijk de LoadLevel() functie in het PlayButton script.
In Principe hoeft er aan de knop nu niets meer gedaan te worden, maar om de knop te laten werken is het nog wel nodig om aan Unity te ‘vertellen’ welke van de scenes er ook echt met het spel mee doen. En welke er geladen moeten kunnen worden.
Klik in de Menu balk op ‘File > Build Settings’ en sleep daarna de twee Scene bestanden die je hebt, dus ‘Title’ en ‘Level 1’ uit de Project view naar het ‘Scenes In Build’ vak:
Je hebt nu alles gedaan wat nodig was om deze knop te laten werken.
Het lijkt als je dit de eerste keer doet misschien erg veel maar als je eraan gewend bent is het een heel erg flexibel systeem en is iedere volgende knop super snel gemaakt!
Ga verder naar Stap 7: Van het project een spel bouwen