UE4学习流程

初学者系列教程内容:

  1. 蓝图编程
  2. 图形和渲染(材质灯光后期)
  3. 过场动画
  4. 骨骼动画
  5. UMG用户界面
  6. AI行为树
  7. 关卡流
  8. 地形编辑器
  9. 基本操作
  10. 物理模拟
  11. 音频系统
  12. 游戏打包和优化

一、关卡快速入门

1. 创建新项目

2. 导航视口

位移操作:(注:与鼠标右键一起操作更加方便)

  • W
  • S
  • A
  • D

旋转、缩放、拉伸操作:(注:要选中要操作的物体才行)

  • W    可以任意移动
  • E     可以任意旋转
  • R     可以任意拉伸

3. 创建一个新的关卡

方式一:这种方式更加注重于蓝图

方式二:这种才是正确创建一个空白关卡的正确方式

4. 放置actor

actor:Actor 是可以放置在关卡中的任意对象。Actor 是支持三维变换的通用类,比如如平移,旋转和缩放变换。 Actor 可以通过游戏代码(C++或蓝图)来创建(Spawn)及销毁。在 C++ 中,AActor 是所有 Actor 的基类。

分类:

1) 静态网络网格    StaticMeshActor

它是一种基本类型的可渲染的几何体。从Content中将staticmesh拖到关卡中,该网络物体会自动转换为StaticMeshActors

如果想要让物体在游戏过程中移动或缩放StaticMeshActor,需要以下设置

物体的碰撞   collision   碰撞属性

5. 运行

二、门制作:Example

example_1:简单门与人物的碰撞教程

第一步:创建新模板

第二步:添加ThirdPersonCharacter以及SmartContent    打开map

第三步:点击SmartContent中SM_Door,设置SimpleCollision

第四步:将door添加到map中

第五步:则人物与门就会发生碰撞

example_2:设置门的actor(包括门框和门),并设置门的相应器(Box Trigger),这样可以设置门的开关

第一步:添加ThirdPersonCharacter和SmartContent(初学者组件)

第二步:使用actor创建完整的门   将门放入到地图中

Blueprint-->Actor

所需要的组件(并注意组件的包含关系)

效果图

第三步:编写蓝图(Blueprint)

在创建的Door(Actor)中的Event Graph中编写

Box Trigger(盒子触发器)

  • On Actor Begin Overlap:进入盒子触发器事件
  • On Actor End Overlap:离开盒子触发器事件

Add Time Line:添加事件线

Rotation  Location  Scale其参考系不同所产生的效果也就不同

参考系:Actor  World  Relative

此处使用的是setRelativeRotation,因为改变的是门相对于门框的位移(门和门框以及触发器共同构成一个Actor)

第四步:最终效果蓝图

example_3   按键控制门的开关

第一步:按键控制,那么需要Box Trigger之前,获得玩家控制,这样才能获得玩家的输入

进入触发器,玩家按键才会起作用,否则,玩家按键失去效果

知识点:按键事件(Input+想要设置的键)

使用按键事件,则会有两种选择,按一下--门开,再按一下--门关,有两种方式可以选择

方式一:这种直接判断

方式二:Branch   这种需要添加判断条件

首先创建变量   这个变量的默认值是true,因此在下面的图中这个变量作为Branch的判断条件

另外:下图是只有第三人称玩家才能开门操作,与重叠事件一起调用

通常情况下,按键操作是不写在Door里的,而是写在ThirdPersonExampleMap的blueprint里

example_4:鼠标点击事件控制门的开关   g+鼠标右键

  专门为门开关制作的事件

首先鼠标可见事件,有两种方式:

方式一:在ThirdPersonExampleMap的Blueprint中一开始就设置鼠标可见

方式二:在worldsetting中的GameMode中的PlayerController Class新建一个类

改名为MouseController

door_open中的蓝图

注:想要看运行过程中蓝图的流程  选中创建的Actor

三、控制权镜头的切换

控制权切换所需要的知识点

