【问题标题】:How could I load a Static Mesh from external folder?如何从外部文件夹加载静态网格体?
【发布时间】:2017-06-11 21:56:47
【问题描述】:

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

非常感谢您的任何回答。

【问题讨论】:

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


    【解决方案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()));
    }
    

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • +1...UE 无法执行运行时导入原始网格资源、将原始资源转换为虚幻资源、为资源设置引用并最终加载到游戏中的过程是极其复杂。
      • 除非OP所说的小部件是在编辑器环境中使用的,但我猜OP的“运行时”是指游戏运行时。
      猜你喜欢
      • 2021-05-28
      • 2016-10-26
      • 1970-01-01
      • 2012-02-28
      • 2017-12-04
      • 2015-08-21
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多