关于虚幻引擎4中PlayAnim蒙太奇代码的问题

Question about PlayAnimMontage code in Unreal Engine 4

本文关键字:蒙太奇 代码 问题 PlayAnim 于虚幻 引擎      更新时间:2023-10-16

我有一个关于PlayAnimMontage方法(类ACharacter(的实现的问题。下面是 API 信息。

我正在尝试理解代码。此方法在 Montage_JumpToSection(( 之前调用 Montage_Play((。这是代码:

float ACharacter::PlayAnimMontage(class UAnimMontage* AnimMontage, float InPlayRate, FName StartSectionName)
{
    UAnimInstance * AnimInstance = (Mesh) ? Mesh->GetAnimInstance() : nullptr;
    if (AnimMontage && AnimInstance)
    {
        float const Duration = AnimInstance->Montage_Play(AnimMontage, InPlayRate);
        if (Duration > 0.f)
        {
            // Start at a given Section.
            if (StartSectionName != NAME_None)
            {
                AnimInstance->Montage_JumpToSection(StartSectionName, AnimMontage);
            }
            return Duration;
        }
    }
    return 0.f;
}

我很困惑。为什么如果我播放动画,我可以稍后指定特定部分???我知道它有效,但是,我不明白。谁能帮我??提前谢谢。

当调用此行时,

AnimInstance->Montage_Play(AnimMontage, InPlayRate);

传入的动画蒙太奇开始播放。然而,下一行,

AnimInstance->Montage_JumpToSection(StartSectionName, AnimMontage);

将动画蒙太奇跳转到某个部分。之所以在Montage_JumpToSection之前调用Montage_Play,是因为没有办法用一个函数从某个部分开始播放动画蒙太奇。因此,连续调用Montage_Play,则Montage_JumpToSection模拟从StartSectionName开始播放动画蒙太奇。请注意,仅当动画蒙太奇当前处于播放阶段时,Montage_JumpToSection才有效。要检查当前是否正在播放动画蒙太奇,您可以将蒙太奇传递到Montage_GetCurrentSection以检查蒙太奇当前位于哪个部分。