DreamUMG 是一个面向 Unreal Engine UMG/Slate 的扩展插件,当前主要提供三类能力:
- 动态文本动画
- 2D UMG 中的伪 3D / 曲面变换
- 可由蓝图动态组装的 Dream Slate UI 树
当前版本基于 UE 5.7 开发和验证。
核心控件:
Dream Animated Text
核心对象:
Typewriter PlayerText Animation PlayerRange SelectorRandom SelectorLyrics Selector- 各类
Executor
目前内置的执行器包括:
Alpha ExecutorColor ExecutorColor Random ExecutorPosition ExecutorPosition Random ExecutorPosition Wave ExecutorRotation Random ExecutorRotation Wave ExecutorScale ExecutorScale Random ExecutorScale Wave Executor
这套系统适合做:
- 打字机
- 字符渐显/渐隐
- 逐字位移、缩放、旋转
- 歌词/KTV 风格扫光高亮
- 随机扰动与波浪动画
核心控件:
Dream Pseudo 3D BoxDream Curved BoxDream Flip Card Box
适合做:
- 普通 UMG 中的透视旋转
- 卡片翻转
- 面板倾斜
- 弯曲屏幕/圆柱屏效果
这两个控件本质上仍然运行在 2D Slate/UMG 渲染链里,不是世界空间 Widget,也不是字形网格级 3D。
核心对象:
Dream Slate HostDream Slate Widget ComponentDream Widget ComponentSlate 3D TextSlate 3D ImageSlate 3D BorderSlate 3D ButtonSlate 3D Vertical Box
这套对象可以在细节面板里直接嵌套,也可以在蓝图里运行时动态创建和拼装。
DreamUMG 当前已经补齐了主要蓝图入口:
- 所有核心文本动画对象都支持
BlueprintType / Blueprintable - 主要 Widget / Component 都支持蓝图访问
- 关键对象属性带
BlueprintGetter / BlueprintSetter - 常用运行时结构操作已经提供蓝图函数
蓝图函数库:
DreamUMGBlueprintLibrary
当前提供的创建函数:
CreateDreamTextAnimationPlayerCreateDreamTextAnimationSelectorCreateDreamTextAnimationExecutorCreateDreamSlate3DWidgetRefreshDreamSlate3DWidget
Text Animation Player 目前支持在蓝图中:
SetSelectorSetExecutorsAddExecutorRemoveExecutorClearExecutorsGet ExecutorsSetOffsetResetPlayerStateNeedsTick
Selector / Executor 目前支持:
SetOffsetResetSelectorStateResetExecutorStateNeedsTick
Slate 3D 节点当前支持:
RefreshOwnerSetContentWidgetAddChildWidgetAddChildSlotRemoveChildWidgetClearChildren
- 在 Widget Blueprint 中放入
Dream Animated Text - 设置
Text - 给
Animation Player指定一个对象
常见组合:
- 打字机:
Typewriter Player - 普通逐字动画:
Text Animation Player + Selector + Executors
推荐入门配置:
Animation Player设为Text Animation PlayerSelector设为Range Selector- 添加一个
Alpha Executor - 再添加一个
Position Executor
- 放入
Dream Pseudo 3D Box - 把任意单个子控件放进去
- 调整:
RotationPerspective StrengthField Of ViewDepth OffsetPerspective Segments
如果想做圆柱/弯曲屏:
- 放入
Dream Curved Box - 把任意单个子控件放进去
- 调整:
RotationCurve AngleCurve SegmentsPerspective StrengthDepth OffsetTransform Pivot
如果想做真正的正反面翻牌:
- 放入
Dream Flip Card Box - 在它下面放两个子控件
- 第 1 个子控件是正面
- 第 2 个子控件是背面
- 用蓝图时间轴或动画驱动
Flip Angle
常用配置:
Flip Angle = 0显示正面Flip Angle = 180显示背面Flip Angle = 360回到正面Mirror Back Face = true用于避免背面文字镜像Horizontal Segments越高,透视翻转边缘越平滑
- 放入
Dream Slate Host - 给
Root Widget指定一个Dream Slate节点树
推荐结构:
Slate 3D Vertical BoxSlate 3D BorderSlate 3D ButtonSlate 3D Text
示例流程:
CreateDreamTextAnimationPlayerCreateDreamTextAnimationSelectorCreateDreamTextAnimationExecutorSetSelectorAddExecutorSetAnimationPlayer
示例流程:
CreateDreamSlate3DWidget创建Slate 3D Vertical Box- 再创建
Slate 3D Text / Button / Border - 用
AddChildWidget或SetContentWidget拼起来 - 赋给
Dream Slate Host或Dream Widget Component - 调用
RefreshDreamSlate3DWidget
这是基于 UWidgetComponent 的 Dream Slate 承载组件,适合把 Dream Slate 树直接放进世界空间。
这是 Dream 的自定义 Widget 组件实现,目标是提供更独立的世界空间合成路径。
当前建议:
- 常规世界空间 UI:优先使用
Dream Slate Widget Component - 需要 Dream 自定义渲染路径时:使用
Dream Widget Component
这两套效果都依赖分段重投影:
- 分段越高,轮廓越平滑
- 分段越高,绘制成本也越高
为了避免大透视时出现飞刺、翻面和错误覆盖,目前对接近相机的分片做了保护:
- 过近分片可能被跳过
- 背面分片会被剔除
- 分片按深度排序绘制
这是有意为之,优先保证画面稳定。
它们不具备完整的:
- 场景深度遮挡
- 网格级几何
- 真实 3D 交互体积
如果目标是完整 3D UI,请考虑世界空间 Widget 或单独的 3D UI 渲染方案。
Plugins/DreamUMG
├─ Content
├─ Resources
├─ Shaders
└─ Source/DreamUMG
├─ Public
│ ├─ Components
│ └─ Widgets
└─ Private
Public/Widgets/DreamAnimatedTextBlock.hPublic/Widgets/DreamTextAnimation.hPublic/Widgets/DreamPseudo3DBox.hPublic/Widgets/DreamCurvedBox.hPublic/Widgets/DreamFlipCardBox.hPublic/Widgets/DreamSlate3DWidgets.hPublic/Widgets/DreamSlateHostWidget.hPublic/Components/DreamSlateWidgetComponent.hPublic/Components/DreamWidgetComponent.hPublic/DreamUMGBlueprintLibrary.h
如果你准备在项目里大规模使用:
- 文本动画优先走
Dream Animated Text - 一般 UI 透视效果优先走
Dream Pseudo 3D Box - 圆柱屏/弧面屏优先走
Dream Curved Box - 蓝图动态拼 UI 时优先走
Dream Slate Host + DreamUMGBlueprintLibrary
如果你后面还要继续扩展,推荐下一步优先补:
- 更多 Blueprint setter/getter
- Slate 3D HorizontalBox / Overlay / UniformGrid
- Pseudo 3D / Curved Box 的 supersample 缓存
- 更多文本动画执行器