如何从外部文件夹加载静态网格物体?

时间:2017-01-26 12:17:18

标签: unreal-engine4 unreal-development-kit unreal-blueprint

我正在学习UE4 C ++开发,我有一个想法,但我不知道是否可以做到。我的WAMP SERVER上有一个文件夹,用于示例(C:\ wamp \ www \ staticmesh \ My3DModel.3DS)。我的想法是在我的UE4小部件上创建一个按钮,当按下它时,它会将我的静态网格从我的文件夹导入到我当前的场景。它有可能吗?

OBS:因为我的游戏太重了,所以我想我会导入静态网格并实时放入场景,而不是在游戏旁边建造。如果你知道另一个解决方案或任何想法,欢迎你。 **

有人愿意一步一步地帮助我如何在下面实施该代码?这对我来说非常重要,因为我正在学习UE4 C ++。

// Load Static Mesh From Path 
static FORCEINLINE UStaticMesh* LoadMeshFromPath(const FName& Path)
{
    if(Path == NAME_None) return NULL;
    //~

    return LoadObjFromPath<UStaticMesh>(Path);
}

enter image description here

非常感谢您的回答。

2 个答案:

答案 0 :(得分:1)

如果您所做的一切都是绘制草图,那么您会问得多一点。 如果您已经做了更多,请分享信息。

我最近回答了我可以确定的问题的核心部分 - 如何将网格从本地驱动器转换为ue4 -

https://stackoverflow.com/a/41753091/5196012

这也包含指向您的代码示例似乎来自的wiki的链接。

您缺少此人在维基上的模板

//TEMPLATE Load Obj From Path
template <typename ObjClass>
static FORCEINLINE ObjClass* LoadObjFromPath(const FName& Path)
{
    if(Path == NAME_None) return NULL;
    //~

      return Cast<ObjClass>(StaticLoadObject( ObjClass::StaticClass(), NULL,*Path.ToString()));
}

由于没有人知道你有什么选择策略,我猜它会是一些标准文件浏览器对话框返回一个文件句柄...

您需要做的就是在“按下”事件的小部件按钮中调用您的功能。

答案 1 :(得分:1)

  OBS:因为我的游戏太重了,所以我想我会导入静态网格并实时放入场景,而不是在游戏旁边建造。

这是不可能的。导入静态网格物体时,它将保存为内容文件夹中的.uasset文件。 你的网格有多大,你的磁盘有多小,你无法导入它们?

如果您绝对不想导入任何资源,可以使用此插件在运行时生成网格:https://www.unrealengine.com/marketplace/runtime-mesh-component 但请注意,您使用该方法会失去许多额外的好处和优化。