0

我正在学习 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);
}

在此处输入图像描述

非常感谢您的任何回答。

4

2 回答 2

1

如果你所做的只是画那张草图,你问得有点多。如果您已经做了更多,请分享信息。

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

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

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

您缺少此人在 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()));
}

因为没有人知道你有什么选择策略,我猜这将是一些标准的文件浏览器对话框返回一个文件句柄......

然后,您需要做的就是在“按下”事件的小部件按钮中调用您的函数。

于 2017-01-26T13:33:48.000 回答
0

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

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

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

于 2017-01-26T18:33:33.683 回答