【虚幻引擎】UE4 FTabmanager实现多窗口

这篇具有很好参考价值的文章主要介绍了【虚幻引擎】UE4 FTabmanager实现多窗口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

B站教学链接:https://space.bilibili.com/449549424?spm_id_from=333.1007.0.0

前言:最近在研究UE4源码的时候,想实现自定义窗口,设置自己的布局方式,就看到了FTabmanager这个类,能够创建不同的布局方式。

我们先看源码的实现方式:FTabmanager类实现了创建窗口的不同方法

NewLayout:创建新的布局方式

ue4 分屏,UE4  Slate,虚幻,ue4,游戏引擎

 RegisterTabSpawner:注册在模块启动时的函数,这个就是创建了一个窗口,窗口所放置的内容ue4 分屏,UE4  Slate,虚幻,ue4,游戏引擎

 RestoreFrom:从窗口中显示ue4 分屏,UE4  Slate,虚幻,ue4,游戏引擎

 测试案例:

调用独立窗口需要在模块启动的时候调用FGlobalTabmanager::Get()的RegisterTabSpawner函数类创建回调函数

然后就是slate调用SNew(SDockTab)然后定制自己的具体界面,可以是slate,可以是object类,也可以是UMG类,UMG类需要通过TakeWidget()转成SWidget类才能使用,因为TakeWidget函数实现了一个方法:

ue4 分屏,UE4  Slate,虚幻,ue4,游戏引擎

实现三个窗口的创建

FGlobalTabmanager::Get()->RegisterTabSpawner("PackageCenter", FOnSpawnTab::CreateUObject(this, &AMyActor::SpawnCustomTab, FName("PackageCenter")));
	FGlobalTabmanager::Get()->RegisterTabSpawner("HomeCenter", FOnSpawnTab::CreateUObject(this, &AMyActor::SpawnCustomTab, FName("HomeCenter")));
	FGlobalTabmanager::Get()->RegisterTabSpawner("LeverEditor", FOnSpawnTab::CreateUObject(this, &AMyActor::SpawnCustomTab, FName("LeverEditor")));

	TSharedRef<FTabManager::FLayout> Layout = FTabManager::NewLayout(TEXT("Layout"))
		->AddArea(
			FTabManager::NewArea(1920,1080)
			->SetOrientation(EOrientation::Orient_Horizontal)
			->Split(
				FTabManager::NewStack()
				->AddTab("PackageCenter", ETabState::OpenedTab)
				->AddTab("HomeCenter", ETabState::OpenedTab)
				->AddTab("LeverEditor", ETabState::OpenedTab)
				->AddTab("HelpCenter", ETabState::ClosedTab)
			)
		);

	TSharedPtr<SWidget> MainFrameContent = FGlobalTabmanager::Get()->RestoreFrom(Layout, TSharedPtr<SWindow>());

回调函数

TSharedRef<SDockTab> AMyActor::SpawnCustomTab(const FSpawnTabArgs& Arg, FName TabIdentifier)
{
	if (TabIdentifier == TEXT("PackageCenter"))
	{
		return SNew(SDockTab);
	}
	else if (TabIdentifier == TEXT("HomeCenter"))
	{
		HomeBrowser = CreateWidget<UHomeBrowser>(GetWorld(), MyHomeBrowser_instance);
		SAssignNew(HomeCenterTab, SDockTab)
			.OnCanCloseTab(SDockTab::FCanCloseTab::CreateUObject(this, &AMyActor::OnCanTabClose))
			[
				HomeBrowser->TakeWidget()
			];
		
		return HomeCenterTab.ToSharedRef();
	}
	else if (TabIdentifier == TEXT("LeverEditor"))
	{
		SAssignNew(LevelEditorTab, SDockTab)
			.OnCanCloseTab(SDockTab::FCanCloseTab::CreateUObject(this, &AMyActor::OnCanTabClose))
			.ContentPadding(FMargin(0));
			
			LevelEditorTab->SetContent(SAssignNew(LeverEditorWidget, SVRLevelEditor));
			LeverEditorWidget->Initialize(LevelEditorTab.ToSharedRef());
			
			return LevelEditorTab.ToSharedRef();
	}
	else if (TabIdentifier == TEXT("HelpCenter"))
	{
		return SNew(SDockTab);
	}

	return SNew(SDockTab);
}

结果如下

ue4 分屏,UE4  Slate,虚幻,ue4,游戏引擎

ue4 分屏,UE4  Slate,虚幻,ue4,游戏引擎 ue4 分屏,UE4  Slate,虚幻,ue4,游戏引擎文章来源地址https://www.toymoban.com/news/detail-691786.html

