Opslaan, Laden en Hoogste Scores
Vaak wil je een spel maken waarin het bepaalde details herinnert van de vorige keer dat het gespeeld werd.
Wat je wilt opslaan, hangt sterk af van het spel of de app die je aan het maken bent. Of je nu een score, de positie of de algehele voortgang wilt opslaan, je moet plannen hoe en wat je wilt opslaan.
In deze tutorial behandelen we het opslaan van de score van een speler en het creëren van een eenvoudig high score of "Beste Vorige" score systeem.
Voor deze tutorial gaan we ervan uit dat je een eenvoudig spel hebt gemaakt waar de speler munten oppakt (Deel 5 van het maken van een platformspel), en het aantal munten wordt weergegeven met een label op het scherm.
Opslaan
Als het gaat om opslaan, zijn er twee belangrijke vragen die je jezelf moet stellen. Wat wil je opslaan, en wanneer moet je opslaan? In hyperPad kan het Opslaan-gedrag slechts één waarde tegelijk opslaan. Dus je moet echt nadenken over wat je opslaat.
In deze tutorial zullen we de score (aantal verzamelde munten) opslaan die wordt weergegeven met een label op het scherm.
Nu we weten dat we de score van het label opslaan, is de volgende stap om te bepalen wanneer we moeten opslaan.
Hier zijn veel opties, en ze zijn afhankelijk van je gameplay of algehele ontwerp. Je kunt het opslaan elke keer dat de speler de munt oppakt, opslaan wanneer de speler verliest, opslaan wanneer de speler het niveau voltooit, opslaan wanneer de speler op een knop drukt, of wat je ook maar nodig denkt te hebben voor jouw situatie.
Voor deze tutorial stellen we een knop in die de score opslaat wanneer de speler op de opslaanknop drukt. Dezezelfde gedragslogica kan worden toegepast als je wilt opslaan wanneer de speler verliest of het niveau voltooit. Je moet alleen deze gedragingen triggeren wanneer je wint of verliest.
Selecteer je Opslaan-button object en open de gedragingen.
Voeg vanuit de Interactie categorie in de gedragingeditor een "Gestopt met Aanraken"-gedrag toe.
Voeg nu vanuit de UI-categorie een "Haal Label Op"-gedrag toe en verbind het met het "Gestopt met Aanraken"-gedrag van de vorige stap.
Tik op het "Haal Label Op"-gedrag om de gedragingseigenschappen te bekijken. Tik vanuit de gedragingseigenschappen op het gebied dat het huidige object vertegenwoordigt, en selecteer dan het label in je scène dat je score vertegenwoordigt.
Voeg nu vanuit de Aangepast-categorie een "Opslaan naar Bestand"-gedrag toe en verbind het met "Gestopt met Aanraken".
Selecteer het "Opslaan naar Bestand"-gedrag dat je zojuist hebt toegevoegd om de gedragingseigenschappen te bekijken. Let op dat het "Sleuteltype" is ingesteld op bestaand. Bestaande sleutels zijn vooraf gedefinieerde dingen die je wilt opslaan.
Eerst moet je de titel of beschrijving toevoegen van iets dat je wilt opslaan. Dit wordt een "Sleutel" genoemd. Tik op de knop "Selecteer of Maak Sleutel" om de lijst met sleutels weer te geven.
Voer een beschrijvende titel in bovenaan en druk op de + knop om je eerste sleutel toe te voegen. Aangezien we de score willen opslaan, voer "Score" in als de sleutel.
Nu moet je daadwerkelijk de score van het label opslaan. Om dit te doen, geef je de waarde van de hoek van het "Haal Label Op"-gedrag naar het invoerveld van de eigenschappen van "Opslaan naar Bestand".
Dat is het! Op dit punt zou je spel je score moeten opslaan zodra je op de opslaan knop drukt. Maar je hebt nog niets gedaan met de opgeslagen waarde. De volgende stap is om de score te Laden en deze daadwerkelijk in je scène te gebruiken.
Laden
Met je score opgeslagen, moet je deze nu laden en gebruiken in je scène. Als het gaat om laden, is er één belangrijke vraag die je moet beantwoorden. Wanneer wil je laden?
Net als bij opslaan, hangt het antwoord sterk af van je project. Je kunt laden zodra je scène begint, wanneer de speler op een knop drukt, of wanneer er een andere gebeurtenis wordt getriggerd. Het hangt echt af van wat je probeert te bereiken.
Voor deze tutorial zullen we laden zodra de scène start en de vorige opgeslagen score weergeven.
Om te beginnen, voeg een label toe aan je scène. We zullen dit label gebruiken om je opgeslagen score weer te geven.
Vervolgens moeten we de werkelijke laadlogica toevoegen. Voor deze tutorial voegen we de logica toe aan de Opslaan Button van de vorige stappen. Afhankelijk van je spel, moet je misschien je logica ergens anders plaatsen. Selecteer de opslaan knop en open de gedragingeditor vanuit de objecteigenschappen.
Voeg vanuit de Aangepast categorie het "Laden van Bestand"-gedrag toe en verbind het met niets. Aangezien het niet verbonden is met een andere gedraging, zal de laadgedraging uitvoeren zodra de scène begint (wanneer de knop zich in de scène bevindt). Als je wilde laden op basis van een bepaalde gebeurtenis of andere trigger, zou je het verbinden met andere gedragingen.
Kies nu het "Laden van Bestand"-gedrag om de gedragingseigenschappen te bekijken. Zorg er opnieuw voor dat "Bestaande" is geselecteerd voor het sleuteltype.
Tik vervolgens op de knop "Selecteer Sleutel" om de lijst met opgeslagen sleutels te openen. Kies uit de lijst de "Score"-sleutel die je eerder hebt toegevoegd.
Op dit punt heb je technisch de score geladen. Maar je doet er nog niets mee. Laten we die geladen waarde gebruiken.
Voeg vanuit de UI-categorie een "Stel Label In"-gedrag toe en verbind het met het laadgedrag dat je eerder hebt toegevoegd.
Selecteer nu het "Stel Label In"-gedrag om de eigenschappen ervan te bekijken en vergeet niet het nieuwe label te kiezen dat je zojuist hebt toegevoegd en dat de geladen score vertegenwoordigt. Zodra je het juiste label hebt geselecteerd om te wijzigen, sleep je de outputwaarde van de hoek van het "Laden van Bestand"-gedrag naar het invoerveld van de Stel Label In-gedrag.
Dat is alles wat je hoeft te doen! Je voortgang wordt opgeslagen en geladen in een label de volgende keer dat je speelt.
Hoogste Score
Een ding dat je misschien bent opgevallen is dat je score elke keer dat je op de knop drukt wordt opgeslagen en je vorige score overschrijft. Soms is dit prima, maar meestal wil je alleen opslaan wanneer de speler een score bereikt die hoger is dan de vorige.
Om dit "Hoogste Score"-systeem te implementeren, hoeven we alleen maar onze opslaalogica iets te wijzigen.
Begin met terug te gaan naar waar de opslaagedragingen zijn geplaatst (de opslaan knop).
Eerst moet je de "Opslaan naar Bestand"-gedrag loskoppelen van je "Gestopt met Aanraken"-gedrag. Tik op de lijn die de twee gedragingen verbindt om ze los te koppelen.
Voeg nu vanuit de Logica categorie een IF-gedrag toe. Het IF-gedrag controleert wanneer aan een bepaalde voorwaarde is voldaan voordat het uitvoert. In dit geval willen we alleen opslaan ALS de score hoger is dan de vorige (geladen) score.
Verbind het IF-gedrag met het "Gestopt met Aanraken"-gedrag.
Nu moet je op het IF-gedrag tikken om de gedragingseigenschappen te openen en de voorwaarde in te stellen.
Sleep de outputwaarde van "Haal Label Op" naar het eerste invoerveld van het IF-gedrag.
Sleep vervolgens de outputwaarde van het "Laden van Bestand"-gedrag naar het tweede invoerveld van het IF-gedrag.
Nu moet je de voorwaarde veranderen. Tik op de knop "Gelijk Aan" en selecteer de groter dan of gelijk aan (≥) optie.
Verbind je oude opslaagedraging met de IF. Nu zal je IF-gedrag alleen de verbonden opslaan uitvoeren, ALS de waarde van het label groter is dan (of gelijk) aan de geladen waarde.
Dat is alles wat je hoeft te doen. Je zou nu een werkend opslaan en laden systeem moeten hebben dat de score van de speler alleen opslaat als ze hun vorige poging verbeteren.
Andere Opslagen
Deze tutorial behandelde het opslaan van een score. Maar soms wil je andere dingen opslaan, zoals de positie van een speler, of het huidige niveau enzovoort.
De concepten die je in deze tutorial hebt geleerd, zijn nog steeds van toepassing. Je hoeft alleen maar te veranderen wanneer je opslaat en wat je opslaat.
Neem het opslaan van de positie van de speler als voorbeeld. De positie van een object wordt gegeven in 2 nummers. De X, en de Y. Hiervoor zou je eenvoudig 2 opslaagedragingen gebruiken. Eén om de X-positie op te slaan en de andere om de Y-positie op te slaan. Vervolgens, wanneer het aankomt op laden, zou je 2 laadgedragingen gebruiken. In plaats van een label in te stellen, zou je eenvoudig het spelerobject verplaatsen naar de geladen X- en Y-posities.
Door een plan te maken van wat je wilt opslaan en wanneer je moet opslaan, kun je een systeem creëren dat voor bijna elke situatie werkt.

