欢迎光临散文网 会员登陆 & 注册

【教程】虚幻5教程 UE5 3A大作100%全蓝图开发 双语字幕 全套素材下

2023-05-26 12:54 作者:鸭嘎-嘎嘎嘎  | 我要投稿

一、UE蓝图基础

创建蓝图

右键

创建Actor

蓝图介绍

视口

3D视口

建筑脚本

事件图表

事件图谱基础

长按右键拖动界面

中间放大缩小

左键移动节点

单击右键面板找到节点目录

可以搜索想要的节点


编译变为绿色说明没有问题

运行

就出来了刚才写的东西

蓝图执行顺序

先执行建筑

再是事件

事件播放只能三选一,不能全部都用

事件通过▲执行

按住Alt,断开连接

执行顺序

整理面板

双击线段,可以添加注释

框选节点右键,打组创建注释


创建宏

点+创建

可以把宏拖入事件列表中

创建变量

点+创建

可以修改变量类别

关于节点详细介绍:https://blog.csdn.net/weixin_35106335/article/details/127358056

二、变量基础

中文详解

https://www.bilibili.com/video/av499747312/?vd_source=f18aea8032bfe291d13819af1e439e07

变量需要占内存的,所以会有不同的变量来节省空间

整型 Integer

整数

比如说♥♥♥这种,是整数

编译后设置默认值



编译后播放,会出现数值

设置数值:总数为100,但在某个事件发生时为20,不影响总量

相加

给整数不同的数值


添加Add然后编译

会出现相加结果

点击添加引脚,可以放更多节点

相减



浮点型 Float

原理

比如说血条,有小数


运行以后可以看到小数

定时器

除法

运行就能计算小数除法


布尔 Boolean

Ture/False 判断条件是否符合激发状态

当没有开启时,不显示效果


开启后,显示效果


三维向量 Vector

可以设置具体的位置坐标

用来当作游戏中某些固定物体/人物的位置(比如说复活地点)

可以看到xyz坐标


三维旋转 Rotator

名称 Name

放一个名称

字符串 String

放一句话

修改文本


全部都大写

全部都小写

文本相等

如果输入文本中不包含搜索文本会显示false

如果有就显示ture



文本 Tex

放一段话

数值之间的条件式

大于

输入两个数值,当A>B时,显示 真


当A<B时,显示假

小于等于

和上面原理一样


不等于

私有和公共变量

公共

可以在其他蓝图中引用已经做好的蓝图

可以引用之前的蓝图


输入之前的蓝图内容,就可以查找到节点

记得关闭情境关联


私有

如果在原蓝图中把节点设置为私有,那么在公共搜索中就搜索不到

在场景中产生角色

打开蓝图关卡

添加Actor None

在原蓝图在勾选 可编辑实例,生成实时公开



编译后,可以自定义变换位置

连接运行并编译

在视口中添加一个物体

运行时可以看见自定义的数据

三、数组

基础


https://www.bilibili.com/video/BV1DP4y1h7GF/?spm_id_from=333.337.search-card.all.click&;vd_source=f18aea8032bfe291d13819af1e439e07

每个数组都有自己的序号

并且如果2的位置被拿走,3会向前补上2的空缺

不同数组之间也不可以相互移动

创建数组

在细节面板中切换为数组

在默认值中可以添加数组排列,都是从0开始排序

勾选上索引条可以上下移动

数组拖入蓝图,图标是阵列形状

整数数组可以修改每个数字

字符串数组

获取元素

加入数组引用

可以指定序号

编译后效果

将整数放入,打开可编辑

输入的默认值不能大于字符的组数数量,不然会不显示

在总蓝图中修改数据

就会出现

如果地图里放置了蓝图,在运行Actor就会出现两个

在数组中找到项目

添加一个字符串,里面写想要查找的内容

运行以后可以搜索到

如果输入没有的字符,就会显示-1


查找数组长度

一共3个索引


读取到了3个索引

数组最后的索引

最后一个索引编号是2

编译后显示

数组包含

比如说人物角色包里有一个苹果,可以添加项目包含,检索到苹果并使用



如果有,就显示为真

如果没有,就显示为False


从条目中删除数值

移除索引

输入索引编号将其移除


编译后直接读取到索引1的内容

移除项目

输入索引内容将其移除


编译后就会显示被删除索引的后一个索引

清除数组

将当前所选的字符串清零

【比如说有个角色被打死了,他身上所携带的所有物品会清零】


字符串有3个,但清理后是0


附加【合并】数组

将两组数组合并

【一个人背包里有两个分栏,把其中一个的物品放到另外一个里,总数没变,但排列到是数组位置变了】


