未来实验-步骤套路蓝图开发说明
<h1><strong>Git仓库</strong></h1>
<h3><strong>步骤套路插件</strong></h3>
<p>git@gitlab.ndaeweb.com:app-code/vlab-unreal-structsteps-plugin.git</p>
<p>备注:由于目前播放器的资源加载流程未开发完成,步骤套路蓝图直接作为资源添加在工程里,对应的文件路径在\Content\Blueprints\Steps。</p>
<p>分支:当前最新的特性分支为feature/Labplayer_v2,稳定版本会定期合并到develop</p>
<h3><strong>播放器工程</strong></h3>
<p>git@gitlab.ndaeweb.com:app-cpp/vlab-ue532-labplayer.git</p>
<p>分支:当前最新的特性分支为feature/Labplayer_v1(实际开发时需重新确认可用分支)</p>
<h1><strong>开发流程</strong></h1>
<h3><strong>创建蓝图类</strong></h3>
<p>新建蓝图类,从AStepRoutineBase继承。(也可以直接复制现有的步骤套路蓝图进行修改,更方便一点)</p>
<h3><strong>配置输入参数</strong></h3>
<p>新建蓝图类的成员变量,变量类型支持string、float、int32、int64、bool、Vector。变量名需与步骤套路元数据的json配置的名称一致。
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=b68566f08bc3860c8483b888a29b2665&amp;file=file.png" alt="" /></p>
<h3><strong>重载实现步骤套路执行生命周期函数</strong></h3>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=7e128ebdea665c1b5d89487049ffe918&amp;file=file.png" alt="" /></p>
<h4><strong>Start函数</strong></h4>
<p>步骤套路执行的入口是Start函数,因此可在Start中执行一些初始化操作
由于EventStart是override基类的Start函数,因此最后需要调用执行Parent:Start节点
参数的初始化也可以放在下文提到的BindParameter函数中执行
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=74907aa914a8e1d8774ef147791b7434&amp;file=file.png" alt="" /></p>
<h4><strong>Stop函数</strong></h4>
<p>停止步骤套路的入口函数,一般在此处停止正在自动运行的操作、销毁引导提示等。由于目前播放器还没实现相关功能,所以目前还没实现该函数。
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=bbba204083b99d9fef7c5de41b377ac7&amp;file=file.png" alt="" /></p>
<h4><strong>StartAutoPlayMode函数</strong></h4>
<p>自动播放模式的执行入口,如果实验颗粒中配置当前步骤套路的执行模式是AutoPlay,则会执行该函数。
自动播放模式下,一般是在此处依次调用所有要执行的自动操作,然后结束当前步骤。如下图所示,步骤套路-拼接的自动模式,直接调用拼接接口即可完成当前步骤套路。
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a4f3982c64147a548013bb47cfea0e59&amp;file=file.png" alt="" /></p>
<h4><strong>StartStepByStepMode函数</strong></h4>
<p>自动播放模式的执行入口,如果实验颗粒中配置当前步骤套路的执行模式是StepByStep,则会执行该函数。
引导模式下,一般是在此处执行引导模式的一些前置的初始化操作,如器材的交互禁用等。
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=e0cd1854ca2e2f1d0d80944c5a369740&amp;file=file.png" alt="" /></p>
<h4><strong>StartSemiOpenMode函数</strong></h4>
<p>半开放模式的执行入口,如果实验颗粒中配置当前步骤套路的执行模式是SemiOpen,则会执行该函数。
与引导模式类似,一般是在此处执行引导模式的一些前置的初始化操作。</p>
<h4><strong>TickImplementationAutoPlayMode函数</strong></h4>
<p>自动模式的Tick执行入口。已有的需求里,自动模式暂时没有用到这个函数,不实现即可。</p>
<h4><strong>TickImplementationStepByStepMode函数</strong></h4>
<p>引导的Tick执行入口。一般在此处判断引导模式的完成条件是否已满足,如果已满足,则结束当前步骤套路。
为了提高性能,可根据业务需要手动设置Tick的时间间隔。</p>
<h4><strong>TickImplementationSemiOpenMode函数</strong></h4>
<p>半开放的Tick执行入口。与引导模式类似,在此处判断完成条件是否已满足。部分套路的需求里,引导和半开放的Tick函数实现可能相同。
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=623a25a59519c45ded6c203a200637d7&amp;file=file.png" alt="" /></p>
<h4><strong>VerifyParameter函数</strong></h4>
<p>用于校验参数是否合法,如果返回false,则当前步骤套路不会执行,会调用Fail,同时输出错误日志。
该函数主要是为了方便排查bug,对业务功能没有实际意义,可根据需要实现。如果不实现该函数,则默认返回true。</p>
<h4><strong>BindParameter函数</strong></h4>
<p>VerifyParameter执行后,会执行BindParameter函数,可用于做一些参数初始化操作
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=23cdd1af0b9a46bb02f7c82aa2c40321&amp;file=file.png" alt="" /></p>
<h4><strong>Finish/Success/Fail函数</strong></h4>
<p>调用后当前步骤套路即结束运行。步骤套路执行失败时调用Fail,执行完成调用Finish。考虑到半开放模式的特殊需求,用户操作符合正确要求可使用Success,不正确但是不阻塞后续流程使用Finish。
由于目前这块需求不明确,且播放器也没有实现对应的交互功能,目前调用这3个函数在功能上是相同的表现。</p>
<h4><strong>SetStepOutputParameterValue函数</strong></h4>
<p>用于将参数值保存到步骤套路播放器的上下文中,用于跨步骤套路使用参数值,与Unity版本中的步骤套路输出参数需求一致。目前已有的步骤套路需求中还没用到。</p>
<h3><strong>步骤套路的嵌套调用</strong></h3>
<p>目前的设计以及没有mini步骤的概念,但是允许在步骤套路中调用颗粒度更小的步骤套,如移动、拼接、旋转等基础能力步骤套路。
基础能力步骤套路已封装成蓝图异步任务节点,可直接搜索:
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=26a85894cd5807f5a5f1deaf61acdde6&amp;file=file.png" alt="" /></p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a91e6bd37cedf4c496d18525bb472a54&amp;file=file.png" alt="" /></p>
<p>鼠标移动到节点上时会有相关参数的说明
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=6242c92ba7e79b1dcf938278d3c3ceb4&amp;file=file.png" alt="" /></p>
<p>备注:
<em> 使用OnCompleted输出节点,是在步骤套路执行完成时才被异步调用
</em> 在目前的已有需求里,一般是自动播放模式才嵌套使用步骤套路,其他模式理论上也支持,只是实际意义不是很大。
* 现已提供了 播放表演语料和切换相机的步骤套路蓝图节点,可以在步骤套路内部使用对应的功能。但是由于其对应的能力是属于表演,目前功能未完整实现,播放表演语料只支持字幕显示,TTS语音未实现;切换镜头只定义了接口,功能未实现。
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=dd8cc3b3901332cc290520b467377d4b&amp;file=file.png" alt="" /></p>
<h1><strong>交互能力接口</strong></h1>
<p>交互组件提供的能力由c++实现,提供相关接口直接触发交互能力。其对应的接口分类实现在如下代码中,可以直接查看函数的定义和注释说明。</p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=0f618bd6a08e905c539588ac8b637825&amp;file=file.png" alt="" /></p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=dbb7342d1f2a5c8c2b2c2d366d5c3e43&amp;file=file.png" alt="" /></p>
<p>使用示例:</p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=8069129e6a1168a60f21dc025c81556a&amp;file=file.png" alt="" /></p>
<h1><strong>判定查询能力接口</strong></h1>
<p>主要用于引导和半开放模式,用于判定是否满足完成条件,其对应能力由c++实现,实现在UStepEquipmentQueryHelper中,后续会根据业务需求陆续补充</p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ac014224efb9da9846d5804d724930fb&amp;file=file.png" alt="" /></p>
<p>使用示例:</p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=dd12f4631a37727459c4735c28a8e985&amp;file=file.png" alt="" /></p>
<h1><strong>步骤套路元数据</strong></h1>
<p><em> 步骤套路元数据示例如下,与Unity版本大致相同,只是删除了一些不再需要的字段
</em> 步骤套路的Code为蓝图的文件名去掉"BP_"前缀,如蓝图文件名为BP_StepPour,则Code为StepPour.
* 参数的Code需与蓝图类中的成员变量名保持一致</p>
<pre><code class="language-json"> {
&quot;code&quot;: &quot;StepPour&quot;,
&quot;version&quot;: &quot;1.0.0&quot;,
&quot;name&quot;: &quot;【药品添加】-倾倒&quot;,
&quot;parameters&quot;: [
{
&quot;code&quot;: &quot;Equipment&quot;,
&quot;name&quot;: &quot;倾倒容器&quot;,
&quot;type&quot;: &quot;equipment&quot;
},
{
&quot;code&quot;: &quot;TargetEquipment&quot;,
&quot;name&quot;: &quot;被倾倒的目标容器&quot;,
&quot;type&quot;: &quot;equipment&quot;
},
{
&quot;code&quot;: &quot;Volume&quot;,
&quot;name&quot;: &quot;液体添加量&quot;,
&quot;type&quot;: &quot;float&quot;,
&quot;default_value&quot;: &quot;5&quot;
}
]
}</code></pre>
<h1>附:</h1>
<p>【腾讯文档】未来实验-步骤套路-已开发的步骤套路清单
<a href="https://docs.qq.com/sheet/DSnVlYmZxWHlkTVNa?tab=BB08J2">https://docs.qq.com/sheet/DSnVlYmZxWHlkTVNa?tab=BB08J2</a></p>