1. 获得玩家的控制权

2. 让传入inpawn的角色获得控制权,我们就可以操控传入的Inpawn的角色,原来的角色就失去控制权

扩充知识点Pawn:Actor类与Pawn类

Actor:在UE4中,Actor类是可以放到游戏场景中的游戏对象的基本类型。你如果想放置任何东西到游戏场景中,必须继承Actor类。

Pawn:Pawn类是一个代表你或者代表电脑的人工智能的游戏对象,它是可以在屏幕上控制的游戏对象。Pawn类是从Actor类中基础的,它可以通过玩家的设备(键盘、鼠标等)控制或者被人工智能脚本控制。如果它是被玩家控制的,我们通常称之为controller(控制器);如果它是被人工智能脚本控制的,我们通常称之为AI(Artificial Intelligence,人工智能),如果你经常玩游戏,那些NPC(Non-player Characters,非玩家角色)就通常具有AI行为。

3. 混合镜头:为了使角色在转换的时候的动作不那么生硬,需要使用set view target with blend事件

可以设置时间

用法如下:通常与decay事件(快捷键:d+鼠标右键)一起使用,起到更好的延迟效果

  • 传入的Target:当前控制的对象
  • new view target:要切换到哪个对象
  • blend time:切换的混合时间

步骤:

第一步:控制权的切换至少需要两个物体

加载ThirdPersonCharacter和Vehicle模板

并且首先使得小白人为第一控制权   进行如下设置

第二步:编写蓝图

第三步:play

优化:如果使得一个对象在操作的过程中切换,该对象仍然在运动

对于当前example中小白人的运动问题,当切换控制权时,使用set movement事件

对于当前example汽车的运动问题,设置为刹车(handbreak) ,记得打勾,会经行刹车操作

这个存在刹车后由于惯性的存在,仍然会使车向前移动一点距离

如果想要切换镜头后直接静止,需要使用如下:

优化后的蓝图

四、蓝图通信

类型转换

知识点:

1. 自定义事件 Custom Event

2. 类型转换,例如想要和小白人经行通信,就需要转换小白人类型,就获得了小白人里面的所有东西

3. 简单的判断事件

example_1 区域加速

第一步:建立区域加速区域(即盒子触发事件)

第二步:建立小白人的基本通信

第三步:isValid事件使用

每一帧都要响应,对应于Box trigger响应区域

第四步:自定义事件,当小白人触发盒子,产生加速效果(因为加速事件是小白人的,因此需要在小白人blueprint中写)

example_2:按键实现物体旋转(一对一)

每一帧都旋转,因此

在小白人蓝图里设置按键事件

rotation一定要打开,才能进行绑定

在map中进行简单的通信绑定

 

example_2:控制多个物体同时旋转

自定义事件不变

知识点:

1. 获得该类的所有的物体

五、蓝图接口

函数与事件的区别:

  • 函数只能充当传入值和传出值的作用
  • 事件可以被触发

example_1:使用蓝图接口来实现开关门

第一步:创建my_door的actor

第二步:创建door_interface接口,并在里面创建can open the door函数

接口里方法,即可以当作事件来使用,也可以当作函数来使用

第三步:在my_door里面添加door_interface接口,并编写开门操作

第四步:在小白人的蓝图中创建变量door,并绑定

如果door里面有值,就相应door_interface接口的can open the door事件

第五步:重叠操作,在my_door里写重叠响应事件

重叠时,将my_door里的door传入到ThirdPersonCharacter中,那么里面的变量door就有效

不重叠时,就不穿door值,就无效,则按键就不起作用了

六、简单的昼夜交替现象

昼夜交替涉及到的知识

UE4中实现昼夜交替,需要改变的值有

  • directional light     平行光
  • sky light                天空光
  • BS sky sphere      天空球

example_1:简单的昼夜交替   昼夜的变化与天空球有直接关系

第一步:创建day_night的actor,并创建三个变量,其对应的属性如上所示

第二步:event trick和自转事件