显示为总和6个

四、引擎流程控制

分支Branches

开启判定为真

布尔判定条件,如果是真,就走上面那个路线 ,如果是假,走下面的路线





可以尝试添加更多分支

序列Sequance

程序运行的顺序是从0开始往下运行


【循环】For Loop

可以在后面加节点,逻辑是相同的


【回圈】While Loop

真的话会报错

添加一个增量,每循环一次加一个数,直到加到两个条件相等,走到假的节点

把要循环的节点加进来



但是要注意叠加循环次数要和最终数字对的上,不然就会bug

【调用N次】DO N



添加键盘


运行时,按F键会一直出现文本

【调用一次】DO Once

只运行一次

如果加上键位,没敲一次按键,就出现一次


如果勾选为真的话,运行时不会出现字符,只有按键时才会出现


【触发器】Flip Flop

如果放在事件Tick下,每帧都会运行一次,不带停的

运行完A立马运行B

【门】Gate

运行就会一直重复

添加一些按键

一定要把玩家控制器加上!

勾选start closed,一开始没有东西

按open开始运行

按colse消失

【多门】Multi Gate

从0开始运行一直到最后一个数字

如果不勾选Loop 就只运行一次,勾选会循环运行


开启 IS Random将随机出路线

新设置一个键位连接Reset重置

按下重置的时候一切都从0又开始

可以设置Start Index,选择开始运行的序列


五、函数、事件、宏

事件

事件

自定义事件

添加按键

运行后按键,按顺序播放

自定义事件输入

可以在自定义事件中添加输入口

给自定义事件加多个接口,连接不同的结局

按按键,先运行完1,再运行2


函数

函数没有延迟,只能调用事件,不能触发事件

函数可以反复被调用

功能

添加函数

添加内容

可以把函数直接拖入事件图表中

运行时显示函数内容

按照之前写的在后面增加字符串

得到的结果

同时选择多个节点,右键 折叠到函数,就可以快速添加函数组


点击展开节点,就能展回来


函数也可以添加很多输入和输出的接口

给事件中的函数添加节点,并定义数值

输入和输出

将函数组内修改成整数相乘


按键运行后得到结果

函数也可以随意修改

得到的结果也不一样

新建宏

可以添加输入和输出的点数

可以把宏拖入事件表中

运行并打印

宏程序和执行程序

可以在宏输入中标为执行



会随机出现两个结果中的其中一个,两个结果不会同时出现


宏程序库

新建一个库

添加蓝图宏库-Actor

进入库,可以新建很多个宏

设置要转换的程序逻辑

保存后就能在事件中搜索到宏内容

进行编译

显示结果

折叠节点

全选右键折叠节点,就可以打组了


双击可进入内部进行修改

在事件表大纲里可以看到正在运行的节点

在细节面板中添加输入输出接口

入组,连接输出

运行节点

也可以添加多个输入端口,并调整变量模式

七、枚举量变

概念

在变量类型中可以找到枚举

确定变量类型后可以选择变量状态

获取和设置

设置鼠标控制

运行

在蓝图关卡中添加一个相同的枚举

蓝图类和蓝图关卡并不冲突,能同时运行

也可以获取设置


创建自定义枚举量变

创建一个库

右键新建枚举

用E作为开头方便搜索

添加描述,添加枚举器

可以添加很多索引

进入蓝图类,新建变量,在细节面板中找到之前创建的枚举


在默认值中可以选择状态

在事件运行中添加

编译时就出现了

在事件中创建自定义事件,然后链接一个设置枚举

然后可以再引用事件

比较枚举量变值

添加事件,添加分支,当事件和分支判定结果为等于时运行事件,不等于时显示False




带有枚举量变的开关工具

搜索切换(变量名称)




八、类

游戏结构

Actors

打开蓝图扩展所有类,可以看见Actor的细分

可以把当前物体转为蓝图类


组件

每个Actor都有自己的坐标位置,缩放,旋转

在组件中可以放入灯光、模型、摄像机等

放入的东西同样有变换

也可以创建父子集关系

游戏模式

对局开始的基本流程: Uwordl:beginplay

agamemode:startplay

Gamemode中的关键方法:定制化逻辑中复写这些方法 initGame:变量、组件创建

PreLogin:用户登录前调用

PostLogin:用户登录后调用 两方法用于提前准备数据等

HandleStartingNewPlayer:第一次登录调用

```Plain Text RestartPlayer 调用开始生成玩家pawn

        SpawnDefaultPawnAtTransform 实际生成

```

Logout:将对应玩家的一些controller 等销毁掉

