【UE5/UE4】【UE C++】制作一个蓝图宏库用以在构造器中Spawn Actor

文章介绍了如何通过蓝图实现自定义事件,并讨论了蓝图在生成Actor时的局限性,特别是对于特定类型如PostProcessVolume。当蓝图无法解决问题时,建议使用C++介入。提供了一个C++函数示例用于动态生成Actor,并展示了如何在蓝图中调用此函数。

实际上该功能可以通过纯蓝图写出,以下展示蓝图中如何操作构造器
在这里插入图片描述
仅需在创建"自定义事件"的时候勾选"编辑器中调用"属性,然后就可以直接在蓝图中生成
但同时,我们发现"从类生成Actor"该蓝图节点具有生成局限性
无法在当前关卡外生成
以及无法生成某些在蓝图中公开却不在该节点"Class"属性中公开的Actor例如"PostProcessVolume"
当遇到上述局限性时,考虑蓝图无法解决该问题,此时我们需要C++介入
此处以PostProcessVolume为例子
.h

UFUNCTION(BlueprintCallable, Category = "Akie Tools")
	static void SpawnMyActor(UWorld* World, UClass* Class, FVector const& Location);

.cpp

void UakietoolsBPLibrary::SpawnMyActor(UWorld*World, UClass* Class, FVector const& Location)
{
	if (Class) {
		if (World) {
			 World->SpawnActor<APostProcessVolume>(Class, Location, FRotator(0.f));
		}
	}
}

实际上 由于超高的解耦性
上述代码可以在更改了UFUNCTION(中的规范)后源码直接迁移到蓝图宏库的插件中

UFUNCTION(BlueprintCallable, meta = (DisplayName = "SpawnClass", Keywords = "AKieTools sample test testing"), Category = "AKieSpawnTools")

在这里插入图片描述
在蓝图中如此调用即可,注意 该变量类型为场景(World)常规搜索不到
复制下述代码到蓝图的创建变量栏粘贴就创建了该变量

BPVar(VarName="指认当下关卡",VarGuid=DCB2E34241C4E6C912199E987236928E,VarType=(PinCategory="softobject",PinSubCategory="",PinSubCategoryObject=Class'"/Script/Engine.World"',PinSubCategoryMemberReference=(MemberParent=None,MemberName="",MemberGuid=00000000000000000000000000000000),PinValueType=(TerminalCategory="",TerminalSubCategory="",TerminalSubCategoryObject=None,bTerminalIsConst=False,bTerminalIsWeakPointer=False,bTerminalIsUObjectWrapper=False),ContainerType=None,bIsReference=False,bIsConst=False,bIsWeakPointer=False,bIsUObjectWrapper=True,bSerializeAsSinglePrecisionFloat=False),FriendlyName="指认当下关卡",Category=NSLOCTEXT("KismetSchema", "Default", "Default"),PropertyFlags=5,RepNotifyFunc="",ReplicationCondition=COND_None,MetaDataArray=((DataKey="MultiLine",DataValue="true")),DefaultValue="None")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值