UE5 C++ 使C++创建动画蓝图
文章目录警告创建动画蓝图警告动画蓝图不需要运行游戏也会一直执行因此在编写代码时非常容易引发空指针崩溃因此编写动画蓝图时需要关闭UE或严格执行空指针检查创建动画蓝图继承AnimInstance常用属性如下头文件// Fill out your copyright notice in the Description page of Project Settings.#pragmaonce#includeCoreMinimal.h#includeAnimation/AnimInstance.h#includeSlashAnimInstance.generated.hclassASlashCharacter;/** * */UCLASS()classCPPLEARN_APIUSlashAnimInstance:publicUAnimInstance{GENERATED_BODY()public:virtualvoidNativeInitializeAnimation()override;virtualvoidNativeUpdateAnimation(floatDeltaSeconds)override;UPROPERTY(BlueprintReadOnly)ASlashCharacter*SlashCharacter;//使用这个动画蓝图的角色UPROPERTY(BlueprintReadOnly,CategoryMovement)classUCharacterMovementComponent*SlashCharacterMovement;//角色的运动组件UPROPERTY(BlueprintReadOnly,CategoryMovement)floatGroundSpeed;//地面速度};源文件// Fill out your copyright notice in the Description page of Project Settings.#includeCharacter/SlashAnimInstance.h#includeCharacter/SlashCharacter.h#includeGameFramework/CharacterMovementComponent.h#includeKismet/KismetMathLibrary.hvoidUSlashAnimInstance::NativeInitializeAnimation(){Super::NativeInitializeAnimation();SlashCharacterCastASlashCharacter(TryGetPawnOwner());//获取角色 TryGetPawnOwner获取到的是pawn需要强转成characterif(SlashCharacter){SlashCharacterMovementSlashCharacter-GetCharacterMovement();//获取角色的运动组件}}voidUSlashAnimInstance::NativeUpdateAnimation(floatDeltaSeconds){Super::NativeUpdateAnimation(DeltaSeconds);if(SlashCharacter){GroundSpeedUKismetMathLibrary::VSizeXY(SlashCharacterMovement-Velocity);//获取地面速度只考虑xy方向使用kismet数学库提供的方法}}