预置的基础GameMode: 有两个基类:①AGameModeBase:默认的游戏模式

②AGameMode:继承于①,适用于标准游戏类型(多人射击等)

解析:AGameMode包含一个跟踪比赛状态或整体流程的状态机,一些封装器可以查询相关状态获得信息、

设置GameMode:关卡-worldsettings-gamemode

启动URL指定GameMoade或直接配置

GameState: 包含要复制到游戏中每个客户端的信息,通常关于游戏分数 是否开始以及ai数量。

GetServerWorldTimeSeconds:gettimeseconds的服务器版本,保持客户端于服务器时间同步

playerarray:储存所有玩家的aplayerstate,方便遍历获取

hasbegunplayer:判断是否已经执行beginplay

GameInstance:存在于整个游戏生命周期,不随着地图切换而销毁,适合用于非业务逻辑的全局管理操作

PlayerState:记录包括玩家姓名得分生命等个人信息,对应玩家的数据容器。多人游戏中,所有玩家的状态存在于所有机器上,并可从服务端复制到客户端。

世界中生命体:

actor:最基础的最简化的

pawn:可悲controller 处理,执行类似玩家任务,载具等

character:类人的pawn,有碰撞移动等组件。 从下往上逐级继承

控制生命体:--controller

控制器:定向pawn的actor 分为 玩家控制器 和 ai控制器,都会去控制对应pawn,玩家控制器多一些ui 相机等逻辑。

hud:抬头显示。包括血条、弹药治时期、准星等 ———————————————— 版权声明:本文为CSDN博主「hippodu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_58624886/article/details/125956095

在世界场景设置中可以更改游戏设置


蓝图类创建时可以设置游戏模式基础

Pawn

Pown是你通过控制器控制的东西, 或者你可以使用Pown来被AI控制。请记住,Pown具有位置、 旋转和缩放,Pown也可以由AI控制 Pown是一个可以被拥有并从控制器接收输入的actoro Pown不能自动分配给控制器。你需要在开始游戏前放置好

细节面板

可以设置AI自动控制玩家

可以把Pawn直接拖到默认Pawn中做替换

角色

进入第三人称蓝图

角色Pown具有行走、跳跃和飞行的能力,角色控制器是垂直方向的,如果要创建一个人,一定要水平方向创建

可以在细节面板中看到角色运动参数

胶囊控制器

控制角色的碰撞范围

网格体

可以修改模型的材质、角色动画等

角色摄像机,可以修改位置,旋转等

控制器

创建玩家控制器



可以设置玩家控制

控制器可以接受通知

例子来说,如果我们的玩家现在正在行走,而我们正在给角色提供信息,我的控制器在移动角色,当我跳跃时,我们将通知控制器我们正在跳跃,并且我们可以在此时禁用行走,然后进入跳跃状态。


九、Actor

Actor静态网格

添加静态网格体

载入模型和材质

放在场景中的坐标

在蓝图中获取世界位置

如果在蓝图中挪动了网格体的位置,那么在世界场景中也会相应移动


获取网格体相对位置

它会根据父节点得到静态网格的位置


旋转

没有旋转

旋转后

如果这时在世界场景中加20旋转

编译后就会得到一个新的参数

缩放

和旋转的原理一样


世界变换

获取世界变换后,提升为变量

编译后可以看见位置旋转缩放

获取相对变换

Actor创建与消除

实时生成Actor

打开关卡蓝图

添加生成actor


运行时就能看到生成了

添加碰撞

添加后人物就无法穿过模型了

销毁Actor

添加销毁


运行时按0就不见了

创建+销毁

按0创建,按0销毁


IsValid校验

添加打印字符串来检查是运行否正常

当销毁Actor再检查坐标时,系统会报错,因为销毁后就查找不到目标物体了

添加is valid


获取Actor信息

访问所有Actor

在蓝图关卡中添加

选择当前Actor

添加一个复制索引



骨架Mesh

查看所有骨骼

可以查看一些现有动画

动画蓝图

触发器

当游戏运行时,角色进入某个范围可以触发声音效果等

创建触发

把物体放入触发框中

打开关卡蓝图

与另一个Actor重叠时调用

走入出发框出现物体,走出后物体消失


网格标签

可以用标签以创建逻辑,在游戏项目中搜索这个标签,并为它们应用不同的逻辑

进入蓝图类,细节面板中搜索tag

修改名称

可以在外面的细节面板中搜索到索引

案例

生成

新建一个蓝图类

在蓝图关卡中设定

销毁

随机缩放

九、蓝图通信

概念

