Как я могу загрузить статическую сетку из внешней папки?
Я изучаю 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()));
}
Поскольку никто не знает, какая у вас стратегия выбора, я думаю, это будет какой-то стандартный диалог браузера файлов, возвращающий дескриптор файла...
Все, что вам нужно сделать, это вызвать вашу функцию в кнопке виджета "при нажатии".