Les 04

Les 04
Scriptable Objects
Laatste text adventure!

1 / 21
next
Slide 1: Slide
Programming - FundamentalsMBOStudiejaar 2

This lesson contains 21 slides, with text slides.

time-iconLesson duration is: 120 min

Items in this lesson

Les 04
Scriptable Objects
Laatste text adventure!

Slide 1 - Slide

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 - Slide

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 - Slide

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



Slide 4 - Slide

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 - Slide

Scriptable Object - Maken
Menu Name
File Name

Slide 6 - Slide

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 - Slide

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 - Slide

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 - Slide

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

Slide 10 - Slide

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 - Slide

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 - Slide

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 - Slide

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 - Slide

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 - Slide

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 - Slide

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 - Slide

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 - Slide

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

Slide 19 - Slide

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 - Slide

Slide 21 - Slide