新闻详情

新闻详情

首页 / 资讯中心 / 详情

【Unity UI 进阶】仿 Element UI 打造企业级 Unity UI 组件库(09)

发布时间:2026/9/26 19:23:09来源:尧图网络
【Unity UI 进阶】仿 Element UI 打造企业级 Unity UI 组件库(09)
【Unity UI 进阶】仿 Element UI 打造企业级 Unity UI 组件库09环境与工具说明项说明代码生成本系列组件库代码由CursorAI 编程助手辅助生成与迭代再结合工程内联调、重构落地Unity 版本2022.3.50f1c1Unity 2022.3 LTSUI 框架UGUIUnityEngine.UI示例工程EleUnityUI仿 Element UI 企业级组件库建议使用Unity 2022.3 LTS同系列版本打开工程。本文实现均在2022.3.50f1c1下验证。上篇08讲完EleTree本篇是纵向分区常见的EleAccordion手风琴以及它和EleTabs的选用边界。Accordion 手风琴accordionMode互斥展开、Panel_{code}内容区、与 Tabs 选用边界后台表单、设置页、详情侧栏经常要「一块标题点开才露出内容」。Element 的 Collapse / Accordion 心智是纵向叠放多项上下排列不占横向标签栏可折叠标题栏始终可见内容按需展开手风琴模式accordion为 true 时同时只展开一项互斥内容可挂载每项有独立面板业务往里面塞表单 / 表格 / 说明EleAccordion按同一模型实现配置驱动生成Item_{code}内容固定落在Panel_{code}accordionMode控制互斥。本篇覆盖accordionMode互斥展开开 / 关行为差异Panel_{code}内容区与GetPanel和 Tabs 的选用边界何时用手风琴、何时用标签页Prefab Generate 约定涉及文件能力主要文件运行时Runtime/Accordion/EleAccordion.cs配置模型Runtime/Accordion/EleAccordionModels.csConfig 资产Runtime/Accordion/EleAccordionConfigAsset.cs示例生成Editor/Accordion/EleAccordionSampleGenerator.cs对比组件Runtime/Tabs/EleTabs.cs见博文 05颜色走设计变量面板PanelBg标题栏HeaderBg/ 展开态Fill悬停RowHover分割线BorderLighter文字TextPrimary/TextSecondary。工程约定不改第三方插件新增 C# 写中文注释Generate 烘焙AccordionRoot壳运行时缺壳只打日志不「缺啥建啥」。一、整体结构1. Prefab 层级EleAccordionSample └── AccordionRoot ← 竖排容器Generate 烘焙 ├── Item_basic │ ├── Header ← 标题栏Button Title ▸/▾ │ ├── BodyHost ← 展开时显示 │ │ └── Panel_basic ← ★ 业务内容挂这里 │ └── Hairline ├── Item_advanced │ └── … / Panel_advanced └── Item_perm └── … / Panel_perm2. 数据流EleAccordionConfig.items → Rebuild → Item_{code} Panel_{code} → 点 Header → TogglePanel(code) → accordionMode 即将展开 CollapseOthers → SetPanelExpanded → BodyHost 显隐 箭头 OnPanelToggled业务最小接入acc.OnPanelToggled(code,expanded){Debug.Log(${code}{(expanded?展开:折叠)});};// 往内容区挂控件varpanelacc.GetPanel(basic);// panel 下自行 Create / Instantiate 表单 …二、配置模型1. 单项EleAccordionItemConfig字段含义title标题栏文案code唯一编码 →Item_{code}/Panel_{code}contentHintGenerate 时 Placeholder 提示可删expanded初始是否展开2. 整体EleAccordionConfig字段默认含义accordionModetrue手风琴同时只展开一项headerHeight40标题栏高度contentMinHeight96示例内容区最小高度themeElementLight主题items—折叠项列表示例预设CreateSample()titlecode初态基本信息basic展开高级设置advanced折叠权限配置perm折叠3. 资源路径资源路径ConfigResources/Accordion/EleAccordionSampleConfig.assetPrefabPrefabs/Accordion/EleAccordionSample.prefab三、accordionMode互斥展开1. 行为对照accordionMode点开一项时适用场景true手风琴自动收起其它已展开项设置分组、侧栏区块、节省纵向空间false其它项保持原样可多开对照阅读、需要同时看两块内容2. 实现要点publicvoidTogglePanel(stringcode,boolnotifytrue){boolnext!currentExpanded;if(config.accordionModenext)CollapseOthers(code);// 先关其它SetPanelExpanded(code,next,notify);}publicvoidExpandPanel(stringcode,boolnotifytrue){if(config.accordionMode)CollapseOthers(code);SetPanelExpanded(code,true,notify);}Rebuild()结束时若开启手风琴会EnforceSingleExpanded配置里若误标多项expandedtrue只保留第一项展开。3. 运行时切换模式acc.SetAccordionMode(true,enforceNow:true);// 开互斥并立刻收起多余项acc.SetAccordionMode(false,enforceNow:false);// 允许多开Inspector 快捷按钮手风琴开 / 关。四、Panel_{code}内容区1. 命名约定Item_{code} └── BodyHost ← 只负责显隐折叠时 SetActive false └── Panel_{code} ← 内容根GetPanel(code) 返回它不要把业务控件直接挂在BodyHost外、或改名Panel_*否则GetPanel/ 重建重绑会对不上。Generate 会在面板上放一个PlaceholderTMP布置真实 UI 时可删掉。2. 重建时保留子内容Rebuild/RebindItem若发现已有Panel_{code}只 Stretch 与重绑 Header不销毁子物体——和 Tabs 的Panel_{tabCode}策略一致。你可以在 Prefab 里先摆好表单再改 Config 标题重建后内容还在。3. APIvarpanelacc.GetPanel(advanced);acc.ExpandPanel(advanced);acc.CollapsePanel(basic);acc.CollapseAll();boolopenacc.IsExpanded(perm);五、和 Tabs 的选用边界两者都是「多块内容一次看一块或几块」但交互轴向不同。维度EleAccordionEleTabs布局纵向叠放标题内容横向标签栏 下方整页内容同时可见手风琴下通常 1 块可关互斥后多块始终只有 1 个Panel_*显示标题是否常显所有标题栏一直在视口里可扫只有当前 Tab 名内容区典型场景长表单分组、设置分类、FAQ、侧栏属性页面级分区、同级功能模块切换内容面板Item_*/BodyHost/Panel_{code}ContentHost/Panel_{tabCode}状态隐喻「折叠 / 展开」「当前页」怎么选经验法则内容是「同一页里的分组希望扫标题再深入」 → Accordion可再开 accordionMode 省高度 内容是「同级页面 / 模块互斥且整区切换」 → Tabs 还要和 Table 顶部筛选页签区分那是表内过滤不是独立 EleTabs → 见博文 05反例把三个完全无关的大页面塞进 Accordion用户要滚很远才能点到第三个标题 → 更适合 Tabs。反例把「基本信息 / 高级 / 权限」做成 Tabs用户无法一眼看到还有哪些分组 → 更适合 Accordion。六、Prefab 生成与菜单1. 菜单EleUnityUI → Samples → Accordion → Generate EleAccordion Sample EleUnityUI → Samples → Accordion → Spawn EleAccordion Preview In Scene EleUnityUI → Samples → Accordion → Reset EleAccordion Config To Preset GameObject → EleUnityUI → Accordion → SampleSpawn不会在缺 Prefab 时自动 Generate只提示先 Generate与 Tree 约定一致。2. Generate 烘焙什么根ImagePanelBg 圆角描边AccordionRoot竖排壳序列化到组件按 ConfigRebuild出Item_*/Header/BodyHost/Panel_*3. 运行时约定// ✅ 壳已烘焙Rebuild 重绑或补 Item保留已有 Panel 子内容acc.Rebuild();// ❌ 发现没有 AccordionRoot 就 CreateRect 整棵拼装缺壳Debug.LogError([EleAccordion] 缺少 AccordionRoot请重新 Generate Prefab)并 return。七、API 一览API / 事件说明SetConfig(config, rebuild)换配置并重建Rebuild()/EditorRebuild()重建项 UISetAccordionMode(enabled, enforceNow)切换互斥模式TogglePanel(code)翻转展开互斥时关其它ExpandPanel/CollapsePanel/CollapseAll显式展开/折叠SetPanelExpanded(code, expanded)设单态不自动互斥GetPanel(code)取Panel_{code}IsExpanded(code)是否展开OnPanelToggled(code, expanded)AccordionMode当前是否互斥八、落地检查清单Generate 后有EleAccordionSample.prefab层级含AccordionRoot与Panel_basic等Spawn 后「基本信息」默认展开另两项折叠accordionModetrue点开「高级设置」时「基本信息」自动收起Inspector「手风琴关」后可同时展开多项GetPanel(basic)非空在 Panel 下加子物体后 Rebuild子物体仍在缺 Prefab 时 Spawn 只提示不自动拼装九、小结EleAccordion 烘焙AccordionRoot Config 驱动折叠项accordionMode决定互斥还是多开ExpandPanel/TogglePanel入口统一处理内容只认Panel_{code}用GetPanel接入业务 UI重建不拆子树vs Tabs纵向可扫分组用 Accordion横向整页切换用 Tabs系列回顾与下篇篇内容05Tabs图标、下划线、Panel_{tabCode}07ContextMenu挂载、ShowAt、danger / divider08Tree缩进、展开线、选中、节点右键09Accordion手风琴、Panel_{code}、与 Tabs 边界本文10Dialog 对话框模态遮罩、表单字段、确认/取消与 Table 行编辑弹窗的复用关系。若你也在 UGUI 里纠结「设置页要用折叠还是标签」先问一句用户要不要同时看见所有分组标题要 → Accordion只要当前模块整页 → Tabs。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