第三步:在ThirdPersonExampleMap中要获得第一步创建的三个变量

首先这三个变量一定要打开(即眼睛)

效果优化:

星星:

一定要使的天空可动

点击太阳

优化:通过改变值来达到昼夜交替的效果

光的默认设置在模板里(我们将平型关的默认值改为5)

晚上(night):

平行光值的变换

天空光的值的变换

sky sphere云密度的变换

白天(day):

和黑夜一样,需要注意值

Event Graph中的事件

再此优化:这样重复的操作十分不适合蓝图的编写   将黑夜和白天组合在一起

创键day_night函数   把需要设置的值都传出去

七、简单的UI设计

游戏中的UI十分重要

UI所涉及到的知识点:

1. 游戏一开始事件:begainplay

2. widget:器皿,装组件  通常显示界面需要线创建一个器皿来容纳组件

一定要绑定创建的界面

3. 将界面显示在游戏界面上 addToViewport

example_1:创建用户界面  有游戏开始、游戏结束,并显示图片

第一步:用户界面操作

首先创建UI_Main界面

素材资源直接导入到content中

点击UI_Main,设置界面框,并导入图片

通过screen size调整界面大小

图片直接拖进去,并调整图片(注:这是界面组件的通用调整用法)

anchors设置在最中心,这样能够使得界面随屏幕的大小而变化

使用Button、text用法,并重新命名,写事件

第二步:事件的编写  点击buttion下的on click事件

地图蓝图事件的编写

第三步:扩展   显示的界面是地图的一部分,那就需要首先后的视野

创建一个pawn(而不是actor),并添加camera组件,拖入到地图中,并设置它是最开始的控制权

鼠标显示事件

获得新建立摄像机的视野(在pawn里--下面左边的图片,而不是在input里--如下面的右边图片)

     

为了使背景图片不挡住地图,设置图片的透明度

playerController、player、character之间的关系

  • Pawn是马甲,Controller是驱动马甲的大脑
  • Controller通过possess/unposses来获得/释放对Pawn的控制权。 Controller和Pawn相对独立,不一定谁必须有谁
  • Controller有两种:AIController和PlayerController。 前者是人工智能的控制,后者是用户输入控制
  • Controller和Possession的关系是1:1。所以一个Controller至多能控制一个Pawn,一个Pawn至多能被一个Controller控制
  • Character是Pawn的一种

第四步:实现镜头的转换,从my_camera到character的视野中

example_2:暂停UI以及UI动画

第一步:暂停UI

第二步:各事件

第三步:UI动画

当继续游戏时,UI以缩放的形式消失

1. 新建一个画布,将按钮都放进这个画布中

但是本次例子开头有主界面,因此将主界面和暂停界面都卸载beginplay上,且暂停界面设置为不可见,主界面显示一次就不需要了。

example_3:局域网联机设置

第一步:创建三个界面

main_menue

在主界面里设置模糊--这里不使用主界面

find_server

join_server

上面太大,会无法添加到服务器,因此要将屏幕和设计的Horizontal box的大小,设置所期望的大小

            

当服务器的名字过长,可以截取到与text的长度一样长

即截取到边框的长度

将服务器的名字进行绑定

第二步:事件的编写

首先main_menue

1. 创建游戏

一定要注意project_setting中的设置问题  全部为主地图

2. 搜索服务器

3. 退出游戏

其次是Find_Server

1. 刷新
思路流程:当创建完游戏后,在另一个窗口搜索服务器,服务器的名字出现在服务器窗口。可见服务器窗口这个组件很重要,当服务器窗口中存在服务器的时候,就需要让刷新组件消失,因此需要绑定服务器窗口,并设为变量。

这种绑定操作可以起到实时刷新的作用

并且在点击完搜索服务器,刷新组件运动一会,就出现服务器,这个服务器就出现在服务器的窗口里

将搜索服务器为自定义事件