不同蓝图只能使用在其内部定义的变量和函数等,无法直接使用其他蓝图内部定义的各变量和函数,这一特性是根据C++中类的特性而来,同时也具有类继承等特性(这里不是本文的重点)。如果需要使用某个蓝图内的变量或者函数等(例如我们在动画蓝图中需要获得角色Character蓝图下的移动组件的速度),需要首先获得到角色蓝图或者获得到角色蓝图的移动组件,再获得速度向量。其中获得到角色蓝图或者移动组件这个过程就需要蓝图通信。

形象地说,蓝图通信就好像蓝图A想要获得蓝图B中定义的信息(该信息定义在蓝图B中),需要先联系到蓝图B。 思考一下,现实中我们如何获得与一个人取得联系。如果是一个熟人,通讯录里已经存有他的联系方式,我们直接“指名道姓式”地联系上他;如果是一个陌生人,可以在遇见时留下联系方式;如果是一个名人,可能很多人都在平台上关注了他,所以他一有动态,很多人都能立即接收到最新消息。

直接通信

直接通信的第一种:在茫茫人海中能够一眼找到他,所以我能够联系上他。这种方法不够灵活,当我们需要联系上别人时也要逐一在茫茫人海中选择。 直接通信的第二种:我今天碰到他了,见到面当然算联系上了,甚至可以留下联系方式以便后日联系。 直接通信的第三种:我联系A,可是没有联系方式,但是我知道B跟他很熟,我就联系B,“诶,B,能不能帮我联系上A”。 直接通信的第四种:我今天生个孩纸,从出生开始就能够“联系”上他了。 直接通信的第五种:突然想联系班主任了,这种独一无二的人一下子就可以get到联系方式;但是如果我想联系另一个班心仪的女生,可能需要先get到另一个班全体学生,再一个个查找是不是那个女生的联系方式。 以上都是一对一的通信,当我们需要给多个人发类似的消息时,这种效率并不高。可以理解,毕竟一对一服务总是更贵一些,而一对多的服务,比如教学,会便宜很多。

蓝图接口

可以考虑现实中的一个例子:很多城市有一卡通,卡片具有多功能,其中肯定有一个功能是缴费(有很多使用场景:公交车费、水电费等)。这种卡片本身相当于蓝图接口;同样是一个缴费功能,公交系统和水电系统缴费方式肯定不一样,卡片只是给了缴费这个功能框架,具体实现需要在各部门自定义(相当于插入各个蓝图,并且在事件列表进行自定义);最后用户还需选择在具体的场景(公交车、水电服务中心等)使用该卡(相当于玩家使用该卡时,还需调用公交车的引用,不然没办法区分究竟到底给谁缴费)。

蓝图接口同样是一对一通信。使用上述例子可以很容易理解,一个时刻只能缴一个费。 特点:“万能、全能”

事件派发器(Event Dispatcher)

这个通信方式很容易理解:英伟达(发信者)每次都会在自家开发者盛会上发布新产品(这个盛会相当于派发器,英伟达触发call了这个派发器),社会各界(收信者)都有相应的反应(也就是其他蓝图bind了这个派发器),媒体领域进行的是报道,销售领域上新产品,制造领域进行生产组装等等。

事件派发器是一对多通信。发信者只管发布信息,无需知道收信者信息。 简言之,英伟达只负责发布这个消息,当各领域接收到这个消息后(前提是需要指定关注了这个发布会,不然也获得不到第一手的信息),开始发挥各领域相应不同的职能。

直接沟通

  • 过程
  • 1.请求访问,要求不同的访问到蓝图门,例如:旋转转换等
  • 2.BP可以请求访问我们的第二个BP,或者你可以称之为目标
  • 3.将引用创建到目标蓝图中
  • 4.它可以从目标中获取数据和变量,或者可以发送数据和目标的变量
  • 所以可以把数据和变量发送到目标。可以从目标发送和获取数据
  • 5.可以从目标中调用函数,例如:如果门有一些函数,我们可以通过我们的BP角色来调用它

新建一个蓝图类,把模型放进去

把门放入场景中

进入人物蓝图

添加变量,指定门



把变量公开

如果直接运行的话,会没有翻译然后报错

需要直接把人物放入地图

在细节面板-pawn中改为玩家0

在默认中选择门的蓝图

设置关门

给门加碰撞


