使用教程

新手引导

ThunderFire UX Tool提供了完整的新手引导功能, 包括引导编辑工具和运行时功能,来帮助交互设计师在Unity编辑器中快速制作和调整新手引导界面的样式,并让工程师在项目中快速接入引导。

术语

GuideWidget 一个引导控件,只表现一种引导效果,例如镂空高亮、手势、引导文本等。

GuideWidgetData 记录GuideWidget中各种数据。用于保存在编辑工具中编辑的引导界面的数据。

UIBeginnerGuide 一个引导的界面模板,界面上包含多种不同的GuideWidget。

UIBeginnerGuideData 记录UIBeginnerGuide中的各种数据。包括引导ID、引导类型、引导时长、引导模板,以及UIBeginnerGuide中包含的GuideWidgetData(详情参考下方参数详情)。

UIBeginnerGuideDataList 包含一组UIBeginnerGuideData的引导列表,列表中的某个引导完成后,会自动开启列表中的下一个引导,直到整个引导列表完成。


使用方法

1.创建引导序列

在场景或Prefab中选中一个节点(一般选择常驻节点),点击顶部【ThunderFireUXTool-创建-创建新手引导 (Create BeginnerGuide)】,会为该节点新增一个UIBeginnerGuideDataList组件,即一个引导序列(也可在Inspector面板中手动添加该组件)。



2.在序列中创建新引导