到了这里,关于【虚幻引擎】UE4 FTabmanager实现多窗口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【虚幻引擎UE】UE4/UE5 新人科普向

    Unreal Engine是当前最为流行的游戏引擎之一,具有丰富的游戏开发功能和强大的游戏引擎渲染能力。 UE5官方文档:UE5官方文档非常详细,介绍了UE5的各个功能和应用,适合入门学习和深入探究。链接:https://docs.unrealengine.com/5.1/zh-CN/ UE5中文社区:该社区聚集了大量的UE5开发者,

    2024年02月09日
    浏览(79)
  • 【虚幻引擎】UE4/UE5 pak挂载

     找到:D:UEUE_4.27EngineBinariesWin64,  WindowS+R打开CMD命令 运行UnrealPak,运行结果如下      注意如果想要加载Pak内资源,那么这些资源必须是经过Cook的。如果打包的是未Cook的资源,那么即使Pak挂载成功,也不可能会成功加载Pak内资源。  Cook好之后,存储的路径在你的I:DBJ

    2024年02月10日
    浏览(75)
  • 【虚幻引擎】UE4 Spline(样条线)

           样条线Spline在UE中是一个很好用的工具,能够设置物体的跟随移动,也能够设置物体的批量复制,还能够设置一个特殊的模型形状比如圆管,还可以设置特殊的粒子特效,做地形设计等等,只要你想要实现的效果,spline都可以实现。官方也提供了很多的案例,可以参考

    2023年04月10日
    浏览(68)
  • 【虚幻引擎】UE4/UE5科大讯飞文字合成语音

    B站视频链接:https://space.bilibili.com/449549424?spm_id_from=333.1007.0.0   第一步:首先进入讯飞开放平台注册一个账号,然后创建一个 创建一个应用,命名按照你自己的想法来,会产生一个APPID,具体参考UE4如何接入科大讯飞的语音识别_ue4 科大讯飞的语音识别_飞起的猪的博客-CSDN博

    2024年02月13日
    浏览(72)
  • 【虚幻引擎】UE4/UE5数字孪生与前端Web页面匹配

            数字孪生是一种多维动态的数字映射,可大幅提高效能。数字孪生是充分利用物理模型、传感器更新、运行历史等数据,集成多学科、多物理量、多尺度、多概率的仿真过程,在虚拟空间中完成对现实体的复制和映射,从而反映物理实体的全生命周期过程。数字孪生

    2024年02月03日
    浏览(80)
  • 【虚幻引擎】UE4 同步和异步资源加载(软引用)

    虚幻引擎给我们提供了两种引用,一个是硬引用。软引用通常是仅储存资源对象的资源路径没有与资源产生耦合关系的引用(软引用加载到内存中,引用对象不会被加载到内存中,只有在需要的时候才会被加载进内存中)。硬引用则是拥有资源对象实际成员变量,直接与资源对

    2024年02月01日
    浏览(106)
  • 【虚幻引擎UE】UE4/UE5 功能性插件推荐及使用介绍 1

    实现POST/GET基本方法,并支持HEAD带信息。 使用案例:【虚幻引擎UE】UE5 三种模式调用API详解(案例基于免费Varest插件) 能够快速实现打开对话框获取数据的导入、导出路径。 某月限免插件,比较方便的地图插件,可以改改样式直接用。 http下载数据到指定路径 按空格可以切

    2023年04月11日
    浏览(108)
  • 【虚幻引擎UE】UE4/UE5 功能性插件推荐及使用介绍 2

    (基于UE5 的Python支持插件) 支持Python语言基于UE5进行开发 GIT地址:https://github.com/mamoniem/UnrealEditorPythonScripts (基于UE5 的Haxe支持插件) Haxe是一门新兴的开源编程语言,是一种开源的编程语言。支持Haxe语言基于UE5进行开发。 GIT地址:https://github.com/RobertBorghese/Haxe-UnrealEngine

    2024年02月06日
    浏览(97)
  • 【虚幻引擎UE】UE4/UE5 GIS辅助类插件推荐及使用介绍

    此插件将虚幻引擎连接到Speckle,允许从Speckle接收版本化的3D数据,可以实现Revit、Rhino、Blender、Sketchup、Unity、虚幻引擎、AutoCAD等之间的完全互操作协作。 这是一个涵盖了在展厅、工业产品或其他3D场景中导航的许多可能性的系统。在窗口、触摸屏、手机和Html5上。 只需快速

    2024年02月07日
    浏览(103)
  • UE4,UE5虚幻引擎,Command Console控制台命令,参数集

    1、Command Console控制台命令,虚幻官方文档 https://docs.unrealengine.com/5.0/zh-CN/unreal-editor-interface/ 2、在cmd控制台 help 并按 Enter 3、自动跳转到网页,在网页中,可以查找所有的命令行参数。

    2024年02月15日
    浏览(87)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包