蓝图篇

目录

蓝图基础逻辑

知识点1:蓝图是可视化编程

知识点2:蓝图是面向对象的编译型可视化编程语言

知识点3:关卡蓝图和蓝图类的区别

知识点4:蓝图数据类型

知识点5:节点的介绍

知识点6:引脚的介绍

知识点7:节点的执行顺序

知识点8:节点的类型

知识点9:节点的注释

知识点10:添加小白人第三人称来操作

蓝图可视化编程——开关门互动实现

节点1:OnActorBeginOverLap

节点2:OnActorEndOverLap

节点3:时间轴

创建门的蓝图类——Actor和组件的区别、门和轴心点修改

节点:旋转

蓝图可视化编程——按键实现开关门

节点1:

蓝图可视化编程——鼠标点击实现开关门



蓝图基础逻辑

       在蓝图的内容里,我们主要用到的是侧边栏和中间的视口区域,上半部分的工具栏中就有今天课程的主要内容“蓝图”两个字,单击鼠标左键展开分项,选中关卡蓝图再次单击鼠标左键,进入的这个界面就是关卡蓝图的编辑界面。

蓝图菜单创建时有三种:关卡蓝图、游戏模式、蓝图类

1.关卡蓝图:用于制作当前游戏场景的程序。

2.游戏模式:与制作中的游戏整体相关的设置、动作,在最初阶段基本不用,了解如何开发Unreal Engine后才加以使用。

3.蓝图类:类集中处理几个相关的功能及数据的小型程序。制作复杂程序时,创建类会是结构整体一目了然。


知识点1:蓝图是可视化编程

知识点2:蓝图是面向对象的编译型可视化编程语言

面向对象:我打麻将,你打麻将,他打麻将

对象执行动作

面向过程:打麻将(你,我,他)

拆解成动作,把数据丢进去

知识点3:关卡蓝图和蓝图类的区别

       关卡蓝图是用于创建游戏中的关卡或场景的工具。它允许游戏开发者在蓝图中创建对象、设置物理属性、添加游戏逻辑等,以构建一个完整的游戏关卡。

       蓝图类是用于创建重复使用的代码、函数和算法的工具。它允许游戏开发者在蓝图中创建自定义类、定义函数和变量等,以便在游戏中被多次调用和重复使用。

       关卡蓝图和蓝图类的区别在于它们控制的范围和可修改程度不同。关卡蓝图只控制当前关卡中的对象和行为,可以实时修改;而蓝图类定义了游戏对象的所有信息,在游戏过程中不可以修改,但可以在不同的关卡中使用。

知识点4:蓝图数据类型

  • 红色横杠对应的布尔型(Boolean)是表示真或假。二者选其一的状态时使用。
  • 绿色横杠对应的整型(Int也可记做Integer),用于声明整数类型的数据
  • 浅绿色横杠对应的浮点型(Float),用于声明带有小数点的数据。
  • 玫红色横杠对应的字符串型(String)

知识点5:节点的介绍

任何一种类型的节点,都由三部分组成。标题,输入部分,输出部分。

01.标题

节点的上方,显示着节点的标题。标题部分会根据节点的类型而显示不同的颜色。所以,看到颜色就知道该节点属于哪种类型了。

02.输入部分

显示在节点左侧的引脚,用于从其他节点接受数据。通过这些引脚与上游节点连接,获取必要的数值。

03.输出部分

显示在节点右侧的引脚,用于传递数值到其他节点。举个例子,将本节点计算后的结果值,传递给下游的节点。下游节点,将以此值作为输入部分。