默认序列为空列表,点击“+”号可以创建新引导。为该引导配置一个引导模板,可使用预设模板或自定义模板,此处使用自定义模板。(创建方式可参考下方创建自定义引导模板



3.编辑引导

点击【编辑】按钮,Hierarchy窗口中会创建引导编辑面板,面板中可编辑对象以绿色名称显示。同时,Scene窗口中左上方会显示引导工具栏,依次显示引导ID,预览、保存、关闭按钮。

引导编辑面板是临时对象,是“引导模板”中对象的实例化,只为了提供可视化引导编辑功能。切换场景、开始运行或者点击关闭按钮之后会被删除。


编辑镂空高亮物体。点击Hierarchy窗口中“镂空组件”对象,在GuideHighLightData组件中如图配置:


上述操作即为,选择"圆形镂空",镂空对象为"UXImage“(即图中UX Tool图片)。编辑完成之后点击引导工具栏中的【保存】按钮进行保存。

编辑手势组件。打开引导编辑界面,选择“手势组件”对象,在GuideGestureData组件中如图配置:


即为,同样在UXImage(即图中UX Tool图片)上,添加一个手势点击的引导动画效果。编辑完成之后点击引导工具栏中的【保存】按钮。


4.预览引导

点击Toolbar中的Preivew按钮,即可看到刚刚编辑的镂空高亮和手势动画效果。


注意:因为刚刚镂空和手势配置中都配置为跟随UX Tool图片,所以当UX Tool图片位置变化时,引导效果也会自动定位。



5.运行引导

运行时正常显示引导内容的前提是场景中存在UIBeginnerGuideManager组件。在场景中Canvas节点上,添加UIBeginnerGuideManager组件,所有的引导界面加载时都会加载到这个Canvas下。UIBeginnerGuideManager为单例对象,全局只需要有一个即可。


除此以外,还要有一个程序脚本控制新手引导的播放时机(具体接口可见下方程序接口)。在Sample中的脚本示例ShowGuideMono中执行了两个操作:将UIBeginnerGuideList加入到Manager中,然后播放Manager中的引导。

在UIbeginnerDataList组件所创建的引导,会根据引导类型的不同来决定引导结束的条件,并自动开启组里的下一个引导,直到该引导组中没有引导为止。



参数详情

引导参数


  • 引导ID:用以区分不同引导的名字,默认生成,可根据引导内容自行修改。

  • 引导类型:引导结束的类型,分为强、中、弱引导。

    • 强引导:必须和镂空组件一起使用,只有点击镂空区域才能结束引导。
    • 中引导:点击屏幕任意位置结束引导。
    • 弱引导:一段时间后自动结束引导。
  • 引导时长:当引导类型为弱引导时,设置引导持续的时间。其他情况不生效。

  • 使用自定义模板:是否使用自定义引导模板。勾选后显示 “引导模板” 属性,不勾选会出现“选择引导模板”下拉选框。

  • 引导模板:指定自定义的引导模板。

  • 选择引导模板:选择工具提供的引导模板预设。


预设引导控件

镂空控件


用于在场景或界面上增加一层有色遮罩,并将所引导内容镂空显示。

  • 打开控件:控件开关,默认勾选。

  • 镂空形状:可选择方形或圆形作为镂空区域的形状。

  • 使用自定义镂空对象:镂空对象可使用默认或自定义。

  • 镂空区域:由上述是否勾选使用自定义镂空对象决定。

    • 若不勾选,则使用控件自带的镂空区域节点,点击镂空对象的【编辑】按钮,可直接在场景中编辑镂空区域的大小和位置。
    • 若勾选,则可拖拽场景中的其他UI对象,如按钮、图片等作为镂空对象,此时镂空区域会自动识别该对象的大小和位置,运行时可见。

手势控件


提供常用的带动画的手势引导预设及自定义选项。

  • 打开控件:控件开关,默认勾选。

  • 使用自定义手势:手势可使用默认或自定义。

  • 手势类型:由上述是否勾选使用自定义手势决定。

    • 若不勾选,则使用默认提供的手势预设,在下拉列表中选择所需的手势类型即可直接使用。
    • 若勾选,则可拖拽使用项目自己制作的手势对象。
  • 拖拽曲线:当手势类型为拖拽时显示该参数。此时,场景中会出现拖拽起点标识和终点标识,用以设置拖拽手势的起始点。同时调整拖拽曲线可对拖拽动画进行调节。

  • 对象类型:可选手势引导的对象为自定或指定,自定则通过在场景中拖动手势至引导位置即可,指定则可选取场景中其他对象作为被引导对象。

  • 指定对象:当对象类型为指定时显示该参数。可拖拽场景中的其他UI对象作为手势的引导对象,此时手势会始终跟随该对象的位置。

文字控件


提供基础的文本对象,用以作为引导提示。

  • 打开控件:控件开关,默认勾选。

  • 文字控件样式:可选文字控件是否带标题,有单一文字和带标题文字两个选项。

强调控件


使用强调框对引导内容进行框选强调。

  • 打开控件:控件开关,默认勾选。

  • 强调类型:可选择方形或圆形作为强调框的形状。

  • 对象类型:可选被强调对象为自定或指定,自定则通过在场景中拖动强调框至所需位置即可,指定则可选取场景中其他对象作为强调对象。

  • 指定对象:当对象类型为指定时显示该参数。可拖拽场景中的其他UI对象作为强调对象,此时强调框会始终跟随该对象的位置。

  • 播放动画:是否播放强调框的渐隐渐显动画。

手柄控件


提供手柄按键引导。

  • 打开控件:控件开关,默认勾选。

  • 引导列表:手柄按键动画引导的序列,点击“+”号可增加一个引导,选中已有引导点击“-”号可删除。

    • 时长:即该引导的显示时长,按键每闪烁一次为0.5秒。
    • 按键:即该引导对应的按键,可同时设置多个闪烁按键,不设置按键时则默认不闪烁。

预设引导模板

在编辑引导时,可选择工具提供的预设引导模板,包括手势模板和手柄模板,模板由上述引导控件构成。

手势模板

手势模板中含有镂空控件、手势控件、强调控件和文字控件,使用模板时可根据需要开启或关闭各种控件,并调整其中参数,保存后生效。

手柄模板

手势模板中含有镂空控件、手柄控件、强调控件和文字控件,使用模板时可根据需要开启或关闭各种控件,并调整其中参数,保存后生效。


创建自定义引导模板

步骤1 新建一个UI Prefab,命名为GuideTemplate_XXX, XXX可以是任何名字(这里命名为GuideTemplate_Test),给这个Prefab的根节点添加UIBeginnerGuide组件。



步骤2 在预设控件的文件夹中,根据需求将引导控件添加为Prefab的子节点,并在UIBeginnerGuide组件中绑定对应的widget。 这里添加常见的镂空高亮和手势两种引导。

预设控件默认文件夹路径: Assets/UXTools/Res/UX-GUI-Feature/BeginnerGuide/Res/Prefab/BeginnerGuideWidget



步骤3 保存Prefab,这样一个引导模板就创建好了,其余使用方式和定义模板是一样的。


程序接口

变量

// UIBeginnerGuideManager的实例
// 所属类:UIBeginnerGuideManager
public static UIBeginnerGuideManager Instance;

函数

// 使用下方函数,需要获取UIBeginnerGuideManager.Instance后使用

// 描述:向引导列表队列中添加一个引导
// 所属类:UIBeginnerGuideManager
// 参数:
//     datalist 要添加的引导对象
// 返回值:无
public void AddGuide(UIBeginnerGuideDataList datalist)

// 描述:设置下一个引导列表从名字为id的引导项开始引导
// 所属类:UIBeginnerGuideManager
// 参数:
//     id 下次播放引导时播放的id
// 返回值:无
public void SetGuideID(string id)

// 描述:播放第一个引导列表
// 所属类:UIBeginnerGuideManager
// 参数:无
// 返回值: 无
public void ShowGuideList()

// 描述:播放指定的引导列表
// 所属类:UIBeginnerGuideManager
// 参数:
//     datalist 要播放的引导列表对象
// 返回值: 无
public void ShowGuideList(UIBeginnerGuideDataList datalist)

// 描述:播放指定的引导列表中的指定ID
// 所属类:UIBeginnerGuideManager
// 参数:
//     datalist 要播放的引导列表对象
//     id 下次播放引导时播放的id
// 返回值: 无
public void ShowGuideList(UIBeginnerGuideDataList datalist, string ID)

// 描述:结束当前引导
// 所属类:UIBeginnerGuideManager
// 参数:无
// 返回值: 无
public void FinishGuide()

// 描述:结束某个ID的引导(若当前引导不是该ID,则该函数无效)
// 所属类:UIBeginnerGuideManager
// 参数:
//     guideID 要结束的引导ID
// 返回值: 无
public void FinishGuide(string guideID)

// 描述:清除所有在列表中的引导序列
// 所属类:UIBeginnerGuideManager
// 参数:无
// 返回值: 无
public void ClearGuide()

// 描述:清楚列表中指定的引导序列
// 所属类:UIBeginnerGuideManager
// 参数:
//     dataList 要删除的引导序列
// 返回值: 无
public void ClearGuide(UIBeginnerGuideDataList dataList)
面向开发者的界面开发解决方案
feedback