2015-11-14 13:03:01 xi_niuniu 阅读数 3152
  • 从这里开始虚幻4-第2辑-蓝图 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2142 人正在学习 去看看 杨石兴

Unreal Engine 4 蓝图脚本学习,根据《Blueprints Visual Scripting for Unreal Engine》学习整理


默认情况下,actor的Transform组件中 移动性属性为“static”,  就是在游戏运行时,actor是不可进行移动和操作的。所以为了实现对象
在游戏中可移动的效果需要把这一属性修改为 "可移动"




为了能够改变脚本以后所附加到的对象同样为可移动的,需要打开蓝图编辑器进行一些修改






为了使物体在游戏世界中能够移动,我们需要知道以下信息

•  Where the cylinder currently is 圆柱体在什么位置
•  What direction it is supposed to move in 想要移动的方向是什么
•  How fast it is supposed to move in that direction 在那个方向上移动的速度是多少

创建速度变量和方向变量

Speed 为float类型变量

Direction为Vector类型变量


速度设置 为200.0f;



移动方向设置为 y = -10.0f;





Normalizing is a common procedure in vector math that ensures that
the vector is converted to a length of one unit, which will make it compatible with
the rest of our calculations

标准化向量(单位化向量)就是将向量值转化到一个单位长度(向量的模为一)。以便在后序程序运算中相兼容



速度值乘以一个时间值,所以选择 float*float    时间值类型也为float


将StaticMeshComponent组件拖拽到事件图表中  以获取圆柱体当前的位置



GetWorldDeltaSeconds: 获取相邻两帧之间的间隔时间。 这个数值受游戏运行所在的机器性能影响的,性能高的机器时间间隔就较小,反之则较大。为了能够
在不同性能的计算机上表现出相同的移动速度,所以会把速度值乘以DeltaSeconds。



Transform属性中包含对象的 位置、  旋转 和 缩放的信息。 能过GetWorldTransform可以获得当前对象的Transform信息

BreakTransform 可以提取Transform中的不同部分
MakeTransform根据Location、Rotation和Scale "合成" 一个新的Transform


事件Tick每一帧都会触发

SetActorTransform 根据传入的Transform值设置Actor的Transform


这时运行游戏,圆柱体只会朝着一个方向移动。
为了实现圆柱体在游戏中来回移动,向事件图表中添加两个新的Direction 变量 ,选择设置并分别设置y值为10.0  和 -10.0


Delay会根据Duration设置的秒数循环执行
FlipFlop会执行 A 和 B所连接的Node 中的一个,默认先执行A。

播放游戏观察事件图表中数据流的走向


圆柱体在游戏中来回移动

现在通过之前创建的蓝图脚本可以创建更多且有相同属性的游戏对象











2015-11-21 11:23:21 xi_niuniu 阅读数 1125
  • 从这里开始虚幻4-第2辑-蓝图 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2142 人正在学习 去看看 杨石兴

Unreal Engine 4 蓝图脚本学习,根据《Blueprints Visual Scripting for Unreal Engine》学习整理

为了方便学习,通过以下设置将UE4调整为英语语言显示界面。



为了实现角色控制,找到 FirstPersonCharacter蓝图脚本并打开



模板自带的一些脚本node






添加输入映射





在Event Graph中空白处右键,这时就可搜索到我们刚在项目设置中添加的两个动作映射事件



角色的移动数据是在CharacterMovement组件中定义的



为了获取和设置角色移动数据需要把组件引入到事件图表中







这样就实现了按下左shift键盘角色冲刺的效果,类似穿越火线中的冲刺效果


添加望眼镜效果

FOV(field of view)的数据是在FirstPersonCamara组件中定义的所以将此组件拖拽到事件图表中

以设置Field Of View的值, 默认值为90


设置完成运行游戏查看效果

鼠标右键按下前



鼠标右键按下后





2015-11-13 19:42:51 xi_niuniu 阅读数 1396
  • 从这里开始虚幻4-第2辑-蓝图 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2142 人正在学习 去看看 杨石兴

Unreal Engine 4 蓝图脚本学习,根据《Blueprints Visual Scripting for Unreal Engine》学习整理

本篇博客主要内容是 射击添加到视口中的actor 并用自定义材质改变其颜色


创建一个基于FirstPerson蓝图模板项目

新建一个用于保存材质的文件夹


创建材质



































为Cylinder添加脚本
















播放运行最终效果



不过以上脚本还不完美。不仅子弹碰撞到圆柱体会变色,玩家和任何其它actor碰撞到圆柱体上都会变色。

