TxGUI是专为七日杀设计的轻量级UI构建框架,基于Unity引擎开发,采用声明式编程模型简化UI开发流程。框架
提供完整的UI组件系统和布局管理功能。
详细教程视频:https://www.bilibili.com/video/BV1LUnvzFEW1/?share_source=copy_web&vd_source=cf88c968ee6de3a494a37d8249c1b8bd
// 须引入的核心命名空间
using static SdtdGameUI.TxGUI; //推荐使用静态导入哦(可选)
using SdtdGameUI.Controls;
using UnityEngine.UI;
public class ExampleUI : MonoBehaviour
{
void Start()
{
// 创建UI画布
GameObject canvas = Build(() =>
{
// 添加主面板
Panel()
.Anchor(EnumUIAnchor.CenterMiddle) // 居中定位
.Size(400, 300)
.Childs(() =>
{
// 添加标题文本
Text("七日杀UI演示")
.TextSize(24)
.TextColor(Color.yellow)
.Position(0, 25);
// 添加交互按钮
Button("点击测试")
.Position(-100, -50)
.OnClick(() => Debug.Log("按钮被点击!"));
});
});
DontDestroyOnLoad(canvas); // 保持UI持久化
}
}
|
方法 |
功能描述 |
|
Build(Action uiDeclare) |
UI画布构建入口,接收UI声明lambda表达式 |
|
ParentStack |
管理UI元素层级关系的线程安全栈 |
|
控件类型 |
创建方法 |
主要参数 |
|
面板容器 |
Panel() |
支持嵌套布局和子控件管理 |
|
文本显示 |
Text(string text) |
支持文本内容和基础样式设置 |
|
按钮控件 |
Button(string text) |
支持点击事件回调 |
|
图像组件 |
RawImage(Texture tex) |
支持纹理贴图显示 |
|
输入框 |
InputField(string placeholder) |
支持占位符文本 |
|
视频播放 |
VideoPlayer(VideoClip clip) |
实验性功能,支持本地视频剪辑 |
|
枚举值 |
描述 |
适用场景 |
|
LeftTop |
左上角对齐 |
菜单栏、工具提示 |
|
LeftMiddle |
左侧居中对齐 |
侧边栏元素 |
|
LeftBottom |
左下角对齐 |
状态栏信息 |
|
CenterTop |
水平居中顶部对齐 |
标题栏 |
|
CenterMiddle |
屏幕绝对中心 |
主要内容区域 |
|
CenterBottom |
水平居中底部对齐 |
底部操作区 |
|
RightTop |
右上角对齐 |
右上角功能区 |
|
RightMiddle |
右侧居中对齐 |
辅助信息显示 |
|
RightBottom |
右下角对齐 |
版权信息、状态显示 |
|
Stretch |
填充父容器 |
全屏背景、覆盖层 |
// 典型面板布局配置
Panel()
.Anchor(EnumUIAnchor.CenterMiddle) // 设置锚点为屏幕中心
.Size(400, 300) // 设置面板尺寸
.Position(0, 0) // 设置相对位置
.Childs(() => {
// 子控件配置
});
面板是UI布局的基础容器,支持嵌套和网格布局。
Panel()
.Anchor(EnumUIAnchor.CenterMiddle)
.Size(300, 200)
.Childs(() => {
// 添加子控件
Text("面板标题")
.TextSize(18)
.Position(0, 30);
});
Panel()
.UseHorizontalGrid((100, 50), (10, 10)) // 水平网格:100x50单元格,10px间距
.Childs(() => {
// 网格内子控件
});
基于TextMeshPro的文本显示组件。
Text("欢迎使用TxGUI")
.TextSize(24)
.TextColor(Color.white)
.TextAlign(TextAlignmentOptions.Center);
支持点击交互的基础按钮组件。
Button("确认操作")
.Position(0, -50)
.OnClick(() => {
Debug.Log("执行确认操作");
});
用于显示纹理贴图的原始图像组件。
RawImg(Texture2D texture)
.Color(new Color(1, 1, 1, 0.8f)) // 半透明白色
.IsRaycast(true); // 启用射线检测
基于TMP_InputField的文本输入组件。
InputField("请输入内容")
.OnValChange((text) => {
Debug.Log($"输入内容:{text}");
});
实验性视频播放组件(基于VideoPlayer和RawImage)。
VideoPlayer(VideoClip clip)
.Looping(true)
.Mute(false);
数值调节滑动条组件。
Slider()
.Min(0).Max(100)
.Value(50)
.OnValChange((val) => {
Debug.Log($"当前值:{val}");
});
布尔值切换开关组件。
Toggle("启用功能")
.OnValChange((isEnabled) => {
Debug.Log($"功能状态:{isEnabled}");
});
实验性滚动视图组件(基于ScrollRect)。
实验性下拉选择组件(基于Dropdown)。
实验性滚动条组件(基于Scrollbar)。
通过EnumUIAnchor枚举实现精确的UI元素定位:
✅ 开发效率:声明式API大幅简化UI代码编写,提升开发速度✅ 代码可读性:链式调用和流畅接口使UI逻辑更加清晰✅ 布局灵活性:强大的网格系统和锚点系统支持复杂界面设计✅ 性能优化:内置的布局计算优化减少运行时性能开销✅ 组件化设计:标准化的控件基类便于功能扩展和维护
⚠️ 实验性功能:视频播放、滚动视图等高级组件仍在完善中⚠️ 学习曲线:需要适应声明式编程思维模式⚠️ 特定依赖:依赖于特定的预制体格式和TextMeshPro组件
🔹 推荐使用:
🔸 谨慎使用: