Как я могу загрузить статическую сетку из внешней папки?

Я изучаю UE4 C++ Development, и у меня есть идея, но я не знаю, возможно ли это сделать. У меня есть папка на моем 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);
}

Большое спасибо за любой ответ.

2 ответа

OBS: потому что моя игра будет слишком тяжелой, поэтому я подумал, что я должен импортировать статические сетки и вставлять сцены в режиме реального времени, не создавая рядом с игрой.

Это невозможно. В тот момент, когда вы импортируете статическую сетку, она будет сохранена как файл.uasset в вашей папке содержимого. Насколько велики ваши меши и насколько мал ваш диск, чтобы вы не могли их импортировать?

Если вы абсолютно не хотите импортировать какие-либо активы, вы можете создавать свои сетки во время выполнения с помощью этого плагина: https://www.unrealengine.com/marketplace/runtime-mesh-component Обратите внимание, что вы потеряете много лишних плюсов и оптимизаций. с таким подходом.

Вы спрашиваете немного, все ли вы сделали, это нарисовали этот эскиз. Если вы уже сделали больше, пожалуйста, поделитесь информацией.

Я недавно ответил на то, что я мог бы определить как основную часть вашего вопроса - как получить сетку с локального диска в ue4 -

/questions/16050249/kak-otkryit-fajl-fbx-iz-interfejsa-moego-proekta-ue4/16050268#16050268

Здесь также есть ссылка на вики, откуда, кажется, пришел ваш пример кода.

Вам не хватает шаблона, который есть у человека в вики

//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()));
}

Поскольку никто не знает, какая у вас стратегия выбора, я думаю, это будет какой-то стандартный диалог браузера файлов, возвращающий дескриптор файла...

Все, что вам нужно сделать, это вызвать вашу функцию в кнопке виджета "при нажатии".

Другие вопросы по тегам