vault backup: 2026-05-03 20:37:58
This commit is contained in:
68
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/UI/Slate扩展.md
Normal file
68
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/UI/Slate扩展.md
Normal file
@@ -0,0 +1,68 @@
|
||||
---
|
||||
title: Slate扩展
|
||||
date: 2026-05-03 00:00:00
|
||||
excerpt: 垂直文本对齐、独立透明度、文本溢出省略、富文本图片、几何缓存
|
||||
tags:
|
||||
- ARC
|
||||
- UI
|
||||
- Slate
|
||||
rating: ⭐
|
||||
---
|
||||
|
||||
# Slate 扩展
|
||||
|
||||
返回 [[UI]]
|
||||
|
||||
## 概述
|
||||
|
||||
ARC 引擎对 Slate 框架进行了多项扩展,主要围绕文本渲染和 Widget 性能优化。
|
||||
|
||||
## 1. 垂直文本对齐
|
||||
|
||||
新增 `ETextJustifyV::Type` 枚举,为 `STextBlock` 和 `SRichTextBlock` 添加垂直对齐支持:
|
||||
|
||||
- `Top` — 顶部对齐
|
||||
- `Center` — 垂直居中
|
||||
- `Bottom` — 底部对齐
|
||||
|
||||
格斗游戏 UI 中常需要文本在固定高度区域内垂直居中。
|
||||
|
||||
## 2. 独立阴影/描边透明度
|
||||
|
||||
Shadow 和 Outline 的颜色不受父 Widget 透明度影响:
|
||||
|
||||
```
|
||||
标准 UE4:文字透明度 50% → Shadow 也跟着变为 50%
|
||||
ARC 修改:文字透明度 50% → Shadow 保持自身设定的透明度
|
||||
```
|
||||
|
||||
用于格斗游戏中文字淡入淡出时保持描边清晰可见。
|
||||
|
||||
## 3. 文本溢出省略
|
||||
|
||||
按高度截断文本并添加省略号(`...`)。标准 UE4 只支持按宽度截断。
|
||||
|
||||
## 4. 富文本图片运行
|
||||
|
||||
`SRichTextBlock` 扩展了图片嵌入能力:
|
||||
- 动态 Brush 支持(运行时更换图标)
|
||||
- 范围创建(基于文本范围插入图片)
|
||||
|
||||
## 5. 几何缓存
|
||||
|
||||
在 `SWidget` 上新增几何缓存机制:
|
||||
|
||||
```cpp
|
||||
void SetCachedGeometry();
|
||||
void UpdateGeometryAllChildren();
|
||||
```
|
||||
|
||||
减少每帧的 Layout 计算开销,对格斗游戏 60fps 的帧预算至关重要。
|
||||
|
||||
## 修改文件列表
|
||||
|
||||
涉及 `Source/Runtime/Slate/` 和 `Source/Runtime/SlateCore/` 下约 26 个文件,主要覆盖:
|
||||
- `STextBlock.h/.cpp` — 垂直对齐、溢出
|
||||
- `SRichTextBlock.h/.cpp` — 富文本图片
|
||||
- `SWidget.h/.cpp` — 几何缓存
|
||||
- `FontCache` 相关 — 文本阴影/描边独立透明度
|
||||
32
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/UI/UI.md
Normal file
32
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/UI/UI.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: UI
|
||||
date: 2026-05-03 00:00:00
|
||||
excerpt: ARC 引擎 UI/Slate/UMG 扩展分类索引
|
||||
tags:
|
||||
- ARC
|
||||
- UI
|
||||
rating: ⭐
|
||||
---
|
||||
|
||||
# UI — UI/Slate/UMG 扩展
|
||||
|
||||
返回 [[ARC引擎修改总览]]
|
||||
|
||||
## 概述
|
||||
|
||||
ARC 引擎对 UE4 的 UI 系统(Slate + UMG)进行了大量扩展,主要服务于格斗游戏的文本显示需求(多语言、竖排文字)和控制器管理。修改涉及约 38 个文件。
|
||||
|
||||
## 功能列表
|
||||
|
||||
| 功能 | 文档 | 说明 |
|
||||
|------|------|------|
|
||||
| Slate 扩展 | [[Slate扩展]] | 垂直对齐、独立透明度、文本溢出、富文本图片、几何缓存 |
|
||||
| UMG 本地化 | [[UMG本地化]] | 平台后缀语言 ID、平台感知文本查找 |
|
||||
| 简单元素渲染扩展 | [[简单元素渲染扩展]] | REDMain、AddColor、灰度、Multiply 混合 |
|
||||
|
||||
## 控制器管理
|
||||
|
||||
新增 `FUEISlateApplication`(继承 `FSlateApplication`):
|
||||
- User/Controller ID 映射表(`UserIndexMap`)
|
||||
- 格斗游戏多手柄的输入分配
|
||||
- 参见 [[UEI事件系统]]
|
||||
60
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/UI/UMG本地化.md
Normal file
60
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/UI/UMG本地化.md
Normal file
@@ -0,0 +1,60 @@
|
||||
---
|
||||
title: UMG本地化
|
||||
date: 2026-05-03 00:00:00
|
||||
excerpt: 平台感知的多语言文本系统(平台后缀、语言 ID)
|
||||
tags:
|
||||
- ARC
|
||||
- UI
|
||||
- UMG
|
||||
- Localization
|
||||
rating: ⭐
|
||||
---
|
||||
|
||||
# UMG 本地化
|
||||
|
||||
返回 [[UI]]
|
||||
|
||||
## 概述
|
||||
|
||||
ARC 引擎为 UMG 文本系统添加了平台感知的本地化机制,允许同一文本 ID 在不同平台上显示不同内容(例如按钮提示文本因平台不同而变化)。
|
||||
|
||||
## 平台后缀系统
|
||||
|
||||
文本 ID 查找时自动追加平台后缀:
|
||||
|
||||
| 平台 | 后缀 |
|
||||
|------|------|
|
||||
| PS5 | `_PS5` |
|
||||
| Xbox Series X | `_XSX` |
|
||||
| 其他 | 无后缀(使用默认文本) |
|
||||
|
||||
查找顺序:
|
||||
1. 先查 `TextID_PS5`(或 `_XSX`)
|
||||
2. 找不到则回退到 `TextID`
|
||||
|
||||
## 语言 ID
|
||||
|
||||
新增 CVar `sg_REDLanguageID`,允许运行时切换语言而不依赖系统语言设置:
|
||||
|
||||
```cpp
|
||||
static TAutoConsoleVariable<int32> CVarREDLanguageID(
|
||||
TEXT("sg.REDLanguageID"),
|
||||
0,
|
||||
TEXT("Override language ID for RED localization"));
|
||||
```
|
||||
|
||||
## 自定义 L10N 加载
|
||||
|
||||
`Source/Runtime/Core/` 中的本地化文件加载逻辑支持自定义 L10N 目录。
|
||||
|
||||
## 兼容性
|
||||
|
||||
`UOldRichTextBlockDecorator` 兼容层确保旧版富文本格式在新系统中正常工作。
|
||||
|
||||
## 修改文件列表
|
||||
|
||||
涉及 `Source/Runtime/UMG/` 下约 12 个文件,主要覆盖:
|
||||
- `TextBlock` 相关 — 平台后缀查找
|
||||
- `TextWidgetTypes` — 垂直对齐(与 [[Slate扩展]] 配合)
|
||||
- `RichTextBlockDecorator` — 兼容层
|
||||
- `WidgetComponent` — 修改
|
||||
71
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/UI/简单元素渲染扩展.md
Normal file
71
03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/UI/简单元素渲染扩展.md
Normal file
@@ -0,0 +1,71 @@
|
||||
---
|
||||
title: 简单元素渲染扩展
|
||||
date: 2026-05-03 00:00:00
|
||||
excerpt: REDMain/GammaREDMain 着色器扩展:AddColor、灰度、Multiply 混合
|
||||
tags:
|
||||
- ARC
|
||||
- UI
|
||||
- Rendering
|
||||
rating: ⭐
|
||||
---
|
||||
|
||||
# 简单元素渲染扩展
|
||||
|
||||
返回 [[UI]]
|
||||
|
||||
## 概述
|
||||
|
||||
扩展了 UE4 的 SimpleElement Pixel Shader(用于 2D UI 元素、线条、Debug 绘制等),新增颜色叠加、灰度转换和 Multiply 混合模式。
|
||||
|
||||
## 新增着色器入口
|
||||
|
||||
### REDMain / GammaREDMain
|
||||
|
||||
```hlsl
|
||||
void REDMain(... out float4 OutColor : SV_Target0)
|
||||
{
|
||||
OutColor = CalcREDColor(InColor, InTexCoord);
|
||||
}
|
||||
|
||||
float4 CalcREDColor(float4 VertexColor, float2 UV)
|
||||
{
|
||||
float4 TexColor = Texture2DSample(InTexture, InTextureSampler, UV);
|
||||
float4 Result = TexColor * VertexColor;
|
||||
|
||||
// 叠加色
|
||||
Result.rgb += AddColor.rgb;
|
||||
|
||||
// 灰度转换
|
||||
float Gray = dot(Result.rgb, float3(0.299, 0.587, 0.114));
|
||||
Result.rgb = lerp(float3(Gray, Gray, Gray), Result.rgb, Grayscale);
|
||||
|
||||
return Result;
|
||||
}
|
||||
```
|
||||
|
||||
参数:
|
||||
- `AddColor` — 加法颜色叠加(uniform float3)
|
||||
- `Grayscale` — 饱和度系数(uniform float,0=灰度,1=原色)
|
||||
|
||||
### MainMult
|
||||
|
||||
Multiply 混合模式的 Simple Element 渲染:
|
||||
|
||||
```hlsl
|
||||
void MainMult(... out float4 OutColor : SV_Target0)
|
||||
{
|
||||
// 用于 Multiply 混合的 UI 元素
|
||||
}
|
||||
```
|
||||
|
||||
## 使用场景
|
||||
|
||||
- 格斗游戏 UI 的动态颜色变化(血条变色、技能冷却灰度化)
|
||||
- 受击时的 HUD 闪烁效果(AddColor 叠加红色)
|
||||
- 菜单界面的 Multiply 叠加装饰
|
||||
|
||||
## 修改文件列表
|
||||
|
||||
| 文件 | 修改类型 |
|
||||
|------|---------|
|
||||
| `Shaders/Private/SimpleElementPixelShader.usf` | 新增 `REDMain`、`MainMult`、`CalcREDColor` |
|
||||
Reference in New Issue
Block a user