交互和表现-概要设计
<p>[toc]</p>
<table>
<thead>
<tr>
<th>作者</th>
<th>Zyy/QFord</th>
</tr>
</thead>
<tbody>
<tr>
<td>更新日期</td>
<td>2024-6-15</td>
</tr>
<tr>
<td>版本</td>
<td>V1.0.0</td>
</tr>
</tbody>
</table>
<h1>1 软件设计说明</h1>
<h2>1.1 整体功能</h2>
<h3>一 概述</h3>
<p>基于虚拟实验室现有的交互和表现架构和功能,提供一套新的交互和表现,该交互和表现不仅面向unreal平台。还面向用户编辑器,可以通过用品编辑器配置交互和表现功能,从而减少用品人员的开发工作量。</p>
<p>此概要设计文档针对上述功能,从主要业务流程,组件,接口方面进行程序设计,作为详细设计的前置依据,以及指导程序开发事务。</p>
<h3>二 功能拆解</h3>
<table>
<thead>
<tr>
<th>功能点编号</th>
<th>功能点名称</th>
<th>依赖功能点编号称</th>
<th>功能点内容描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>F001</td>
<td>自由移动</td>
<td></td>
<td>没有约束的移动,可以在场景中自由变换位置</td>
</tr>
<tr>
<td>F002</td>
<td>移动约束</td>
<td></td>
<td>对自由移动施加约束,限制移动平面或者移动区间</td>
</tr>
<tr>
<td>F003</td>
<td>自由旋转</td>
<td></td>
<td>没有约束的旋转,可以朝任意方向旋转</td>
</tr>
<tr>
<td>F004</td>
<td>旋转约束</td>
<td></td>
<td>对自由旋转施加约束,限制移旋转轴或者旋转区间</td>
</tr>
<tr>
<td>F005</td>
<td>投掷</td>
<td></td>
<td></td>
</tr>
<tr>
<td>F006</td>
<td>触碰</td>
<td></td>
<td></td>
</tr>
<tr>
<td>F007</td>
<td>点击</td>
<td></td>
<td></td>
</tr>
<tr>
<td>F008</td>
<td>拼接</td>
<td></td>
<td></td>
</tr>
<tr>
<td>F008</td>
<td>倾倒</td>
<td></td>
<td></td>
</tr>
<tr>
<td>F008</td>
<td>震荡</td>
<td></td>
<td></td>
</tr>
<tr>
<td>F008</td>
<td>闻</td>
<td></td>
<td>通过挥动手,触发闻交互,弹出气味文字</td>
</tr>
<tr>
<td>F008</td>
<td>抓取矫正</td>
<td></td>
<td>抓取对象时,重设目标对象的位置和角度</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>功能点编号</th>
<th>功能点名称</th>
<th>依赖功能点编号称</th>
<th>功能点内容描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>F001</td>
<td>火焰表现</td>
<td></td>
<td></td>
</tr>
<tr>
<td>F002</td>
<td>液体表现</td>
<td></td>
<td></td>
</tr>
<tr>
<td>F002</td>
<td>绳索表现</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h2>1.2 核心类图</h2>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=37ff3608b3cf55c0bff4f64712a2a8be&amp;file=file.png" alt="" /></p>
<p>[在线编辑链接](<a href="https://www.processon.com/diagraming/6515297a094a1d332a3a4ba6">https://www.processon.com/diagraming/6515297a094a1d332a3a4ba6</a> "在线编辑链接")</p>
<h2>1.3 组件图</h2>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ceacdf871d773e5c7adcca71acc08e69&amp;file=file.png" alt="" /></p>
<h2>1.4 时序图</h2>
<h3>倾倒示例时序图</h3>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=31bcf51f52475f8583e19e93f043a8a2&amp;file=file.png" alt="" /></p>
<h3>电场线绘制时序图</h3>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=d01783c934ef6e2a83add77055eff801&amp;file=file.png" alt="" /></p>
<h2>1.5 非功能需求</h2>
<p>性能指标:
PC帧率达到>=30FPS
Android帧率达到>=30FPS</p>
<h2>1.6 其他备注</h2>
<p>unity和unreal是属于两个差异比较大的开发平台,例如unity支持xlua,而unreal只支持ulua,unity中使用c#作为开发语言,unreal使用的封装后的UC++,unity中能使用的插件,在unreal中也需要另寻替代方案。
因此要将unity版本的虚拟实验室移植到unreal平台方面,不完全丢弃的话需要添加必要的中间胶水层。比如原先的化学引擎组件,可以通过尝试增加一个c++调用c#的胶水层,减轻重新开发引擎的成本。</p>
<h1>2 接口设计说明</h1>
<h2>2.1 接口整体设计</h2>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=e15a04e6db99e2e1b8bb0da19f3b67e2&amp;file=file.png" alt="" /></p>
<pre><code>ComponentBase.h(通用基础接口) :定义了基本功能,包括初始化,功能开启/关闭,挂载的器材根节点
AbilityCommonBase.h(交互能力基础接口) :继承通用接口ComponentBase.h,包含了交互能力通用的功能
EffectCommonBase.h(表现基础接口) : 继承通用接口ComponentBase.h,包含了表现通用的功能
InterAbility.h(交互能力专用接口) :定义了各交互能力专用的功能,比如移动能力包含了开始移动,移动中,移动结束。
EffectAbility.h(表现专用接口) : 定义了各表现能力专用的功能,比如火焰的颜色</code></pre>
<h2>2.2 接口明细</h2>
<table>
<thead>
<tr>
<th>接口签名</th>
<th>描述</th>
<th>参数</th>
</tr>
</thead>
<tbody>
</tbody>
</table>