星鸿阁

 找回密码
 立即注册
搜索
热搜: 活动 交友 动画
查看: 1830|回复: 1

动态生成蓝图类

[复制链接]

2254

主题

2764

帖子

9644

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9644
发表于 2021-12-21 17:52:03 | 显示全部楼层 |阅读模式
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"中的函数
                }
        }
}


————————————————
版权声明:本文为CSDN博主「傾聽雲靈」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014661985/article/details/105832358

回复

使用道具 举报

2254

主题

2764

帖子

9644

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9644
 楼主| 发表于 2021-12-21 17:53:05 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|starfluidga

GMT+8, 2025-3-9 20:41 , Processed in 0.014188 second(s), 21 queries .

Made by Liga 星鸿阁

Copyright © 2020-2048, LigaStudio.

快速回复 返回顶部 返回列表