1.搭建UE4(虚幻4)引擎平台

注册Epic Game Luncher账号,并于服务器\\win-c:\Public_Raid\软件\UE4中将Epic GameLuncher安装在本地,由于国内网络限制,不建议使用官方UE4的安装包,下载速度会很慢。

安装完成后进行UE4引擎安装,效果如图1-1:

图1-1

(注:由于UE4引擎较大,请耐心等候安装)

  1. 初次使用UE4编辑器进行设置

2.1 基础设置

由于互联网原因,建议开启离线模式,如图2-1所示:

图2-1

2.2 创建项目的设置

创建项目,由于项目需求,我们一般选择游戏模式,如图2-2所示

图2-2

2.3 创建新的项目

默认选择空白蓝图模板,其他模板是UE4官方给初学者使用的测试用模板,包含蓝图函数和各种模型,可以进行使用学习,一般使用空白模板。如图2-3所示。

由于开发环境比较复杂,不建议开启光线追踪,设置如2-4所示。

图2-3

图2-4

面板下方可以对项目存储路径于项目名称进行设置,设置完成后进入UE4编辑页面,这里使用的是蓝图设计界面,蓝图设计完毕后编译完成可以转入Visual Studio进行C++代码设计,如图2-5所示。

图2-5

2.4 蓝图类的内容

下方是蓝图类与对象的存放位置,每新建一个类或者对象就在下方进行显示,类型常见的有蓝图类,动画类,模型类,媒体类,人工智能类等等,游戏开发中可以利用这些类实例化一个对象,如图2-5所示分别实例化了三个对象,一个是AI_controller机器人控制类,一个是FPP_ACTOR玩家对象,一个是ROBOT_ACTOR机器人对象,双击这些对象可以进入这个实例化对象里面对应出的方法(如图2-6所示)与可视化动态界面(如图2-7所示)。

图2-6

图2-7

其中2-6的界面是蓝图的主要界面,里面用于构造这个实例化对象的各种方法、属性与变量。左上角是组件,用于添加各种可视化子组件,绑定在这个对象里面,比如绑定摄像机,绑定骨骼,绑定模型与箭头等等;右边是对这个对象或者组件的固有属性进行设置,包括物理属性,渲染属性,模型属性,以及事件触发。左下方是对这个蓝图的图表视图进行设置,包括定义组件内容,定义构造函数。点击每一个构造函数里面可以进入一个新的子界面,定义这个函数的内部算法与结构,包括输入变量,输出变量,计算方法,获取参数等等。举个例子,比如图中开枪射击对机器人造成伤害的FIRE方法,我们首先构造FIRE函数在左边,封装起来方便调用。然后双击进入FIRE方法内部,如图2-8所示。

图2-8

左边是FIRE函数的起始位置,触发FIRE函数就会触发两个分支(SEQUENCE)条件,分别是THEN0触发射击动画,THEN0触发计算伤害。

触发THEN0射击动画则是调用“播放蒙太奇动画”(Play Anim Montage)方法,调用主界面下方对象库中的开火动画。

触发THEN1计算伤害则是调用摄像机的轴方向进行计算射击弹道,然后IFELSE判断,如果(IF)击中玩家就造成伤害(Make Damage),否则(ELSE)就无反应不造成伤害。

通过上述例子可以知道,流程图可以对应成蓝图设计,蓝图设计需要学会面向对象编程思想。

2.5 附录——面向对象编程思想

面向对象(OOB)编程是区别于传统的面向过程编程的一种编程思想,它的主要特点是封装、继承、多态,以其高度的灵活性与代码可复用性迅速提升了编程开发者的开发效率,利用面向对象编程思想可以做到一次开发,多次复用,继承复用,减少不必要的开发时间。

