#include "MyFirstClass.h"
// Sets default valuesAMyFirstClass::AMyFirstClass(){ // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true;
}
// Called when the game starts or when spawnedvoid AMyFirstClass::BeginPlay(){ Super::BeginPlay(); }
// Called every framevoid AMyFirstClass::Tick(float DeltaTime){ Super::Tick(DeltaTime); FVector NewLocation = GetActorLocation(); float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime)); NewLocation.Z += DeltaHeight * 1000.0f; //Scale our height by a factor of 20 RunningTime += DeltaTime; SetActorLocation(NewLocation);}
The class wizard generates your class with
BeginPlay()
and
Tick()
specified as overloads.
BeginPlay()
is an event that lets you know the Actor has entered the game in a playable state. This is a good place to initiate gameplay logic for your class.
Tick()
is called once per frame with the amount of elapsed time since the last call passed in. There you can do any recurring logic. However if you do not need that functionality, it is best to remove it to save yourself a small amount of performance. If you remove it, make sure to remove the line in the constructor that indicated ticking should occur. The constructor below contains the line in question.
overload function? wtf is that? i still can't get what the fuck elapsed time mean
let's check out
而Elapsed Time则是执行当前任务所花费的总时间 找不到其他解释了 反正就是个消逝时间就对了
There you can do any recurring logic
AMyActor::AMyActor()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you do not need it.
PrimaryActorTick.bCanEverTick = true;
}
yeah we can shut this motherfucker down for some performance . we 're so brute
UCLASS()
class AMyActor : public AActor
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere)
int32 TotalDamage;
...
};
UPROPERTY(EditAnywhere, Category="Damage")
int32 TotalDamage;
指明Damage?
control how and where it is edited
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Damage")
int32 TotalDamage;
As you can see, there is a Blueprint specific parameter to make a property available for reading and writing. There's a separate option, BlueprintReadOnly, you can use if you want the property to be treated as const in Blueprints. There are quite a few options available for controlling how a property is exposed to the engine. To see more options, follow this link.
I
don't care your options.so get the fuck out of here!
Before continuing to the section below, let us add a couple of properties to this sample class. There is already a property to control the total amount of damage this actor will deal out, but let us take that further and make that damage happen over time. The code below adds one designer settable property and one that is visible to the designer but not changeable by them.
UCLASS()
class AMyActor : public AActor
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Damage")
int32 TotalDamage;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Damage")
float DamageTimeInSeconds;
UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Transient, Category="Damage")
float DamagePerSecond;
...
};
DamageTimeInSeconds is a property the designer can modify. The DamagePerSecond property is a calculated value using the designer's settings (see the next section). The VisibleAnywhere flag marks that property as viewable, but not editable in the Unreal Editor. The Transient flag means that it won't be saved or loaded from disk; it is meant to be a derived, non-persistent value. The image below shows the properties as part of the class defaults.