UE4 Shipping下打开系统窗口崩溃问题 附插件下载地址

32 篇文章 43 订阅

原创文章,转载请注明出处。

Shipping下打开系统窗口崩溃问题

插件下载链接

SelectDialog插件下载链接

前言

如果你遇到了正常开发(Debug/Develope)下调用打开系统窗口接口没问题,而Shipping下直接崩溃的话,不妨看看是不是一样的问题。

崩溃现象描述:调用FDesktopPlatformModule::Get()->OpenFileDialog来打开不同系统下的界面,比如要在运行时导入模型,导入图片视频音频等功能,你就会用到这个功能。
如下图,我要在程序中选择一个电脑上fbx格式模型导入进来。在dubug下正常,打出来的包确崩溃了。
怎么解决?什么原因呢?
在这里插入图片描述
你调用的代码应该是类似下面的(FDesktopPlatformModuleEx是我封装的一个shipping下用的插件。FDesktopPlatformModuleEx::Get()

/*
		打开系统文件夹路径
		参数1:文件绝对路径
		参数2:文件类型 TEXT("*.*")=全部
		记录:	TEXT("FBX,JPG,BMP,PNG files|*.fbx;*.jpg;*.png;*.bmp");
		TEXT("FBX Files|*.fbx");
		TEXT("JPG,BMP,PNG files|*.jpg;*.png;*.bmp");
		TEXT("(Image Files)|*.BMP;*.JPG;*.PNG;*.JPEG;)")
	*/
	UFUNCTION(BlueprintCallable, Category = "OpenWindowsFile")
	static TArray<FString> OpenWindowsFiles(const FString& sTitle, const FString& sYourFullPath, const FString& sExtensionStr = TEXT("*.*"));
TArray<FString> URegionRiskReadLibrary::OpenWindowsFiles(const FString& sTitle, const FString& sYourFullPath, const FString& sExtensionStr)
{
	//用户选择的文件列表
	TArray<FString> OpenFileNames;

	IDesktopPlatform* DesktopPlatform = FDesktopPlatformModuleEx::Get();
	if (DesktopPlatform)
	{
		void* ParentWindowHandle = GEngine->GameViewport->GetWindow()->GetNativeWindow()->GetOSWindowHandle();
		DesktopPlatform->OpenFileDialog(ParentWindowHandle, sTitle, sYourFullPath, TEXT(""), *sExtensionStr, EFileDialogFlags::Multiple, OpenFileNames);
	}
	return OpenFileNames;
}

崩溃原因

其实咱们在shipping下是不能引用Engine里Developer文件夹里面的任意模块内容的,这个只能在Debug和Develope下使用。
PS:Engine里Developer指的是下面这个图内Developer文件夹里面的所有模块。
这个文件夹下的所有模块都是不能在shipping下使用的,如果使用了,现象就是shipping下崩溃,相应的支持文件根本就没有打到包里。
在这里插入图片描述
看到这里你应该知道怎么回事了,其实就是由于你调用的打开系统窗口的API是属于DesktopPlatform模块,恰巧DesktopPlatform这个模块又在Developer范围内。

解决方案

其实也简单,就是将上面的Developer文件夹内的DesktopPlatform模块和它用到的 相关模块(在Developer范围) 拷贝出来,将类名模块名这些都修改一下。

看到这里,相信类似的问题你再遇到的话也知道怎么解决了。

所以我做了一个插件,测试过适用于4.25每个版本和4.26每个版本。其他版本的没有测试过。

插件怎么用

1>解压后放到你的工程的Plugins文件夹内;
2>在你的build.cs里面将DesktopPlatform模块的引用, 替换成DesktopPlatformEx模块的名称就好了;
3>去掉DesktopPlatform的头文件包含;
4>调用时候记住是FDesktopPlatformModuleEx::Get(); 将你的代码中的FDesktopPlatformModule替换成FDesktopPlatformModuleEx;

/*
		打开系统文件夹路径
		参数1:文件绝对路径
		参数2:文件类型 TEXT("*.*")=全部
		记录:	TEXT("FBX,JPG,BMP,PNG files|*.fbx;*.jpg;*.png;*.bmp");
		TEXT("FBX Files|*.fbx");
		TEXT("JPG,BMP,PNG files|*.jpg;*.png;*.bmp");
		TEXT("(Image Files)|*.BMP;*.JPG;*.PNG;*.JPEG;)")
	*/
	UFUNCTION(BlueprintCallable, Category = "OpenWindowsFile")
	static TArray<FString> OpenWindowsFiles(const FString& sTitle, const FString& sYourFullPath, const FString& sExtensionStr = TEXT("*.*"));
TArray<FString> URegionRiskReadLibrary::OpenWindowsFiles(const FString& sTitle, const FString& sYourFullPath, const FString& sExtensionStr)
{
	//用户选择的文件列表
	TArray<FString> OpenFileNames;

	IDesktopPlatform* DesktopPlatform = FDesktopPlatformModuleEx::Get();
	if (DesktopPlatform)
	{
		void* ParentWindowHandle = GEngine->GameViewport->GetWindow()->GetNativeWindow()->GetOSWindowHandle();
		DesktopPlatform->OpenFileDialog(ParentWindowHandle, sTitle, sYourFullPath, TEXT(""), *sExtensionStr, EFileDialogFlags::Multiple, OpenFileNames);
	}
	return OpenFileNames;
}

谢谢,创作不易,大侠请留步… 动起可爱的双手,来个关注再走呗
ღ( ´・ᴗ・` )比心<( ̄︶ ̄)>

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 要下载UE4 WebUI插件,首先需要进入Unreal Engine的官方网站。在首页上方的导航栏中,找到“Marketplace”(市场)选项并点击进入。然后,在左侧的搜索框中输入“WebUI”来搜索相关插件。 在搜索结果页面中,可以看到各种WebUI插件的列表。浏览这些插件并选择适合自己需求的插件。点击选定的插件,进入插件的详细页面。 在插件的详情页面上,可以阅读有关该插件的详细描述、功能、系统要求等信息。确保插件与当前使用的UE4版本兼容,并满足其它系统要求。如果满足要求,可以点击页面上的“Add to Project”(添加到项目)按钮。 接下来,会出现一个弹出窗口,让你选择将插件添加到哪个项目中。选择目标项目并点击“Add to Project”按钮,然后等待一段时间以完成插件下载和安装。 安装完成后,可以打开UE4编辑器,并打开目标项目。在编辑器中找到插件目录,并将其添加到项目的插件列表中。按照插件提供的说明和文档,可以开始使用WebUI插件来创建和设计网页界面。 总之,要下载UE4 WebUI插件,首先需要在Unreal Engine官方网站上搜索并选择合适的插件,然后将其添加到目标项目中进行下载和安装,最后根据插件提供的说明进行使用。 ### 回答2: 下载UE4 WebUI插件非常简单。首先,打开Epic Games Launcher并登录您的账户。然后,在左侧导航栏中选择“库”选项卡。在库页面上,找到并选择已安装的UE4引擎版本。在引擎细节页面中,找到并选择“插件”选项卡。 在插件页面上,您可以找到各种可用的插件列表。使用搜索框或滚动浏览可用的插件,直到找到具体的WebUI插件。一旦找到,点击插件名称以打开它的详细信息页面。 在插件详细信息页面上,您将看到有关插件的描述、版本、兼容性和其他详细信息。请确保您查看和了解这些信息,以确定该插件是否适用于您的项目。如果确定要下载插件,请点击页面上的“添加到项目”按钮。 添加到项目后,Epic Games Launcher将开始下载插件文件。具体下载时间取决于您的网络速度和文件大小。一旦下载完成,您将在“类别”选项卡中看到已添加的插件。 现在,您可以打开UE4编辑器,并在项目内容浏览器中找到已安装的WebUI插件。点击插件以查看和使用它。如果您要开始使用插件功能,您可能需要参考插件的文档或教程以了解如何正确使用它。 总的来说,UE4 WebUI插件下载非常简单,只需从Epic Games Launcher中选择并添加到您的项目中即可。 ### 回答3: UE4(Unreal Engine 4)是一款强大的游戏开发引擎,拥有丰富的功能和工具。UE4支持在游戏中使用Web UI插件,使开发者能够在游戏中集成Web页面。 要下载UE4的Web UI插件,可以按照以下步骤进行操作: 1. 在官方Unreal Engine网站(https://www.unrealengine.com/)上创建一个账户并登录。 2. 导航到"Marketplace"标签页。 3. 在搜索栏中输入"Web UI",然后点击搜索按钮。 4. 在搜索结果中,选择适用于UE4版本的Web UI插件。 5. 点击插件的页面以查看更多信息,包括功能、价格和用户评价。 6. 如果插件符合要求,点击“Add to Cart”按钮将其添加到购物车。 7. 在购物车页面上,确认订单并选择适用于你的项目的许可证选项。 8. 填写付款和发票信息,然后点击“Purchase”按钮进行付款。 9. 完成付款后,你将收到一封确认邮件,并可以在网站上的“Library”标签页中找到已购买的插件。 10. 在UE4编辑器中,导航到“Marketplace”标签页,并选择“Your Library”。在这里,你可以找到刚刚购买的Web UI插件。 11. 点击插件名称的下载按钮,选择合适的版本并点击“Install”进行安装。 12. 安装完成后,在Editor中使用插件的相关文档和示例,开始在游戏中使用Web UI插件。 总结来说,要下载UE4的Web UI插件,你需要在官网购买插件,然后在UE4编辑器中安装和使用插件。购买过程需要创建账户、浏览插件页面、添加到购物车、进行付款,并在Library中找到已购买的插件进行下载和安装。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WhiteTian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值