GA-HIDMSPSO优化BP+NSGAII多目标模型结构图实战绘制指南 2026/9/26 20:26:44

GA-HIDMSPSO优化BP+NSGAII多目标模型结构图实战绘制指南

做智能优化算法方向的科研,最容易被低估的一步就是画图。模型跑完了,结果也好了,结果结构图画得稀碎,审稿人上来就是一句“The framework is unclear”,辛苦做的实验直接被拖后腿。这次要拆解的,是“GA-HID…

阅读更多 →
JavaScript性能优化实战:从DOM操作到内存管理的完整指南 2026/9/26 20:26:38

JavaScript性能优化实战:从DOM操作到内存管理的完整指南

做前端开发这些年,我越来越确信一个判断:很多项目不是死在功能做不出来,而是死在性能撑不住。尤其是JavaScript,这门语言太灵活了,同样的功能一百个人能写出一百种写法,性能差距可能相差好几个数量级。最近…

阅读更多 →
Flutter适配HarmonyOS 6.0:文件类型分类区域实现与避坑指南 2026/9/26 20:26:38

Flutter适配HarmonyOS 6.0:文件类型分类区域实现与避坑指南

前阵子我们把“文件大师”往 HarmonyOS 6.0 上做适配,原本以为 Flutter 项目换个 SDK 重新编译就能跑,结果单单一个首页的“文件类型分类区域”就让我折腾了将近一周。这个模块在 Android 和 iOS 上已经稳定跑了两年多,可真到了鸿蒙才发现&am…

