Programmeren van een 3D omgeving in Unreal Engine – Blueprint Class – Child Classes

print
Deze handleiding maakt deel uit van het programmeertraject:



Wat vooraf ging


Gebruikte terminologie

Objects

The base building blocks in the Unreal Engine are called Objects and contain a lot of the essential “under the hood” functionality for your game assets. Just about everything in Unreal Engine 4 inherits (or gets some functionality) from an Object.

Actors

An Actor is any object that can be placed into a level. Actors are a generic Class that support 3D transformations such as translation, rotation, and scale. Actors can be created (spawned) and destroyed through gameplay code (C++ or Blueprints).

Classes

A Class defines the behaviors and properties of a particular Object used in the creation of an Unreal Engine game. Classes are hierarchical, meaning a Class inherits information from its parent Classes (the Classes it was derived or “sub-classed” from) and passes that information to its children. Classes can be created in C++ code or in Blueprints.

Blueprints

The Blueprints Visual Scripting system in Unreal Engine is a complete gameplay scripting system based on the concept of using a node-based interface to create gameplay elements from within Unreal Editor. As with many common scripting languages, it is used to define object-oriented (OO) classes or objects in the engine. As you use UE4, you’ll often find that objects defined using Blueprint are colloquially referred to as just “Blueprints.”

Components

A Component is a piece of functionality that can be added to an Actor. Components cannot exist by themselves, however when added to an Actor, the Actor will have access to and can use functionality provided by the Component. For example, a Spot Light Component will allow your Actor to emit light like a spot light, a Rotating Movement Component will make your Actor spin around, or an Audio Component will make your Actor able to play sounds.


Inleiding

Een belangrijk begrip binnen Object Georiënteerd Programmeren, en dus ook binnen Blueprint Classes, is overerving.

Overerving (Inheritance) houdt in dat u van een Parent Class één of meerdere Child Classes kunt aanmaken. Deze Child Classes (Child Actors) nemen de variabelen en functionaliteiten van de Parent Class over.

Situering van deze handleiding binnen Unreal Engine


Child Classes

Een gevolg van overerving (zie hierboven) is dat er Children klassen kunnen gemaakt worden die dezelfde functionaliteit en eigenschappen/variabelen erven van de Parent klas.

Stel, u maakt een FPS (First Person Shooter) en u wilt meerdere types van wapens kunnen gebruiken. Nu elk wapen heeft eenzelfde aantal eigenschappen en functionaliteiten gemeen, ik denk aan de eigenschappen Ammo, Isfiring (variabelen) en de functionaliteiten Fire en StopFiring.

Ook al hebben alle wapens deze eigenschappen en functionaliteiten gemeen, toch kan ieder type wapen de functionaliteit Fire anders uitwerken.

In zo’n situatie kan het werken met een Parent klasse en verschillende Children klassen handig zijn.

Praktisch

Laat ons dit eens praktisch uitwerken.

Maak zoals hierboven reeds uitgelegd een nieuwe klasse aan van het type Actor.

  • In de Content Browser, klik op Add NewBlueprint Class (of klik met de rechtermuisknop in de net aangemaakte folder en klik op Blueprint Class).

  • Of, klik in het menu op BlueprintsNew Empty Blueprint Class….

U komt in onderstaand scherm waar u een Parent Class kunt selecteren.

  • Klik op de Actor Class.
  • Geef de nieuwe klasse bv. de naam GunParent.
  • Dubbelklik om deze klasse te openen en maak twee variabelen aan Ammo (float) en IsFiring (Boolean) en de heel eenvoudige functie Fire, zoals u hieronder kunt zien.

  • Om nu een Child te maken voor deze Parent, klik in de Content Browser met de rechtermuisknop op de Parent klasse en kies voor Create Child Blueprint Class.

  • Hieronder heb ik 2 Children aangemaakt MachineGun en SmallGun.

Achterafgezien zijn deze namen wat ongelukkig gekozen, het ware misschien beter geweest te kiezen voor Gun_Parent, Gun_Machine en Gun_Small. Aan u de keuze.

  • Dubbelklik op een Child klasse om deze te openen. Rechtsboven ziet u de Parent klasse. In de Event Graph ziet u achter de gekende events, zoals Event BeginPlay, een verwijzing staan naar dezelfde event in de Parent klasse. Dit betekent dat wat in dezelfde event in de Parent klasse staat wordt uitgevoerd.

Merk op dat er geen variabelen te zien zijn, ook niet deze van de Parent klasse Ammo en IsFiring.

  • Toch zijn ze er, wilt u ze ook zien, vink dan Show Inhereted Variables aan.

  • Zoek naar de Event Fire uit de Parent klasse en u zal deze vinden.

Als we nu meteen code toevoegen aan de Event Fire vervangt deze de code van de Parent klasse.

  • Wilt u echter de code uit de Parent klasse behouden en er nieuwe code aan toevoegen dan moet u rechts klikken op de event en kiezen voor Add call to parent function.

  • Verbind de nodes en nu wordt eerst de code van de Parent Event Fire uitgevoerd. Hierachter kan u nieuwe specifieke code toevoegen voor deze specifieke Child klasse.


Behandelde Basiscompetenties uit de module ICT Programmeren – Specifieke ontwikkelomgeving: eenvoudige functionaliteiten

  • IC BC017 – kan ICT veilig en duurzaam gebruiken
  • IC BC234 – kan de basisprincipes van programmeren in een specifieke ontwikkelomgeving toepassen
  • IC BC236 – kan eenvoudige wijzigingen aan een programma aanbrengen
  • IC BC241 – kan een programma in een specifieke ontwikkelomgeving maken
  • IC BC247 – kan de bouwstenen van een specifieke ontwikkelomgeving gebruiken
  • IC BC250 – kan bij het programmeren in functie van een specifieke ontwikkelomgeving, een juiste logica volgen
  • IC BC288 – kan ICT-problemen oplossen

Geef een reactie

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

  • Abonneer je op deze website d.m.v. e-mail

    Voer je e-mailadres in om je in te schrijven op deze website en e-mailmeldingen te ontvangen van nieuwe berichten.