注册Epic Game Luncher账号,并于服务器\\win-c:\Public_Raid\软件\UE4中将Epic GameLuncher安装在本地,由于国内网络限制,不建议使用官方UE4的安装包,下载速度会很慢。
安装完成后进行UE4引擎安装,效果如图1-1:
图1-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方法,让其他人对自己造成伤害。
上一章我们提到过类可以实例化成为一个对象,对象内部可以构建不同的方法,在UE4中可以使用蓝图进行方法构造,也可以改成编译模式用Visual Studio进行C++编程构造。但无论如何进行构造方法,都离不开方法的三要素,分别是输入,输出,运算。
输入(Input):将外部的数据或者对象输入进入该方法内部,成为一个变量,构造方法的时候需要定义输入的参数有什么内容,是什么类型。如图3-1右侧输入模块所示。
输出(Output):将内部进行处理过的数据返回输出,给调用这个方法的类、对象或者方法一个明确的返回值。如图3-1右侧输出模块所示。
运算(computing):将输入的数据在内部进行处理的流程。如图中蓝图所示,包括基础数据四则运算,包括复杂的代数运算与几何运算,甚至更复杂的引擎算法等等,都在图片中间进行运算。通过蓝图构建好的运算流程得到输出结果。
图3-1
作为一款成熟的引擎,UE4有不俗的硬件兼容性和外部输入接收性,详细的外部输入操作为。主界面——编辑——项目设置,打开之后可以看到如图3-2所示的界面。
图3-2
由于项目需求大部分是HTC VIVE进行输入,可以在轴映射和操作映射中找到HTC VIVE的输入如图3-3所示
图3-3
对应的操作映射已经进行方法名构建了,构建完毕后需要使用的话在蓝图界面中调用“输入操作 方法名”例如VR手柄扳机键绑定后调用机枪开火方法(图3-4所示),按下则是调用之前写好的FIRE方法,放开则是调用之前写好的停止开火方法进行构造这个“输入方法FIRE”
图3-4
当构建好所有基础方法并且绑定好动画对象之后,就可以进行VR实机演示了,打开主界面如图3-5所示。修改游戏模式为VR游戏模式(C++代码中设定为VRMode),改好配置,进行延时,如图3-6所示效果图。
图3-5
图3-6
基础的VR配置与实际输入检测就到这里结束。