Cast

  • 过程
  • 1.Actor阵容,cast会找到你cast的物体。例子:角色走进一个触发区,当他在那个指定区域时,自动打开一扇门。
  • 2.使用一个Cast节点
  • 3.工作蓝图:角色将投射到目标蓝图中,角色打开门,它是发送者,接收器
  • 工作蓝图是阵容和目标蓝图的发送者,是Acto
  • 4.是什么类型的对象。你喜欢角色吗?我们会扔到岩石等吗?所以这将是义你将要投给的对象类型。第二件事是当它找到物体的时候,它会casto但如果它没有找到物体,就不会发生任何事情。
  • 如果你搜索一个Actor,出于某种原因,你把你的对象写错了,没有什么事会发生,也不会投给那个对象。
  • 5.可以对同一类的几个对象进行转换。例如:想打开一扇门,但我们可以投到多扇门。从一个触发器,可以打开,
  • 例如,五扇门之类的东西。所以你可以投射到多个物体,只有一个cast。
  • 6.第四件事是你可以给子集。在层结构中,有一个actor,有自己的角色。我写了一些关于我的角色,Riambo X-Men和超人的名字。可以做的是,比如说,我们想要改变所有角色的速度,层次结构是相当重要的。

放置好自动门蓝图

添加触发区,转为蓝图

在触发区蓝图中添加范围

在触发区加上第三人称控制

打开角色蓝图



触发区域蓝图加上自定义事件

蓝图接口

放置物体并给碰撞

修改第三人称人物蓝图

逻辑:按键从人物正前方给一个球(非实体),球碰到碰撞体返回,给予响应

当没有碰撞时范围是红色,有碰撞时是绿色

创建蓝图接口

打开并命名

打开物品蓝图

添加交互蓝图

编译并保存

进入人物蓝图

添加与对象交互


在物品蓝图中添加对象交互口,并对物品进行变换指令

输入

在交互的输入接口中创建条目

在人物蓝图中就多了两个接口

打开物品蓝图,连接接口添加事件

输出

在交互中添加输出

打开第三人称接口,就能看到输出接口了

因为添加了输出接口,所以不再是事件,模型蓝图中的输入就失效了

所以删掉报错的,直接把接口放进来

进入接口,把之前的节点重新做一遍

使用接口的好处在于,每个模型的接口下都能重新安排节点


交互接口可以创建很多函数

事件调度器

发出同一指令,例如按E

接收到指令运行不同效果

进入人物蓝图,增加事件调度器


在之前的按键门逻辑上加上调度器

模型蓝图

十、第一人称角色

基本设置

新建一个游戏模式蓝图


在世界场景设置中 重置游戏模式

在快速添加中,添加一个玩家出生地

可以重置位置

创建一个角色

把角色放入世界场景设置中

放置控制器

相机设置

进入角色设置

相机设置

进入角色设置


添加一个摄像机

调整摄像机到眼睛的位置

调整视场,人类的范围是60度

鼠标

玩家控制器是根据每个玩家生成的,如果在这个场景中,如果有一个多人游戏,有100个玩家,每个玩家都有自己的玩家控制器,所以为每个玩家生成玩家控制器。

轴映射

方法一(不推荐)

可以用鼠标上下左右移动

添加Yaw,摄像机可以左右动


在人物相机中打开pawn控制

添加鼠标x轴pitch

方法二(推荐)

在项目设置中添加映射


缩放值控制视角旋转速度

也可以在蓝图中增加一个整数并转为可编辑实例

把人物蓝图放置进场景就能看见了

动作映射

也就是按下操纵杆上的按钮,比如PlayStation上的X圆圈和四边形。当按下按钮时,会执行一个操作。所以动作每次都是true或false。当按X键时,就开枪了。当释放X时,角色停止射击。

手柄-相机控制

添加手柄操作

在人物蓝图中添加

手柄连接电脑教程 https://www.bilibili.com/video/BV1Dm4y1A7T5/vd_source=f18aea8032bfe291d13819af1e439e07

键盘-运动

手柄-移动

蓝图不变


跳跃和蹲下


具体参数可以在角色中调整

在细节中打开可蹲伏

自定义步行和蹲下速度

设置角色运动

可以提升为变量


在实例中修改

物体相互作用

抓取物体

在上一章后面增加节点

设置抓取位置

挪动一下坐标轴,模拟手的位置



物体要打开物理模拟、可移动


释放物体


投掷物体

十一、时间

基础

设置长度

浮动轨道

可以添加不同的轨道

新建后可以在时间轴节点找到新的接口


右键添加关键帧

添加多个关键帧并调整曲线


矢量轨道

向量轨道可以在xyz轴上添加不同关键帧

事件追踪

事件轴中最重要的是时间


色彩追踪

右键添加关键帧并且可以修改颜色

下面的点调整不透明度

渐变测试


【教程】虚幻5教程 UE5 3A大作100%全蓝图开发 双语字幕 全套素材下的评论 (共 条)

分享到微博请遵守国家法律