网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

UE4C++如何在静态函数中SpawnActor-创新互联

最近在学习用C++复刻YouTube上的一个蓝图库存系统,其中在从背包中丢弃枪械,然后在世界中生成一个枪械Actor的时候遇到了问题,由于这个生成函数是在几个不同的类中复用的,YouTube原版的做法是把这个函数写在了GameState类里面,以实现随处调用,但我思考了一下觉得把它用C++写在UBlueprintFunctionLiberary子类里是一种更合适的做法。而问题也就在这时候出现,在UBlueprintFunctionLiberary子类中一般都是使用静态函数,这就导致如果按一般C++中SpawnActor的方法写会有错误

创新互联客户idc服务中心,提供简阳服务器托管、成都服务器、成都主机托管、成都双线服务器等业务的一站式服务。通过各地的服务中心,我们向成都用户提供优质廉价的产品以及开放、透明、稳定、高性价比的服务,资深网络工程师在机房提供7*24小时标准级技术保障。
GetWorld()->SpawnActor(Params...)

在静态函数中使用GetWorld()操作非静态成员变量会报错call to non-static member function without an object argument,所以我们需要其他方法来SpawnActor,而这个方法就是UGamePlayStatic类中的BeginDeferredActorSpawnFromClass()函数以及FinishSpawningActor()函数,以我在上述内容中需要设计的函数为例,使用如下

.h
static AActor* SpawnActorFromItemObject(UItemObject* ItemObject, AActor* OriginLocationActor);

.cpp
AActor* UHelperFunctionLibrary::SpawnActorFromItemObject(UItemObject* ItemObject, AActor* OriginLocationActor)
{if (ItemObject && OriginLocationActor)
    {FVector SpawnLocation = OriginLocationActor->GetActorLocation() + OriginLocationActor->GetActorForwardVector() * 150;

        FTransform SpawnTransform(FRotator::ZeroRotator, SpawnLocation);
        
        //该函数向世界中注册一个新Actor但不执行Actor的初始化
        AActor* Actor = UGameplayStatics::BeginDeferredActorSpawnFromClass(OriginLocationActor->GetWorld(), ItemObject->ItemClass, SpawnTransform, ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButAlwaysSpawn);
        
        return UGameplayStatics::FinishSpawningActor(Actor, SpawnTransform);//该函数完成Actor的初始化
    }

    return nullptr;
}

这样就可以实现通过静态函数在世界中SpawnActor
第一次写,主要用于个人记录,语言啰嗦,有大佬看到请见谅

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文题目:UE4C++如何在静态函数中SpawnActor-创新互联
分享网址:http://bjjierui.cn/article/dpisic.html

其他资讯