Unreal Engine 4: Super::Tick (增量时间)
Unreal Engine 4: Super::Tick ( DeltaTime )
所以我是 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 );" 不应该导致无休止的递归吗?
任何帮助,将不胜感激。
非常感谢
这里没有递归 - 它调用 Super::Tick
,而不是它自己。
Super
很可能是基础 class 的 typedef,目的是让您可以在所有情况下调用它的函数而不必记住它的实际名称。
因此 Super::Tick(DeltaTime);
调用基 class 中的 Tick
函数(并将其作为参数传递给 DeltaTime
)。如果您重写一个函数,但仍然希望 "normal" 以及您在重写中编写的内容发生,这将很有用。
所以我是 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 );" 不应该导致无休止的递归吗? 任何帮助,将不胜感激。 非常感谢
这里没有递归 - 它调用 Super::Tick
,而不是它自己。
Super
很可能是基础 class 的 typedef,目的是让您可以在所有情况下调用它的函数而不必记住它的实际名称。
因此 Super::Tick(DeltaTime);
调用基 class 中的 Tick
函数(并将其作为参数传递给 DeltaTime
)。如果您重写一个函数,但仍然希望 "normal" 以及您在重写中编写的内容发生,这将很有用。