3

所以我是 Unreal Engine 4 的新手,我认为他们网站上发布的文档是一个很好的起点。但是,我在一些关于编码部分的事情上苦苦挣扎(我有相当不错的 C++ 知识)。这是我遇到问题的代码摘录:

void AFloatingActor::Tick( float DeltaTime )
{
    Super::Tick( DeltaTime );

    FVector NewLocation = GetActorLocation();
    float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
    NewLocation.Z += DeltaHeight * 20.0f;       //Scale our height by a factor of 20
    RunningTime += DeltaTime;
    SetActorLocation(NewLocation);
}

我不明白这是如何工作的。我几乎得到了所有的陈述,但我不明白它是如何工作的。所以tick基本上是一个称为每个tick(帧)的函数,添加的任何其他语句都是编辑每帧actor的逻辑。这是如何运作的?第一条语句不应该是“Super::Tick (DeltaTime);”吗?由于没有基本(停止)情况而导致无限递归?任何帮助,将不胜感激。太感谢了

4

1 回答 1

3

这里没有递归——它在调用Super::Tick,而不是它本身。

Super很可能是基类的 typedef,目的是让您可以在所有情况下调用它的函数而不必记住它的实际名称。

因此Super::Tick(DeltaTime);调用Tick基类中的函数(并将其DeltaTime作为参数传递)。如果您覆盖一个函数,但仍希望发生“正常”的事情以及您在覆盖中编写的内容,这将很有用。

于 2015-04-24T23:05:06.740 回答