Les 04

Les 04
Scriptable Objects
Laatste text adventure!

1 / 21
suivant
Slide 1: Diapositive
Programming - FundamentalsMBOStudiejaar 2

Cette leçon contient 21 diapositives, avec diapositives de texte.

time-iconLa durée de la leçon est: 120 min

Éléments de cette leçon

Les 04
Scriptable Objects
Laatste text adventure!

Slide 1 - Diapositive

Vooraf
Maak een nieuw 2D project aan.
In dit Project maak je ook een folder genaamd Scripts en hierin maak je 2 scripts aan; MyAdventure.cs en TextScriptableObject.
Zet in de Scene van je project ook weer een canvas met een text vlak.

Slide 2 - Diapositive

Scriptable Object
Wat is het?
Data containers. Je kan er veel data in op slaan die niet verandert wordt. Deze data kan je dan vervolgens uitlezen en gebruiken.

Slide 3 - Diapositive

Scriptable Object - Maken
Als eerste willen we MonoBehaviour weghalen van onze inheritence, dit willen we vervangen met ScriptableObject.



Slide 4 - Diapositive

Scriptable Object - Maken
Om in het Project window van Unity een Scriptable Object aan te kunnen maken hebben we nog iets extra's nodig boven de Class.

File name is de default name die een nieuw object krijgt.
Menu name is de naam voor als je over create hovert.

Slide 5 - Diapositive

Scriptable Object - Maken
Menu Name
File Name

Slide 6 - Diapositive

Scriptable Object - Maken
In ons Scriptable Object script kunnen we allerlei variables stoppen, vandaag hebben we er echter maar 2 nodig.
Een string voor de text en een int als Room code.

Slide 7 - Diapositive

Scriptable Object - Maken
Zoals je ziet hebben we ook een [TextArea] boven onze string, dit zorgt er voor dat we in de inspector een groter vlak hebben om text in te typen. Best handig dus!
De (15, 20) besluit hoe groot het vlak is en mag zijn.

Slide 8 - Diapositive

Scriptable Object - Gebruiken
Voor iedere kamer/state waar de speler zich in kan bevinden maken we een Scriptable Object aan.
Deze willen we daarna op gaan slaan in een lijst. Deze lijst maken we aan in ons MyAdventure script.

Slide 9 - Diapositive

Scriptable Object - Gebruiken
Verder willen we nog een paar andere variables aanmaken in de MyAdventure class.

Slide 10 - Diapositive

Scriptable Object - Gebruiken
Text textArea -> het text element dat we aan willen passen naar ons verhaaltje.
TextScriptableObject currentTextObject -> Houdt ons huidige Scriptable Object bij, deze gebruiken we om de text aan te passen.

Slide 11 - Diapositive

Scriptable Object - Gebruiken
int currentRoomID -> Houdt bij wat onze huidige RoomID is, dit gebruiken we ook om onze currentTextObject bij te houden.
int lastRoomID -> Dit houdt onze vorige room id bij, dit gebruiken we om later een stapje terug te kunnen nemen.

Slide 12 - Diapositive

Scriptable Object - Gebruiken
In de start functie willen we een aantal variables een waarde geven, we zetten ons currentRoomID op 0 en ons currentTextObject zetten we gelijk aan het eerste TextScriptableObject in de lijst.

Slide 13 - Diapositive

Scriptable Object - Gebruiken
Daarna in de update gaan we met een for loop door de lijst heen. Hierin controlleren we of ons currentRoomID overeen komt met een RoomID van het ScriptableObject. Als dat zo is zetten we ons currentTextObject naar dat TextScriptableObject.

Slide 14 - Diapositive

Scriptable Object - Gebruiken
Hieronder de for loop voegen we nog een extra lijn aan code toe. Deze update de tekst in ons TextArea naar de string van onze currentTextObject.

Slide 15 - Diapositive

Scriptable Object
Om een volgend TextScriptableObject te laden kunnen we verschillende dingen doen. De simpelste is controlleren voor een button input en dan currentRoomID eentje omhoog te gooien. Dit is vooral handig als je een lineair verhaal hebt.

Slide 16 - Diapositive

Scriptable Object
Zoals je waarschijnlijk zag zet ik ook lastRoomID gelijk aan currentRoomID, dit doe ik expres voordat ik currentRoomID update en verhoog. Hiermee hou ik bij wat het vorige ID was zodat ik daar naar terug kan gaan met een knop.

Slide 17 - Diapositive

Scriptable Object
Als je wilt dat de speler meerdere opties heeft wordt het iets ingewikkelder, dit kan dan met if/else if statements of met een switch case. Ook in de switch case wil je nogsteeds if statements gebruiken om voor input te checken.

Slide 18 - Diapositive

Scriptable Object - if/else if
if/else if komen er dan uiteindelijk zo uit
te zien. Redelijk overzichtelijk nog!

Slide 19 - Diapositive

Scriptable Object - Switch
En zo zou het er uit komen te zien met een
switch case. Persoonlijk vind ik dit fijner
werken maar allebei zijn prima!

Slide 20 - Diapositive

Slide 21 - Diapositive