本周任务:
完成输出成绩,将二维界面转为三维界面并实现用户通过动作控制射线交互。
准备工作:
在将二维界面转换成三维界面之前,我做了很多准备工作。我一直在思考二维和三维的转换之间可能出现的问题:
1)二维界面的蓝图逻辑能否直接在三维界面中使用
2)用户在VR模式下按钮的触发需要借助的交互方式
3)将界面转换成三维界面后如何触发按钮
为了解决这些问题,我尝试在网上寻找答案,然而并没有找到合适的说法。我也咨询了有UE4开发经验的学长学姐们,但是他们并没有人做过VR中的界面交互,所以我做了一些尝试。
我决定先将HUD 放在VR中,看能否正常显示,还有一个问题就是我没有找到资料说HUD能否在VR中正常交互。
HUD在VR中的显示:
首先在HUD中显示图片。
在HUD中图片都是需要画出来的
将需要的图片作为纹理显示,需要传入图片文件,图片在屏幕中的位置,以及屏幕的宽和高。其中屏幕的宽高我是通过打印得到的。
戴上头盔测试HUD并不能在VR模式中显示出来。
学习结束界面:
当用户在教学模式或者评分模式结束时,学习结束界面将可见,并将成绩反馈给用户。
通过DTW算法的得到成绩,将得到的成绩存到gamemode的变量中。
在学习结束界面的图表中访问gamemode中的这一变量,并将其可视化。
将二维界面转化为三维界面:
在测试中发现,当用户头戴vive头盔的时候并不能完整的看到二维界面,因此需要使用三维界面。
首先创建一个Actor蓝图,并添加一个Widget组件。
在用户界面中更改"Widget Class"为想要显示的二维界面。因为我们需要用这个Actor蓝图来显示所有的二维界面,所以这里并没有设置默认的Widget Class.
更改Draw Size 的大小以便能够将界面完全显示出来。
在Actor蓝图上切换不同界面:
首先在gamemode中设置一个变量名叫"MenuBoard"
在actor蓝图中设置在gamemode中可以通过MenuBoard访问actor蓝图
在二维界面中首先转化成gamemode类型访问其中的MenuBoard并改变其中的Widget Class为将要跳转的二维界面。