When programming gameplay elements using C++ code, each module can contain many C++ classes.
Each class defines a template for a new Actor or Object. Within the class header file, the class and any class functions and propertiesare declared. Classes can also contain structs, data structures that help with organization and manipulation of related properties. Structures can also be defined on their own.interface allow additional gameplay behavior to be implemented by different classes.
When programming with Unreal Engine, it is possible to have standard C++ classes, functions, and variables. These can be defined using standard C++ syntax. However,
UPROPERTY() macros can be used to make Unreal Engine aware of the new classes, functions, and variables. For instance, a variable with a declaration prefaced by a
UPROPERTY() macro can
be garbage collected by the engine, and can be displayed and edited within Unreal Editor. There are also
USTRUCT() macros, and keywords for each macro that can be used
to specify the class's, function's, property's,
interface's, or struct's behavior within Unreal Engine and Unreal Editor.
In addition to the above macros, there is a UPARAM() macro that is primarily used when exposing C++ code to Blueprints. To see examples of UPARAM() being used, see the Exposing Gameplay Elements to Blueprints documentation.