使用教程
层级管理工具
ThunderFire UX Tool中的层级管理工具旨在可视化管理项目中Prefab的层级关系。现有的层级管理存在以下问题:
-
界面数量过多时,界面层级关系极其复杂;
-
前后管理人员交流困难。
该工具希望能够通过视觉上的直接表达解决上述问题,从而降低管理成本。基于这个期望,工具主要包含以下几个功能。
使用方法
通过菜单打开 在菜单中选取【ThunderFireUXTool->层级管理工具 (Hierarchy Manage)】。
层级面板结构
如下图所示,层级管理工具共分为三层结构,分别为“HUD、界面、弹窗”所代表的一级通道,数字所代表的二级层级,和灰色方块所代表的三级Prefab。其中通道的数量和每个通道所包含的层级数量将由程序代码控制(可参考下方程序接口)。
一级通道 将所有层级划分为大类,每类中层级的数量级由项目设定,默认为3个,名称为“HUD”、“界面”、“弹窗”,如有调整需求可以联系程序开发同事在代码里修改。
二级层级 表示运行时的层级渲染关系,数字越大则越靠近顶部(项目可以重新定义),默认一个通道有10层。
三级Prefab 对应项目中的Prefab,按照其所在的层级进行渲染,同层级中的Prefab,加载时间越晚,越靠近顶部。
Prefab标签信息 Prefab中的标签旨在将相关联的Prefab加以记录,方便日后管理。标签在添加后会产生固定数据,指当前Prefab在所有含有这个标签的Prefab中排在什么位置。在窗口中,不同标签可以有不同颜色,标签颜色在HierarchyManagementSetting.asset文件中进行配置,如果是第一次添加,将默认为黑色。
注意:该数据不随Prefab层级改变而改变,这是为了提醒用户标签的顺序是预设好的,不能随意更改,从而去对应更改该Prefab前置或后置的Prefab。
界面功能
Prefab添加
点击窗口右上角“添加Prefab”,弹出添加窗口,可通过路径选取Prefab,并为其选择已存在的层级,点击确定进行保存。
Prefab信息修改与删除
- 修改:对Prefab【右键】选择修改信息,会弹出和新增类似的修改窗口。
- 删除:对Prefab【右键】选择删除,从管理窗口中删除该Prefab。
标签添加与删除
- 添加:在修改或新增窗口中,存在标签编辑区域,可以在文本框中输入后点击“+”,进行添加,会显示在上方框线区域中,并在两者中间会显示最近增加的两个标签,点击之后可以直接添加到标签列表中。
- 删除:在框线区域中点击“×”,可以进行删除。
注意:以上操作,需点击确定后才能进行保存。
层级添加与删除
选中一个层级可以【点击右键】,选择“向前添加层级”或者“向后添加层级”,添加的层级不能超过该通道最大包含的层级数量,否则会有提示。点击删除,则可以删除没有Prefab的层级,当该通道只包含一个层级的时候,不可以删除。
通道名称修改
【右键点击】通道名字,选择“修改Channel名称 ”,然后在弹出的窗口中进行修改。
Prefab拖拽移动
选中Prefab后可以对其进行【拖拽】,当拖拽到其他层级时,该层级会高亮提示,松开鼠标即可完成层级更改。
Prefab关系指示
当你选中一个方块,方块会有蓝色边框,并且与其相关联的Prefab会高亮,并按照标签数值关系进行顺序连线。(相关联的定义为:与选中的Prefab有相同标签,或者和“与选中的Prefab有相同标签”的Prefab也有相同Prefab,可以理解为一个网格扩散)
快速检索(模糊搜索)
在搜索框中输入搜索内容(2019版本下只支持搜索英文),若存在搜索结果,会选中距离当前选中Prefab最近的一个(向前)的Prefab,并将搜索到的Prefab高亮显示。搜索框尾部会显示“当前数/总数量”或者“无结果”。通过【点击“<”或“>”】来向前、向后选取Prefab,并且会自动切换视角到移动的Prefab附近。
保存信息
点击右上角的保存后,会将标签信息、Prefab信息、Channel名称、层级数等可由界面修改的信息进行储存。
当页面修改后,如若关闭前未进行保存,则会弹出提示框。
注意:如果直接点击弹窗右上角的“×”,则不会进行保存,且关闭管理工具。
Prefab预览
当鼠标移动到Prefab块的时候,会悬窗显示该Prefab的名称、标签以及缩略图。
程序接口
变量
// 传参为string,返回值为int的委托(用来描述通过guid获取index值的方法)
// 所属类:HierarchyManagementOutSetting
public delegate int GetIndex(string guid);
函数
// 描述:序列化层级管理工具初始值
// 所属类:HierarchyManagementOutSetting
// 参数:
// guids 需要序列化的guid列表
// getIndex 通过guid获取index值的委托
// 返回值:无
public void CreateGuidList(List<string> guids, GetIndex getIndex)
// 描述:设置通道数、每个通道的层级数
// 所属类:HierarchyManagementSetting
// 参数:
// levelRange 每个通道上的层级数
// maxChannelNum 最大通道数
// 返回值:无
public void SetInitChannelAndLevel(int levelRange,int maxChannelNum)
// 描述:设置保存数据后的回调
// 所属类:HierarchyManagementSetting
// 参数:
// action:一个参数为List<GuidWithIndex>的方法,列表参数表示的是保存的数据
// 返回值:无
public void SetAfterSubmit(Action<List<GuidWithIndex>> action)
其他
// 描述:对于一个Prefab的储存方式
// 所属类:HierarchyManagementSetting
public class GuidWithIndex
{
// Prefab名称
public string Name;
// Prefab在层级中的序号
public int Index;
// Prefab的Guid
public string Guid;
// Prefab所包含的标签
public List<TagDetail> Tags = new List<TagDetail>();
}
// 描述:标签的属性
// 所属类:HierarchyManagementSetting
public class TagDetail
{
// 标签名
public string Name;
// 标签序号
public int Num;
}