Я изучаю нереальный движок и немного знаю C++. Однако я не совсем уверен, что происходит в этой строке кода. Может кто-нибудь объяснить мне, как будто мне 5?
class ESCAPEROOM_API UWorldPosition : public UActorComponent
Мы определяем функцию как UActorComponent, которая понятна, но не уверена, что происходит в этой части:
class ESCAPEROOM_API UWorldPosition
Остальной код,
#pragma once
#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "WorldPosition.generated.h"
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class ESCAPEROOM_API UWorldPosition : public UActorComponent <==========
{
GENERATED_BODY()
public:
// Sets default values for this component's properties
UWorldPosition();
protected:
// Called when the game starts
virtual void BeginPlay() override;
public:
// Called every frame
virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
};
К чему название ESCAPEROOM_API
?
Мы определяем функцию как UActorComponent
Неправда, вы определяете класс UWorldPosition
, который является производным от другого класса UActorComponent
.
Часть ESCAPEROOM_API
не является стандартной для C++, но, скорее всего, это макрос, целью которого является экспорт этого класса из общей библиотеки. Смотрите здесь.
Поскольку вы новичок в C++, вам, вероятно, будет легче изучить его с хорошей книгой. С++ — сложный язык.
(Слишком длинный для комментария.)
Ничего не зная о нереальных движках, но просматривая код C++ раньше, я вижу это при первом быстром чтении, которое говорит мне, что код определяет класс UWorldPosition
, производный от UActorComponent
, с целью переопределения двух виртуальных функций, определенных в базе. .
class ... UWorldPosition : public UActorComponent
{
... BeginPlay() override;
... TickComponent(...) override;
};
Это части, оставшиеся после пропуска макросов, написанных в верхнем регистре (UCLASS
, ESCAPEROOM_API
), которые должны быть некоторыми нестандартными деталями/атрибутами реализации, шаблонным кодом (GENERATE_BODY
, конструктор по умолчанию) и менее интересными или избыточными битами (#include
, virtual
) .
Это не определение функции. Это определение класса
UWorldPosition
, который является производным от базового классаUActorComponent
.