知识点6:引脚的介绍

  在虚幻4引擎里程序的实现都是通过节点连线传递信号的方式执行的,我们看到的这两个节点,都有白色的三角形引脚,统称为执行引脚,同时左侧的执行引脚称为输入引脚,右侧的执行引脚称为输出引脚BeginPlay节点并没有左侧的输入表示他是纯输出节点,它的作用是在按下播放键,也就是游戏开始时释放一个信号到通过信号线连接的下一个节点的输入引脚,使其产生作用,同时下一个节点再执行完本身的功能后会继续沿着连线向下下个节点传递信号,指到信号线终止,则该段逻辑执行完毕。

  • 在关卡蓝图中单击右键展开节点搜索栏

  • 键入BeginPlay,大小写没关系,选择事件BeginPlay,单击鼠标左键选中

  • 再次右键展开节点搜索栏,键入PrintString,选择背景灰化的PrintString节点

  • 鼠标左键按住BeginPlay节点右侧的白色三角形引脚拉出一条信号线,连接到PrintString节点左侧的白色三角形引脚上

  • 同时将PrintString节点中间的Hello修改为想要在屏幕上打印的话,例如:Hello,蓝图


  • 知识点7:节点的执行顺序

  • 在事件图表中,节点的执行顺序是:从左至右。排布节点的时候,也是将最先执行的放在最左边,然后依次向右侧排列,这样会比较容易连接。

知识点8:节点的类型

  • 01、事件节点

    事件节点标题部分为红色,当用户操作或在游戏场景中发生了某件事时,就会触发事件。(信号)例子:启动游戏、用户操作鼠标和键盘、角色发生某种冲突时等等

    Begin play事件(事件开始运行)就是事件节点

    02、执行节点

    执行节点标题部分为蓝色,作用于具体处理业务逻辑的节点。左右两侧都有白色三角形标志,因此,在整个执行流程中,它可以承接上游并且呼出下游。

    Print String(打印字符串)节点就是执行节点

    03.读取节点

    读取节点标题部分为绿色,作用是向其他节点传递必要的信息,节点的右侧有用于接收读取值的项目(通常显示为Return Value),没有白色五角星标志,不能从事件连接到该节点。

    Get Date(获取日期)节点就是读取节点

部分节点:

1.BeginPlay:事件节点,游戏一运行就触发。

2.make Literal String 节点:输入自身想要输入的字符串,与print String 节点进行连接,可以进行显示。

String 可以替换为其他格式。

3.print String 节点:

InString:要输出到日志的字符串

Print to Screen :是否输出打印到屏幕

Print to Log :是否输出打印到日志

Text Color:更改输出的字符串颜色

Duration:显示的时长,如果是负数,将从配置加载。

与Print String节点类似的还有Print Text节点。

知识点9:节点的注释

添加注释:右键添加注释
多个添加注释框选:多个同时添加注释,就会模块化

  • 知识点10:添加小白人第三人称来操作

给小白人一个场景控制权:细节——自身——poss——player 0


蓝图可视化编程——开关门互动实现

生活中的感应门是怎么运作的,感应门先是会有个感应装置感应到人的靠近,门自动打开,当人远去,门又会自动关闭,那么游戏中的门也是同理,再ue4中叫做盒体触发器。

现实生活中的感应器——ue4的盒体触发器。

需知名词:关卡蓝图——写一些场景的互动、事件、碰撞(在另一篇文章:【虚幻4】UE4初学者系列教程基础篇-全中文新手入门教程)

所需节点:

节点1:OnActorBeginOverLap

触碰开始时执行事件<进入区域触发事件>

节点2:OnActorEndOverLap

触碰结束时执行事件<退出区域触发事件>

节点3:时间轴

案例1开关门的互动显示

  • 所需:添加新项目——内容包——strarter Content——SM Door

  • (刚刚添加会穿模,需要添加碰撞,来阻挡角色)

  • 碰撞:打开门的模型。碰撞——添加盒体简化碰撞(添加碰撞后,player0就走不过门了)

  • 调整碰撞大小:快捷键R缩放+拉动大小(碰撞大小即player0碰到门后走不动的范围)

  • 盒体触发器:模式——基本——盒体触发器

  • (开门的操作即出现在盒体触发器的范围内,绿色边框)

  • 将门修改成可移动:选中门后——变换——可移动

  • 点击盒体触发器——工具栏——蓝图——打开关卡蓝图——右键

  • 点击门——创建门的引用——set actor rotation——z轴修改成85度(告诉系统,让门这个目标围绕z轴进行85度的旋转)

  • (保存运行后会发现,player0靠近门/盒体触发器 就会打开)

        但是这时候我们会发现,门开的很生硬,并且不能关闭,那么我们就需要添加时间轴来让门缓缓的开启,并且连接上 OnActorEndOverLap节点,让小白人离开盒体触发器的区域的时候,门可以关闭。

  • 新建时间轴——双击添加浮点型轨迹——右键添加关键帧1(时间0,值0)——添加关键帧(时间2,值85)(值是按照旋转的角度)

  • 右键关键帧1,点击自动,右键关键帧2,点击自动(为了平缓开门的动作)

  • 连接线条