面向对象编程的主体是类(class),而这个类是一个抽象的概念,需要通过将这个类实例化变成一个对象(object)才能进行实际应用,比如前面内容中提到的蓝图类,蓝图类下面的一个子类ACTOR类可以实例化成玩家对象(FPP_ACTOR)和机器人对象(ROBOT_ACTOR),每个子类里面可以直接继承父类的方法,比如ACTOR类可以继承蓝图类的所有方法,整个UE4引擎提供给蓝图的方法都可以调用。在这个基础上还可以构建ACTOR对象的私有方法,比如上面内容提到的FIRE方法,这个内容是UE4里面没有的,需要调用UE4的基础方法进行重新构建创造出的新方法。而我们每次重新生成一个新的ACTOR对象,都可以调用这个方法进行使用。同理机器人可以自己构建内部方法。

并且通过子类继承父类的方法,可以在新的对象内部继承另外一个对象的方法,比如玩家也可以继承机器人的Make Damage方法,让其他人对自己造成伤害。

  1. 蓝图方法的构建

    1. 方法的三要素

上一章我们提到过类可以实例化成为一个对象,对象内部可以构建不同的方法,在UE4中可以使用蓝图进行方法构造,也可以改成编译模式用Visual Studio进行C++编程构造。但无论如何进行构造方法,都离不开方法的三要素,分别是输入,输出,运算。

输入(Input):将外部的数据或者对象输入进入该方法内部,成为一个变量,构造方法的时候需要定义输入的参数有什么内容,是什么类型。如图3-1右侧输入模块所示。

输出(Output):将内部进行处理过的数据返回输出,给调用这个方法的类、对象或者方法一个明确的返回值。如图3-1右侧输出模块所示。

运算(computing):将输入的数据在内部进行处理的流程。如图中蓝图所示,包括基础数据四则运算,包括复杂的代数运算与几何运算,甚至更复杂的引擎算法等等,都在图片中间进行运算。通过蓝图构建好的运算流程得到输出结果。

图3-1

  1. UE4外部输入

作为一款成熟的引擎,UE4有不俗的硬件兼容性和外部输入接收性,详细的外部输入操作为。主界面——编辑——项目设置,打开之后可以看到如图3-2所示的界面。

图3-2

由于项目需求大部分是HTC VIVE进行输入,可以在轴映射和操作映射中找到HTC VIVE的输入如图3-3所示

图3-3

对应的操作映射已经进行方法名构建了,构建完毕后需要使用的话在蓝图界面中调用“输入操作 方法名”例如VR手柄扳机键绑定后调用机枪开火方法(图3-4所示),按下则是调用之前写好的FIRE方法,放开则是调用之前写好的停止开火方法进行构造这个“输入方法FIRE”

图3-4

  1. VR实际演示

当构建好所有基础方法并且绑定好动画对象之后,就可以进行VR实机演示了,打开主界面如图3-5所示。修改游戏模式为VR游戏模式(C++代码中设定为VRMode),改好配置,进行延时,如图3-6所示效果图。

图3-5

图3-6

基础的VR配置与实际输入检测就到这里结束。