在蓝图编译器器中做如下修改






这时只有子弹actor碰撞到圆柱体上才会变色


2017-05-22 17:30:22 Tgots 阅读数 461
  • 从这里开始虚幻4-第2辑-蓝图 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2142 人正在学习 去看看 杨石兴
2019-12-07 21:49:40 weixin_44332254 阅读数 12
  • 从这里开始虚幻4-第2辑-蓝图 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2142 人正在学习 去看看 杨石兴

最近开始摸索Unreal的蓝图基础使用,一些基本的操作大家可以在官方网站中的教程中找到,所以我们直接跳到事件图表上来讲。
首先,Unreal有丰富的注释功能,按住键盘C可以创建出注释区域,在右侧的“细节”面板我们可以轻松调整颜色以及气泡的出现。

节点

见过一些别人编辑好的蓝图的同学们都知道,蓝图中有错综复杂的连线,这些连线从一个地方出来,到另一个地方去,控制了流程和数据的输入输出。就像是交通线,每个城市就相当于“节点”

节点类型
事件(Events)、自定义事件、函数调用、事件调度器、流程控制、数组节点、时间轴、数学表达式节点、随机流、注释。这些都属于节点类型,丰富的节点类型可以帮助我们在小型的游戏开发中基本不需要编写自己的C++代码,实现一些功能,但是同时者考验来蓝图编写者的逻辑思维能力。

事件
在蓝图中可以定义各种事件,创建蓝图时默认就会为我们提供三种事件:BeginPlay Tick以及Overlap。对应着我们游戏开始,帧调用以及碰撞触发事件。 在一个蓝图中,事件的种类可以有多个,但是同种类型的事件只能有一个。
另外,我们也可以自定义事件,Add Event一个事件,然后我们在细节面板可以修改自定义事件的名字,定义各种事件的成员变量。

函数调用
函数的调用是蓝图中同样重要的一环,函数调用可以简单分为一般函数调用,其他函数调用和纯函数调用。
所谓一般函数调用,是可以在蓝图中形成的操作,同属于目标Actor或对象的函数相对应 。
其他函数调用,是属于除了该蓝图之外的其他对象或者Actor的函数。
纯函数调用,是可以执行的特殊动作,它不会影响世界或者世界中的对象。比如输出一个属性值,进行数学运算等。

流程控制
switch:提供了各种switch判断的类型,也可以自定义枚举类型在这里判断。
branch:相当于if else语句
Do N:接受条件执行,但是有次数限制,达到次数上限后,再次接受相同条件无法执行后续节点操作。但是可以通过重置使次数归0 .
DoOnce:同上,但是只能执行一次
DoOnceMultiInput:可以根据不同情况执行不同的操作,但是如果想要再次执行,需要Reset。
FlipFlop:交替执行A和B后面的内容。
ForLoop:for循环
ForLoopWithBreak:可以在一定条件下终止循环,执行相应的语句。
Gate:门,顾名思义。可以设置Enter的条件和Exit的执行语句,可以设置open的条件,close的条件,或者用toggle使其自动open和close·······
MultiGate:可以又多种输出的开关门,可以设置开始和重置,可以选择是否随机或者循环,可以从只当index的输出开始
Sequence:按顺序一次执行,但是值得注意的是,即使写了Delay,Sequence也会直接执行后面的语句

变量

存放一个值或者引用世界中一个Object或Actor的属性。
变量类型:
在这里插入图片描述
在这里插入图片描述

详细介绍:

布尔值(bool):小案例:利用不布尔值设置一个point light的intensity,按下键盘一个键后,如果灯是打开则关闭,如果关闭则打开。
易犯错误:将一个布尔值取反后,忘记重新把这个取反后的值设置回这个变量中,导致只能发生一次变化。
字节(byte):学过一定计算机理论的知道,1字节是8位,在UE中存储范围是0-255。在右侧细节栏中可以设置UI中滑动的范围以及值的取值范围,后者控制前者。
整型和64位整型:整型是32位,两者仅仅范围不同
浮点型(float):范围很大,案例:做一个四舍五入的功能(利用浮点型转整型操作)。
Name,String以及Text:Name是轻量级的字符串,经常被用于对象的命名 string是我们通常用的字符串,支持字符串的拼接,查找等其他语言中都存在的操作 Text是大段文本,如果游戏中出现大段对话,基本我们就使用Text,这样会对我们的本地化非常有帮助。
Vector:引擎中很多属性例如位置,旋转,缩放都是使用Vector。案例:使用Vector修改物体的位置和缩放。
Rotator:和Vector类似,可以用来定义一个旋转角度。
Transform:Transform即物体的位置,旋转和缩放,第一个和第三个是Vector类型,第二个是Rotator类型。案例:获取物体的Transform中的旋转进行输出。

