基础交互适配方案

一 前言

目前器材开发中使用的交互组件相关函数没有一个统一的接口,导致大家开发中调用的接口五花八门,没法做统一的管理。故统一封装了交互接口Lua组件类,正式器材统一使用Lua交互组件类进行接口调用。

二 Lua交互组件类

交互组件对应关系如下:

组件名 AC名 Lua交互组件名
旋转组件 AgentComponent_NewInteractiveRotateEx RotateExComp
滑动组件 AgentComponent_NewInteractiveSliderEx SliderExComp
无极旋转 AgentComponent_VLabUIRotationValueDisplay UIRotationComp
档位旋转 AgentComponent_VLabUIGearSelectCtrl UIGearSelectComp
无极拖动 AgentComponent_VLabUISliderValueDisplay UISliderComp
档位拖动 AgentComponent_VLabUIGearSliderCtrl UIGearSliderComp
弧形拖动 AgentComponent_VLabUIArcDragCtrl UIArcDragComp

Lua组件框架见:https://www.showdoc.com.cn/VLab/3995574131910713
正式器材开发中,应该使用Lua交互组件类进行接口调用,方便后期的统一维护及管理。

  • 正确示例:
    添加lua组件类,通过组件类调用接口
  • 错误示例:
    直接通过组件对象进行接口调用

三 交互基类

交互基类(InteractionBaseLogic.lua)对上述交互组件进行了统一的Lua组件添加,并封装了初始化及回调函数,所有器材默认会继承该交互基类,器材初始化上述交互,需使用交互基类进行初始化,便于后续初始化及回调函数的维护管理。
详细接口见:InteractionBaseLogic.lua

四 安卓交互适配

由于安卓下交互增加了UI,旋转相关交互需要设置轨道信息,才能正常使用,以下是各组件最低基类依赖版本

组件名 AC名 最低基类依赖版本
旋转组件(RotateExComp) AgentComponent_NewInteractiveRotateEx VLabCommonLua 3.3.60
滑动组件(SliderExComp) AgentComponent_NewInteractiveSliderEx VLabCommonLua 3.3.80
无极旋转(UIRotationComp) AgentComponent_VLabUIRotationValueDisplay VLabCommonLua 3.3.60
档位旋转(UIGearSelectComp) AgentComponent_VLabUIGearSelectCtrl VLabCommonLua 3.3.60
无极拖动(UISliderComp) AgentComponent_VLabUISliderValueDisplay VLabCommonLua 3.3.60
档位拖动(UIGearSliderComp) AgentComponent_VLabUIGearSliderCtrl VLabCommonLua 3.3.60
弧形拖动(UIArcDragComp) AgentComponent_VLabUIArcDragCtrl VLabCommonLua 3.3.60

4.1 设置轨道信息(SetTrackInfo)

以下交互组件在安卓下需设置轨道信息(备注:目前轨道信息只能设置一次,不支持多次设置),接口参数说明见各交互Lua组件类:

组件名 AC名 Lua交互组件名
旋转组件 AgentComponent_NewInteractiveRotateEx RotateExComp
无极旋转 AgentComponent_VLabUIRotationValueDisplay UIRotationComp
档位旋转 AgentComponent_VLabUIGearSelectCtrl UIGearSelectComp

接口如下:

轨道半径及厚度可在scene场景下(黄色辅助线)查看,一般设置成按钮大小即可。

4.2 滑动组件交互适配 SliderExComp(VLabCommonLua 3.3.80)

  1. 设置UI信息
    (备注:由于需要兼容旧接口,UI信息需要在滑动初始化前先设置,初始化后设置无法正常生效)
    目前比较需要注意的是标签百分比,部分模型默认轴向与滑动面相反,可以通过IsLabelReverseProgress控制表现百分比数值进行反向
  2. 设置滑动偏移值
    PAD交互采用的是新的交互,部分器材通过Transform动态设置滑动位置的,需要通过以下接口进行设置,更新位移,否则PAD下拖动的时候,位置会出现跳动

4.3 调试接口(DebugMode)

以下交互组件提供调试接口,便于在PC下的工程进行PAD交互调试。
注意:调试接口需要在初始化前调用。采用基类接口进行初始化,可在基类初始化接口内,进行调试接口调用。

组件名 AC名 Lua交互组件名
旋转组件 AgentComponent_NewInteractiveRotateEx RotateExComp
滑动组件 AgentComponent_NewInteractiveSliderEx SliderExComp
无极旋转 AgentComponent_VLabUIRotationValueDisplay UIRotationComp
档位旋转 AgentComponent_VLabUIGearSelectCtrl UIGearSelectComp
无极拖动 AgentComponent_VLabUISliderValueDisplay UISliderComp
档位拖动 AgentComponent_VLabUIGearSliderCtrl UIGearSliderComp
弧形拖动 AgentComponent_VLabUIArcDragCtrl UIArcDragComp

接口如下:

示例:

五 交互组件 AgentComponent_VLabSlideRotateCtrl

新拖动旋转组件(AgentComponent_VLabSlideRotateCtrl)是组件最新开发的交互组件,该交互组件优化了旧交互组件操作,并增加了一些新旋转拖动方式以及PAD下的交互适配,解决了旧交互组件某些角度下转动异常的问题,后续新开发的器材,建议使用新交互组件。
组件说明文档:https://www.showdoc.com.cn/VLab/6399886889442656

组件名 AC名 Lua交互组件名
拖动旋转组件 AgentComponent_VLabSlideRotateCtrl SlideRotateCtrlComponent