阅读更多 →
ASP.NET WebForms GridView AJAX 实战:六步实现行内编辑与Excel导出 2026/9/26 20:26:25

ASP.NET WebForms GridView AJAX 实战:六步实现行内编辑与Excel导出

简介:这是一份面向ASP.NET Web开发初学者与中级工程师的实用GridView增强组件,专为解决VS默认GridView控件在增删改操作中体验差、缺乏Ajax交互等问题而设计。资源基于ASP.NET 4.0 SQL Server 2008环境构建,支持无刷新数据操作,代…

阅读更多 →
Minimax h3本地ComfyUI部署全流程指南:硬件、环境、工作流与避坑 2026/9/26 20:26:25

Minimax h3本地ComfyUI部署全流程指南:硬件、环境、工作流与避坑

Minimax h3的本地ComfyUI部署,我最近终于完整跑通了。先说结论:本地跑视频大模型确实不是无脑能玩的,但跑通之后那种“整条出片管线都握在自己手里”的感觉,比在线平台排队等结果舒服太多。这篇文章把我从零开始到能稳定出片的全过…

阅读更多 →
Goodbye Greenscreen:AE/PR智能抠像插件GPU加速原理与实战 2026/9/26 20:26:18

Goodbye Greenscreen:AE/PR智能抠像插件GPU加速原理与实战

1. 项目概述:这不是一个“安装包点击下一步”的普通插件Goodbye Greenscreen 这个名字在 After Effects 和 Premiere Pro 用户圈里,近半年几乎成了抠像效率革命的代名词。它不是传统意义上靠手动调色轮、边缘羽化、溢出抑制三板斧硬啃绿幕的工具&#xf…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