设置为自定义事件的原因:

  • 在主界面点击搜索服务器按钮,就要执行刷新服务器(相当于搜索服务器)
  • 而Find_Server执行刷新时,也要执行刷新服务器操作
  • 为了简化蓝图操作

2. 返回

最后Join_Server

总结:效果大概达到了,但是出现两个问题:

  • 只能一个创建地图
  • 地图中只有一个玩家,另一个控制的摄像机

在观看另一个骨骼动画重定向视频时解上面出现的问题

example_3:开场动画

第一步:导入素材

1. 图片素材直接导入

2.视频素材导入基本步骤

1) 创建Media Player

勾选生成动画的封面贴图,很有用

2) 导入视频素材

3)点击播放Media Player,进行绑定导入的贴图

第二步:UI的设计

video_pic是创建media_player时生成的贴图

bg是背景图片

第三步:编写蓝图

1) 新建一个变量


默认值如下

2) 事件

第四步:界面显示

第五步:完整的UI及其优化

八、骨骼动画重定向

无论做哪一种游戏类型,现有的小白人无法满足玩家对角色人物美观性的要求,因此,必须重新设计人物模型,这就涉及了人物在地图中walk、run、jump等骨骼动画。因此,今天来学习骨骼动画重定向操作。

第一步:查看小白人的骨骼

第三人称小白人的骨架位置如下

重定向图片预览

1. 分别打开小白人的骨骼和自己导入进去的骨骼

2. 打开骨骼重定向管理器,设置

3. 姿势查看,将人物变成  T   pose ,并点击Modify Pose中use current pose

这样点击view pose和hide pose,就会出现不同的效果

4. 对于导入进来的骨骼,需要自己绑定骨架,如果直接auto map极有可能出现问题

也需要重定向管理器操作

在绑定骨骼之前,先对骨骼的名称进行了解(机翻)

  • Root:根
  • Pelvis:骨盆
  • spine:脊椎
  • clavicle:锁骨
  • UperArm:上臂
  • lowerarm:下臂
  • hand:手
  • neck:脖子
  • thigh:大腿
  • calf:小腿
  • foot:脚

上图中的Thigh_L定向出错,应该是leg-left-thigh

打开这个资源,会出现动画

同样操作:闲置状态、走路状态、奔跑状态、

要使人物mode在地图上跑,需要新建一个人物蓝图

调整摄像机

新建一个动画蓝图

新建混合空间,命名为walk

并将混合空间与人物蓝图绑定

选择人物动画

使用新地图来显示新人物

在搬运thirdPersoncharacter中的运动事件时,一定要将报错的组件创建为变量

然而出现后退步转身的情况

Done !

九、 3D UI和半自动和全自动

第一人称射击游戏,需要在导入模板之前就选择第一人称模板,这样枪里才有子弹。

第一步:设计3D界面

第二步:在游戏中,3D界面是以actor的形式存在的,不能使用create widget

添加widget组件

在2D UI使用blur可以模糊化,但是在3D UI,无法使用,因此使用Border来处理

第三步:地图的设置

这样红色箭头就变化了,旋转90度将其调整过来,放在枪口上,并在

注:如果想要通过鼠标来进行互动

以下步骤:

一开始界面显示:

新建一个pawn

