面向UE4新手----基于UE4的室内软装系统设计和实现思路


由于一直有朋友在与我讨论关于UE4室内软装的系统设计问题,问题也都大同小异,正好类似项目有一些经验,因此在此分享给大家,希望能帮助更多UE4的新手和小团队。

由于我本人是独立游戏开发者而非室内设计方向的,并且当初这个项目是基于VR的,本身需求更多一些,因此在此分享一个简化版的,通过传统键鼠操作的设计思路,抛砖引玉。

后续可能还会继续更新更多相关的内容。

需求分析

由我个人所接触的项目来看,基于UE4的室内框架主要分成两个方向,一种是VR的操作方式,另一种是传统的鼠标操作模式,虽然部分核心逻辑变化不大,但这两种模式在架构上有比较大的出入。

原因1是UE4在4.15后加入了原生的VR支持,在早先的版本中对于3D widget并不能直接做射线操作,因此需要额外的插件或深入底层写针对widget component的VR交互扩展。并且扩展后的插件和代码也不容易移植到新版本的引擎上。

原因2是不论VIVE还是Oculus,手柄的VR交互和鼠标的交互不同,手柄是基于位于Player Character中的LR Controller组件进行操作的,而鼠标相关的逻辑则主要靠Player Controller进行控制。导致相关需求和逻辑需要进行重新评估。同时HMD并不能显示HUD,所以传统使用HUD进行显示的逻辑也必须重新设计。

在这里主要写核心业务逻辑的设计思路,因此使用了传统鼠标的交互方式,Input部分只用传统的按键映射来进行,而对于基于UE4进行VR室内项目的开发者,可以将Input部分根据需求使用LR Controller组件的OnComponentBegin/EndOverlap事件来替代按键映射进行交互判定。并且将本文中出现的Get Hit Result Under Cursor By Channel函数替换成Line Trace By Channel函数。并根据需求进行修改。

在这个例子中,我们需要完成以下多个需求。

1,自适应UI,动态生成家具按钮,并且自动排列对齐。

2,鼠标点击按钮进行交互,放置家具到场景中。

3,根据鼠标指向,即时调整家具位置。

4,自动吸附其他家具,智能判断可以被放置的家具类型和位置。

5,根据不同家具类型进行交互。

设计要点

1,尽量多用实例化,通常新手对于UE4会直接调用某个BP的父类,这个习惯并不好,因为直接调用父类增加了扩展的成本,编译的时候也增加了时间成本。

2,尽量使用抽象简单的数据存储方式,比如DataTable,Enum和Structure Array等,因为这样在上项目的时候不需要再深入到不同bp去做调整,只需要很少的几次点击即可。

3,易于扩展,对于未来可能的扩展预留好入口。

按键映射

E-Interaction

Left Mouse Button-ActionConfirmation

实现过程

需要创建的核心类

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值