【UE4 C++】根据指定路径生成静态网格体

在上一篇博客中(【UE C++】蓝图调用C++函数),我们用C++创建了一个蓝图函数库,本篇文章在这个蓝图函数库基础上增加一个方法,该方法只需输入一个文件目录路径,就可在场景中生成该目录下得所有静态网格体。(如果不想写C++的话,可以用这篇文章的方法:UE4 | BP | 使用蓝图获取Uasset资源_ue4 蓝图加载uasset资产

在.cpp文件中增加如下代码:

TArray<UObject*> UMyBlueprintFunctionLibrary::FindOrLoadAssetsByPath(const FString& FilePath)
{
	TArray<UObject*> LoadedObjects;

	EngineUtils::FindOrLoadAssetsByPath(FilePath, LoadedObjects, EngineUtils::ATL_Regular);
	return LoadedObjects;
}

 在.h文件中添加如下代码:

UFUNCTION(BlueprintCallable, Category="LibraryFunction")
	static TArray<UObject*> FindOrLoadAssetsByPath(const FString& FilePath);

编译后,打开虚幻编辑器,新建一个父类为Actor的蓝图类,这里命名为“BP_CreateStaticMesh”

 打开“BP_CreateStaticMesh”,添加一个静态网格体组件

 添加一个变量,这里命名为“Mesh”

“Mesh”变量的变量类型是静态网格体的对象引用。勾选可编辑实例、生成时公开

 在构造函数中添加如下节点,这样在“BP_CreateStaticMesh”生成时,就能根据传入给Mesh的模型来生成静态网格体

 再新建一个Actor蓝图,这里命名为“BP_CreateStaticMeshByPath”

 打开“BP_CreateStaticMeshByPath”,在事件图表中添加如下节点

 

 如下是我静态网格体的存放路径

 

将“BP_CreateStaticMeshByPath”拖入视口

 运行游戏可以看到生成了静态网格体

有时候用户想自己改变这个静态网格体,该如何做?我目前进展是:

首先打包设置中,取消勾选“使用Pak文件”,这样打包后Content文件夹中就不再仅是一个.pak文件,而是和打包前工程目录中的Content文件夹一样。

 打包后,比如我删除了“Key”这个文件夹,场景中确实不会出现对应的静态网格体,还原后也还是能生成之前的静态网格体。

 但是让人头大的是打包后的模型不再是FBX或是obj之类的模型,而是变成了.uasset格式文件,这样用户就不能直接向文件夹中导入一个3D模型让引擎调用。

我特地搜了一下如何将FBX转.uasset格式文件,例如:[UE4 convert .fbx to .uasset commandlet] - #7 by nyudeb - Pipeline & Plugins - Epic Developer Community Forums

,但是即使生成了.uasset文件还是不行,我将.uexp文件删除后,打包后的exe就无法运行并且弹出报错的窗口。

如果路过的大佬有什么见解,还希望在评论区指点一下,谢谢~

相关文章

【UE】在游戏运行时,通过选择uasset来生成静态网格体-CSDN博客

参考文章

1. UE4 根据文件夹路径生成文件夹下的所有静态网格体(蓝图)_ue4将静态网格体转换成蓝图

2. UE4 替换打包后的项目资源 - 知乎

3. UE4 | BP | 使用蓝图获取Uasset资源_ue4 蓝图加载uasset资产

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhichao_97

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值