UE4 中文文档阅读相关推荐

  1. ug585-Zynq-7000中文文档阅读笔记

    目录 前言 一.第一章 介绍 1.1概述 1.1.1框图 二.结束语 前言 一.文档概述 二.文档展示 三.文档说明及文档获取方式 前言 现在很多做FPGA的公司都在用ZYNQ,不仅可以节约硬件成本, ...

  2. PyTorch中文文档阅读笔记-day1

    写在开头(重复的) 1.课程来源:torch中文教程1.7版. torch中文文档. 2.笔记目的:个人学习+增强记忆+方便回顾 3.时间:2021年4月29日 4.仅作为个人笔记,如有需要请务必按照 ...

  3. 【clickhouse】ClickHouse官方中文文档 阅读笔记

    1.概述 这个简单阅读一下,适合当工具包,用到的时候再仔细看吧

  4. springboot中文文档_登顶 Github 的 Spring Boot 仓库!艿艿写的最肝系列

    源码精品专栏 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 My ...

  5. 使用编译器——Solidity中文文档(8)

    写在前面:HiBlock区块链社区成立了翻译小组,翻译区块链相关的技术文档及资料,本文为Solidity文档翻译的第八部分<使用编译器>,特发布出来邀请solidity爱好者.开发者做公开 ...

  6. 已知bug列表——Solidity中文文档(12)

    写在前面:HiBlock区块链社区成立了翻译小组,翻译区块链相关的技术文档及资料,本文为Solidity文档翻译的第十二部分<已知bug列表>,特发布出来邀请solidity爱好者.开发者 ...

  7. python语言需要英语非常好吗-Python用不好英语水平不够?这里有官方中文文档你看不看...

    Python 作为世界上最好用的语言,官方支持的文档一直没有中文.小伙伴们已经习惯了原汁原味的英文文档,但如果有官方中文文档,那么查阅或理解速度都会大大提升.本文将介绍隐藏在 Python 官网的中文 ...

  8. python中文昵称-官方出品 Python 中文文档!拜托,别再说看不懂了

    点击" 开发者技术前线 ",选择"星标�" 在看|星标|留言, 真爱 回复"666",获取一份技术人专属大礼包 作者:机器之心 参与:思源 ...

  9. python官方-Python官方中文文档强势来袭

    原标题:Python官方中文文档强势来袭 Python 官方支持的文档一直没有中文.小伙伴们已经习惯了原汁原味的英文文档,但如果有官方中文文档,对于初学者来说,门槛会大大的降低.现在中文文档强势来袭 ...

  10. Ocelot中文文档-缓存

    Ocelot中文文档-缓存 原文:Ocelot中文文档-缓存 目前Ocelot使用CacheManager项目提供了一些非常基本的缓存.这是一个了不起的项目,它解决了很多缓存问题. 我会推荐这个软件包 ...

最新文章

  1. 正则表达式全部符号详解
  2. c++ 用指针将函数作为参数传参
  3. python小游戏编程100例_经典编程100例——python版(例9例10)
  4. python 重载id函数_Python函数重载实例
  5. junit单元测试断言_简而言之,JUnit:单元测试断言
  6. How to fix the bug “Expected required, optional, or repeated.”?
  7. Docker : 数据卷(创建、挂载、查看、删除)
  8. svn拉取文件合并_svn 创建分支、合并分支、分支与分支合并
  9. java word在线编辑_[原创]Java开发在线打开编辑保存Word文件(支持多浏览器)
  10. 计算机更新bios,GIGABYTE How to Reflash VGA BIOS
  11. win10系统如何查询本机的IP地址和外网IP地址
  12. EDI 单据和标准是什么?
  13. 计算机基础知识教程 pdf,《计算机基础知识教程》.pdf
  14. PKI CA RA KMC
  15. Java 简单的用户管理系统(代码注释超全超详细!!!)
  16. Video IP:Video_In_to_AXI4-stream
  17. 408计算机网络学习笔记——网络层
  18. Linux驱动学习笔记之触摸屏驱动
  19. 入侵oracle数据库时常用的操作命令整理
  20. PK61键盘使用说明

热门文章

  1. Windows server2016 安装SqlServer2005 无法启动服务
  2. Win 7 64位系统安装32位AutoCAD 2012方法
  3. Ubuntu 安装gcc/g++
  4. c++ pdflib 生成中文内容
  5. C程序设计实践——实验指导
  6. 单片机c语言音符发生,单片机C语言程序的设计实训100例基于8051Proteus仿真.doc
  7. 卡巴斯基kis6换许可文件key教程(转)
  8. PMP 考试一定要报培训班吗?(PMP备考资料分享)
  9. LM324运放作为比较器输出不稳定问题的探讨
  10. SaaSpace:12种最好的免费甘特图软件工具