创建门的蓝图类——Actor和组件的区别、门和轴心点修改

当画面中的东西较多的时候,将每一个门都创建一个触发器再编写关卡蓝图,会让工作量变得很大,所以可以创建一个Actor来方便后面的操作。

理解:Actor可以理解为类别

所需节点:

节点:旋转

SetActorRotation(设置Actor旋转):self整个蓝图类旋转,目标是Actor,不论有多少组件都旋转

SetRelativeRotation(设置相对旋转) 和SetWorldRotation(设置场景旋转),旋转的是蓝图类里的单个组件

SetRelativeRotation(设置相对旋转):设置相对位置的旋转,相对位置如门和门框的位置是没有变化的,单个组件以自身轴旋转

SetWorldRotation(设置场景旋转):世界坐标是不会被改变的,坐标永远是0,0,0,单个组件以世界轴的旋转,世界坐标永远不会被改变,不会受物体改变而改变

案例1——开关门的互动显示

  • 右键——蓝图类——Actor——新建Door_BP——双击打开(Actor内有很很多组件,就可以理解为人的衣服和帽子裤子)

  • 添加组件1——Skeletal Mesh(静态网格=模型)——取名DoorFrame

  • Static Mesh——SM_DoorFrame

    • 添加组件2——Skeletal Mesh(静态网格=模型)——取名Door

    • Static Mesh——SM_Door

 

  • 添加box Collision(盒体碰撞(盒体触发器))——调整碰撞盒子的大小(将盒体碰撞和门放在同一级,若是没有放在同一级门动的时候触发盒子也会移动,门一旦打开,人在移动后的触发盒子范围内就没有办法关门了)

  • 编写事件图表——单击box——事件——on Component Begin Overlap——on Component End Overlap——时间轴——添加关键帧1(0,0)——添加关键帧2(1.5,75)——长度2——右键自动(在碰撞盒子内on Component Begin Overlap,离开碰撞盒子的范围on Component End Overlap)

  • 设置相对位置的旋转:

SetRelativeRotation:设置相对位置的旋转,相对位置如门和门框的位置是没有变化的,单个组件以自身轴旋转

SetWorldRotation:世界坐标是不会被改变的,坐标永远是0,0,0,单个组件以世界轴的旋转

SetActorRotation:self整个蓝图类旋转,不论有多少组件都旋转


蓝图可视化编程——按键实现开关门

游戏操作中一般都是用键盘开关门

案例——游戏按键e打开门

所需节点:

节点1:Enable Input(启用输入)

2.Disable Input(禁用输出)

3.Get Player Controller(获取玩家控制器)

【以上三个组合总而言之就是规定了一个控制角色(Get Player Controller),确定了蓝图可以接受或拒绝操作该角色的玩家从键盘发出的指令:启用输入(Enable Input)、禁用输入(Disable Input),一旦该角色满足了触发条件,就启用输入或者禁用输入,即该角色可以获得或者丧失从键盘(这个案例是,下面那个案例是鼠标,总结总结应该接受从设备输入)输入按键的权利,然后触发后面乱七八糟东西的】

4、E(E按键)

5、Gate(在Open或Close满足时)的前提下然后输入E(Enter)的时候触发事件

6、Flip Flop(不断的翻转,A和B轮流执行,第一次调用执行A,第二次B,第三次A…)

7、SetRelativeRotation(设置相对位置的旋转)


蓝图可视化编程——鼠标点击实现开关门

案例——鼠标点击开门

1.添加On Clicked(点击时),点击Door——事件——On Clicked(点击模型后会触发事件)

2.打开世界设置——窗口,世界设置——Game Mode

 

 

3.人物靠近后显示鼠标

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