When used as part of the fast path in an ABP, variable Blueprint Getters are not used. If something with a getter that does not conform to or is supported by fast path, is used then fast path should be disabled.
Create a C++ class from a UAnimInstance
Add two UAnimSequence variables.
Create and assign a BlueprintGetter function for the first variable that returns the second.
Create an ABP from the C++ class, and assign two different UAnimSequences to the variables.
In the AnimGraph, play the first sequence and in the event graph print its name.
Result: The first sequence is played(fast path) and the second sequence is printed
Expected: The second sequence is played and printed
Nativeize the ABP and recompile it.
Result: The second sequence(non fast-path) is played and printed
#pragma once #include "CoreMinimal.h" #include "Animation/AnimInstance.h" #include "MyAnimInstance.generated.h" /** * */ UCLASS(transient, Blueprintable, hideCategories = AnimInstance, BlueprintType, meta = (BlueprintThreadSafe), Within = SkeletalMeshComponent) class EDITORTESTS_API UMyAnimInstance : public UAnimInstance { GENERATED_BODY() private: UPROPERTY(EditAnywhere, BlueprintGetter = GetTestSequence1) class UAnimSequence* TestSequence1; UPROPERTY(EditAnywhere) class UAnimSequence* TestSequence2; public: UFUNCTION(BlueprintGetter) UAnimSequence* GetTestSequence1() const { return TestSequence2; // returns TestSequence2 instead of 1. } };
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-87380 in the post.
1 |
Component | OLD - Anim |
---|---|
Affects Versions | 4.23, 4.24 |
Target Fix | 4.26 |
Fix Commit | 13933751 |
---|
Created | Jan 23, 2020 |
---|---|
Resolved | Aug 27, 2020 |
Updated | Apr 28, 2021 |