UE4 C++ 编程
这是有关我在使用UE4引擎进行C++变成过程中所遇到的一些难题和解决方案的记录,如果有不对的地方,希望不要被我误导,应该查询更加专业的讲解,也欢迎指正。
一、构造函数中生成
暂时未使用到,合适的时候会进行补充。
二、非构造函数中生成
在非构造函数中去生成一个基于蓝图类的实例是有一些区别的。
1.先决条件
创建一个基于Actor的C++类"AMyActor";在编译器中基于创建的"AMyActor"或者引擎自带的C++类生成所需要的蓝图类"BP_MyActor"。
2.资源路径
选中新创建的"BP_MyActor"蓝图类,“Ctrl+C"复制资源路径,得到类似"Blueprint’/Game/BP_MyActor.BP_MyActor’“的路径,但是需要在结尾加上”_C”,构建成"Blueprint’/Game/BP_MyActor.BP_MyActor_C’"这样的资源路径进行使用。
3.动态生成
我们需要使用蓝图类的基类作为我们生成的蓝图实例的接收器,具体看代码解释。
// An highlighted block
if (GetWorld())
{
// 使用基类获取到蓝图类的资源
UClass* BlueprintVar = StaticLoadClass(AMyActor::StaticClass(), nullptr, TEXT("Blueprint'/Game/BP_MyActor.BP_MyActor_C'"));
if (BlueprintVar != nullptr)
{
// 向场景中添加新生成的蓝图实例
AMyActor* pMyActor = GetWorld()->SpawnActor<AMyActor>(BlueprintVar);
if (pMyActor)
{
// 这样,场景中就会动态生成一个蓝图类实例
// 我们也会得到一个蓝图类基类的实例指针,并可以调用基类"AMyActor"中的函数
}
}
}