您当前的位置: 首页 >  ue4

开发游戏的老王

暂无认证

  • 5浏览

    0关注

    803博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

UE4杂文:派生一个AnimInstance类(6月5日 更新)

开发游戏的老王 发布时间:2020-06-04 21:00:31 ,浏览量:5

后记:一觉醒来,突然觉得像下文这么做有点多此一举,所以大家还是使用TryGetPawnOwner吧。

书接上文 《UE4杂文:关于官方模板动画蓝图中TryGetPawnOwner方法的讨论》

上文修改了默认动画蓝图中的节点,虽然逻辑上清晰了,但是由于步骤多了一些,所以蓝图有点乱了,既然是常用的方法,那不如直接派生一个AnimInstance,并增加这个获取同级的Component的方法。

MyAnimInstance类

自定义了一个GetSiblingComponentByClass方法

//MyAnimInstance.h
#pragma once

#include "CoreMinimal.h"
#include "Animation/AnimInstance.h"
#include "MyAnimInstance.generated.h"

UCLASS(transient, Blueprintable, hideCategories=AnimInstance, BlueprintType, meta=(BlueprintThreadSafe), Within=SkeletalMeshComponent)
class THIRDPERSONCPP_API UMyAnimInstance : public UAnimInstance
{
	GENERATED_BODY()
	UFUNCTION(BlueprintCallable)
	UActorComponent* GetSiblingComponentByClass(TSubclassOf ComponentClass) const;
};

//MyAnimInstance.cpp
#include "MyAnimInstance.h"

UActorComponent* UMyAnimInstance::GetSiblingComponentByClass(TSubclassOf ComponentClass) const
{
	USkeletalMeshComponent* OwnerComponent = GetSkelMeshComponent();
	if (AActor* OwnerActor = OwnerComponent->GetOwner())
	{
		return OwnerActor->GetComponentByClass(ComponentClass);
	}
	return NULL;
}
新建动画蓝图

继承自MyAnimInstance

在这里插入图片描述

这样蓝图也简化多了

在这里插入图片描述

关注
打赏
1656935939
查看更多评论
立即登录/注册

微信扫码登录

0.0398s