当前位置: 首页 > news >正文

【UE教程/进阶】使用Slate

目录

  • Slate语法
    • 语法结构示例
    • 创建Slate
    • 设置属性" . "
    • 添加插槽" + "
    • 插槽控件" [ ] "
  • 向Editor中添加控件
  • 游戏中添加控件


Slate语法

语法结构示例

auto Window = SNew(SWindow)
.ClientSize(FVector2D(600, 600))
[SNew(SHorizontalBox)+ SHorizontalBox::Slot()[SNew(STextBlock).Text(FText::FromString("Hello"))]+ SHorizontalBox::Slot()[SNew(STextBlock).Text_Lambda([](){return FText::FromString("Slate");})]
];

创建Slate

  • SNew(Slate类型):创建Slate,返回指向该Slate的TSharedRef。
  • SAssignNew(TSharedPtr<Slate类型>, Slate类型):创建Slate,将传入的TSharedPtr指针指向创建的Slate。
  • SArgumentNew(参数集, Slate类型):使用参数集进行构造。

设置属性" . "

  • Slate对象.属性名称(属性值):设置Slate的属性

添加插槽" + "

  • Slate对象 + 插槽类型::Slot():向Slate添加插槽以添加子控件。

插槽控件" [ ] "

  • Slate对象[SNew( ... )]:在Slate对象的插槽中添加子控件。

向Editor中添加控件

  • 通过FSlateApplication添加窗口:FSlateApplication::Get().AddWindow(...),参数如下:
    • TSharedRef Window:要显示的SWindow。
    • bool Show:是否立即显示创建的窗口,若不立即显示窗口,可以后续使用Window->ShowWindow()显示窗口
auto Window = SNew(SWindow);
FSlateApplication::Get().AddWindow(Window, true);

  • 通过TabManager添加选项卡:FGlobalTabmanager::Get()->RegisterTabSpawner(...)
    参数如下:
    • FName Name - 选项卡名称
    • FOnSpawnTab& Tab - 要创建的选项卡
  • 显示选项卡:FGlobalTabmanager::Get()->TryInvokeTab(...):如果选项卡在最后已知位置关闭,则尝试打开选项卡;如果选项卡已经打开,会转到选项卡。参数如下:
    • FTabId TabID:选项卡ID
FGlobalTabmanager::Get()->RegisterTabSpawner(FName("CustomTab"),FOnSpawnTab::CreateLambda(
[](const FSpawnTabArgs& Args){return SNew(SDockTab)[SNew(...)];
}));
FGlobalTabmanager::Get()->TryInvokeTab(FTabId("CustomTab"));

游戏中添加控件

  • 通过GameViewport管理控件:GEngine->GameViewport->【以下函数】
    • AddViewportWidgetContent(TSharedRef<SWidget> Widget, int32 ZOrder):添加控件并指定显示层级ZOrder。
    • RemoveViewportWidgetContent(TSharedRef<SWidget> Widget):移除控件。
    • AddViewportWidgetForPlayer(ULocalPlayer* Player, TSharedRef<SWidget> Widget, int32 ZOrder):向指定Player添加指定控件。
    • RemoveViewportWidgetForPlayer(ULocalPlayer* Player, TSharedRef<SWidget> Widget):从指定Player移除指定控件。
    • RemoveAllViewportWidgets():移除所有控件
    • RebuildCursors():重新创建光标控件

正春华枝俏,待秋实果茂,愿与君共勉

http://www.lryc.cn/news/587311.html

相关文章:

  • 【unitrix】 5.0 第二套类型级二进制数基本结构体(types2.rs)
  • SQL预编译:安全高效数据库操作的关键
  • 苍穹外卖Day3
  • markdown-it-mathjax3-pro —— 新一代 Markdown 数学公式渲染插件
  • vue的优缺点
  • 框架和库的区别
  • day16~17-系统负载高故障与磁盘管理
  • muduo概述
  • 电商系统未来三年趋势:体验升级、技术赋能与模式重构
  • ASP.NET Core 中的延迟注入:原理与实践
  • 【UE教程/进阶】UE中的指针与引用
  • 应用层协议和JSON的使用
  • gcc 源码阅读---程序入口
  • 面试150 从前序与中序遍历构造二叉树
  • python赤道上空的大气环流剖面图(纬向-高度剖面)
  • Node.js 聊天内容加密解密实战教程(含缓存密钥优化)
  • 【elementUI踩坑记录】解决 el-table 固定列 el-table__fixed 导致部分滚动条无法拖动的问题
  • QT控件命名简写
  • Burp suite的下载安装基础用法(密码喷洒,密码爆破)
  • Linux 系统——管理 MySQL
  • 超市管理系统
  • 问题记录:Fastjson序列化-空值字段处理
  • 数据结构 Map和Set
  • 零基础完全理解视觉语言模型(VLM):从理论到代码实践
  • ArkUI Inspector工具用法全解析
  • Redis 命令总结
  • react中为啥使用剪头函数
  • Redis技术笔记-从三大缓存问题到高可用集群落地实战
  • 【SpringBoot】注册条件+自动配置原理+自定义starter
  • 通信网络编程5.0——JAVA