使用教程

层级管理工具

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;
}
面向开发者的界面开发解决方案
feedback