UE4-VR开发手册入门篇相关推荐

  1. 初识UE4 VR开发一

    初识UE4 VR开发一 开篇 开始开发前的准备 编程基础 C++类 C++ 类定义 C++类的实例化 开篇 我是一个2020年毕业软件专业的毕业生,快要毕业了,已经厌倦了用java去创建一个工程,编写 ...

  2. 初识UE4 VR开发三

    初识UE4 VR开发三 UE4入门 虚幻编辑器介绍(From:百度百科) 配置需求 软件需求 UE4入门 很多天不写了,因为我发现我电脑配置不太够,不太支持HTC VIVE的头显,所以想办法上了RTX ...

  3. java ee 6 源码_Java EE 6开发手册·高级篇(第4版)

    资源名称:Java EE 6开发手册·高级篇(第4版) 内容简介: <Java EE 6 开发手册?高级篇(第4 版)>是一本面向实战.以示例为驱动.在Java 平台企业版6(Java E ...

  4. 《Managed DirectX +C# 开发(入门篇)》系列文章

    写在最前: 1.本系列文章版权归tongabcd所有,转载自dandanCool(并非原创作者),此处只作收藏与分享之用. 2.此系列文章如有再转,需按如下方式于文章醒目位置显示标明原创作者极其联系方 ...

  5. Symbian开发系列 - 入门篇

    要开始我的Symbian开发之旅了, 先收集一些相关资料,如Symbian概述, 开发平台搭建, 参考书籍与网络资源. [基础] 什么是Symbian 学习Symbian的基本概念  Symbian操 ...

  6. (转)Managed DirectX +C# 开发(入门篇)(一)

    前      言 以前是用VC 作计算机图形学的,大约在一年前,公司接到一个用C#+DirecX的项目,从那时起便开始学习Mangaged DirectX ,现将在开发过程中的一点总结发表出来,和同行 ...

  7. kotlin开发Android入门篇一

    基础篇:基本类型及方法的定义 kotlin介绍:Kotlin是一个基于JVM 的新的编程语言,由JetBrains 开发. Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便 ...

  8. 【高德地图WEB开发】 入门篇(地图/搜索/经纬度/缩放层级)

    前言 本篇文章是高德地图web开发入门篇,实现地图搜索等基本功能,后续会继续更新地图标记点.驾车.骑行.货车等单地点\多地点导航.公交路线.兴趣周边点.及其他地图功能开发文章,所有功能均使用js实现, ...

  9. 【helloworld】-微信小程序开发教程-入门篇【1】

    1. 开篇导言 本节目标:旨在演示如何用开发者工具构建并运行简单的 helloworld 应用. 目标用户:无编程经验,但对微信小程序感兴趣的同学. 学习目标:开发者工具的基本使用流程,即创建.导入. ...

最新文章

  1. Java项目:家教管理系统(java+SSM+MyBatis+MySQL+Maven+Jsp)
  2. 成都大学的计算机排名,成都除了成都大学,还有2所985、4所211,含金量很高
  3. 转载:malloc()与new()的区别详解
  4. Java中文问题详解
  5. 读取无线手柄数据_xbox series x/s 手柄开箱
  6. java程序设计专业介绍_简介Java编程中的Object类
  7. c++ builder 改变状态栏字体颜色等样式
  8. python 守护进程(daemon)on : 会打扮的装饰器
  9. 黑马程序员 Java多态
  10. ARM开发6.3.2 基础实训( 2 ) 单个数码 LED 的显示输出系统设计( 2 )--LPC21XX
  11. java字符常量_字符常量 java
  12. 【蓝桥杯嵌入式】资源拓展板模块详解——数码管
  13. java mediatype属性_Java MediaType.MULTIPART_FORM_DATA_TYPE属性代码示例
  14. python pip安装第三方库出现error: option --single-version-externally-managed not recognized
  15. HTML的子代选择器
  16. 2022年ccpc威海站
  17. sniper photo
  18. js脚本混淆加密(转载)
  19. SMETA认证咨询,SEDEX/SMETA验厂审核分为几类及验厂周期
  20. Android 分析ANR和死锁(1)

热门文章

  1. 1000瓶毒药里面只有1瓶是有毒的,毒发时间为24个小时,问需要最少需要多少只老鼠才能在24小时后试出那瓶有毒。
  2. Golang 基本数据类型
  3. 《悲到荼糜》(林夕)
  4. 当你消极的时候,缓缓心情。
  5. linux tar 解压报错解决方法
  6. VB.net或者C#编写按键精灵DLL教程
  7. 小程序css 文字居中,小程序css设置垂直居中显示
  8. mysql 关注 表设计_mysql - 新浪微博中的关注功能是如何设计表结构的?
  9. 润乾报表根据报表的纸张大小动态指定打印机型号
  10. go底层系列-defer原理剖析