Enum枚举类型:我们可以在内容浏览器中新建一个自己的枚举类型,为其设置各种情况以及解释
Structure结构体:我们可以在内容浏览器中新建一个结构体,类似于各种编程语言中的struct
综合案例:创建一个学生结构体,属性为姓名,年龄,以及学校(利用枚举类型),在蓝图中实现这样的功能:根据学生年龄的大小,输出“姓名”+是否成年+“(学校类型)”。

数组节点:
由于本篇文章是基于有一定其他编程语言经验的人编写,所以数组方面可能不会那么详尽的去介绍。
在这里插入图片描述
在这个地方可以修改变量的类型,有普通变量,数组,集以及字典。

数组中的方法:
在这里插入图片描述
很多方法都是其他语言中存在的一些常用的方法,大多都属于增删改查,具体如何使用各位客官可以自己摸索。

集合:
接下来就是我们的第三种数据存储容器,集合
在这里插入图片描述
在C#中,我们有数组,列表,字典,哈希表,栈和队列等数据结构,集合也是一种类数据结构容器,在初等数学中我们应该学过集合相关的知识。
如果硬要对比的话,集合就好比一个键值对相同的字典。
在蓝图中,可以对集合进行如上图的操作。其中也包含了最常用的差并交三个基本操作。

地图:
第四种数据存储容器:map
这个就很熟悉了,有的编程语言中它叫map,有的中是Dictionary,本质上就是一个键值对,而且是一种引用类型的键值对;与之相对的是,哈希表是一种值类型的键值对。
在这里插入图片描述
上面是map中一些常用的方法,有一定数据结构知识的客官们应该能轻松应用这些方法。

函数(Function)

在这里插入图片描述
在上图中,我们已经大概了解了图标和变量的含义,那么接下来是函数。
在这里插入图片描述
可以覆盖,但由于我们还没有继承的子类或者父类,我们就先新建一个函数
在这里插入图片描述
点击新建的函数,可以进入我们的函数界面,在右侧的细节面板有我们的一些函数相关的设置,例如一些注释,访问方式(public protected private) 是否为纯函数 在输入和输出中,我们可以定义相应的函数的输入和输出数据流。

实操训练:对一个数组进行排序
unreal蓝图中实现数组的排序是非常消耗性能且复杂的。

宏:
宏跟函数非常类似,可以定义输出和输出,而它比函数多了一个功能,它可以在右侧的细节面板设置多个输入和输出引脚,有点类似于我们的分支,具体如何使用到之后继续总结。

数学节点–蓝图中的math类
在这里插入图片描述
如图所示,在蓝图中搜索math,会出现很多一些蓝图中的数学节点,这些节点提供了我们对一些数据类型的基本的操作。
数学节点也包括对transformation的操作,另外,我们的Random节点也归在数学节点里,不再做进一步的介绍,请各位客官尝试使用一下各种数学函数,灵活运用到自己的项目中。

时间轴:
Timeline为我们提供了一个基于时间的控制器,不仅仅是做动画,Timeline代表了一种在时间轴上进行各种操作的编程习惯。
对Timeline的介绍分为两部分,首先是Timeline的曲线编辑器:
在这里插入图片描述最上面一排,可以添加基于各种类型变量的曲线,设置曲线的时间,自动播放,循环等属性。在一个Timeline中可以定义多条曲线,都会在事件图表中显示出来。中间是我们的曲线编辑窗口,我们可以按shift去添加关键帧,用delete去删除关键帧。右键点击关键帧,可以设置关键帧在此处的状态是平滑,线性还是剧变等等状态。

然后是事件图表中的Timeline节点:
在这里插入图片描述
Play:播放
Play from Start:从头开始播放
Stop:停止
Reverse:从后往前播放
Reverse from End:从最后往前播放
Set New Time:为动画设置一个新的时间
Update:每帧执行
Finished:结束执行
Direction:播放是从后往前还是从前往后

Timeline在创建后,在左侧会以组件的形式出现,我们可以像对其他变量和组件一样对它进行get 和set
下面是关于Timeline节点的一些方法:
在这里插入图片描述

没有更多推荐了,返回首页