我正在学习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);
}
非常感谢您的回答。
答案 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 但请注意,您使用该方法会失去许多额外的好处和优化。