当前课程知识点:虚幻引擎(UE4)技术基础 >  第九章 蓝图概念 >  9.1 初识蓝图 >  9.1 初识蓝图

返回《虚幻引擎(UE4)技术基础》慕课在线视频课程列表

9.1 初识蓝图在线视频

下一节:9.2 蓝图类型

返回《虚幻引擎(UE4)技术基础》慕课在线视频列表

9.1 初识蓝图课程教案、知识点、字幕

大家好

欢迎来到

《虚幻引擎(UE4)技术基础》课堂

我是主讲教师晏茗

现在我们将针对

《虚幻引擎(UE4)技术基础》课程中

蓝图系统的相关概念来进行讲解

现在进入第一节 初识蓝图

关于虚幻引擎蓝图模块的基础知识

开始之前

一定不要觉得蓝图编程就非常复杂

你们要记住蓝图前面

有三个字叫可视化编程

我们通过简单的连连线

就能够实现一些我们想实现的功能

所以非常友好

特别是对于那些完全没有代码基础的人来说

是非常的方便

接下来蓝图概念里

我会带大家一步一步来了解

UE4中是如何通过蓝图

来实现一些互动的

虚幻引擎中的蓝图可视化脚本系统

是一类完整的游戏性脚本系统

此系统的基础概念是

使用基于节点的界面在虚幻编辑器中

创建游戏性元素

与诸多常用脚本语言相同

其作用定于引擎中的对象驱动类或对象

使用UE4后便知

使用蓝图所定义的对象

通常被直接称为 blueprint

该系统灵活而强大

使设计师能够使用通常

面向程序员的几乎所有概念和工具

此外

程序员可借助虚幻引擎C++

实现中可用的蓝图特定标记创建基线系统

而此系统又可被设计师加以拓展

蓝图的工作原理从蓝图的基本形式上讲

蓝图是针对游戏添加的可视化脚本

通过使用连线把

节点 事件 函数及变量连接到一起

这样就可以创建复杂的游戏性元素

蓝图通过各种用途的

节点构成图来进行工作

这些节点包括针对蓝图每个实例的

对象构建 独立的函数 一般的游戏性事件

从而实现各种行为及其它功能

通过使用蓝图

设计人员几乎可以创作任何游戏元素的原型

以及实现或修改这些元素

创建游戏规则

调整游戏条件

(玩家)使用不同的网格物体

材质或角色自定义来创建玩家

(相机)创建新相机视角的原型

在游戏运行过程中动态地改变相机

(输入)修改玩家操作

或允许玩家向道具输入传入

道具里武器 法术 掉落物 触发器等

在环境上创建随机的装置或者程序化地生成道具

蓝图系统非常强大

可用于快速原型设计

简单事件驱动玩法的开发

但是如果玩法复杂

需要耗费非常多的CPU性能

那么最好把设计师使用蓝图设计的玩法

翻译成原生的C++代码

如果本身一些像物理模拟等

需要每帧更新又特别耗时的

那么需要使用C++来进行开发

作为可视化脚本

那么在接下来在需要接入脚本预备知识点

从四个方面开启专业系统化的

虚幻4引擎的学习过程

一函数 二宏 三事件 四面向对象思想

首先我们来看看基础概念中

函数 宏 事件的基本构成单元

函数的英文叫Function

是一个功能性的一个模块

函数的概念

在编程中使用函数

可以让代码的结构更加模块化

减少代码的复用程度

基本上一个函数就是一个单一的功能

让功能体现的更直观

在UE4中函数其实就是节点

对完成一定的功能的模块进行封装

使程序结构更清晰 易读

函数有唯一的出口和入口

但它的传入值和传出值可以有多个

即使它是可视化的编程

但蓝图是由节点构成的

每一个节点只是单一的功能

由这样的节点去连接成一些逻辑链

这样的是相当复杂的

因为节点非常的多

所以蓝图中也有函数这样的模块

用函数去包装一些单一的功能

让蓝图更加的简洁 易读

一个较大的程序一般应分为若干个程序块

每一个模块用来突现一个特定的功能

所有的高级语言中都有子程序这个概念

用子程序突现模块的功能

在C语言中

子程序的作用是由一个主函数和若干个函数构成

由主函数调用其他函数

其他函数也可以互相调用

同一个函数可以被一个或多个函数调用任意多次

在程序设计中

常利用函数

以减少重复编写程序段的工作量

提高开发程序效率

让我们能够反复地调用

使用之前已经写好的功能模块

而只需要更改一些参数或数值

就可以实现不一样的功能

函数能够实现的

比如把武器的弹夹封装成了一个函数

那我们只需要调整一些参数

就可以达到不同武器有不同的弹夹的容量

我们可以新建一个函数

新建函数之后会出现一个新的界面

这个界面就是用于我们函数的

我们可以在这里面添加一些算法添加一些功能

下面是宏(Macro)的概念

宏适合于制作控制流

可以组合多个命令使对话框中的选项更易于访问

使一系列复杂的任务自动执行

引擎自带的控制流就是用宏制作的

例如Flip Flop

A输出和B输出交替在游戏中

宏也是如此

多个组合技能

连贯的操作都能够设置成宏

在虚幻引擎中

宏一般用于计算

我们传入对应的数值

套入宏里面设置好的算法

然后输出计算完成的数值

例如在《魔兽世界》这款游戏中

由于游戏的多样性

使得游戏中虚构的13个种族

12大职业以及各种表情动作都十分繁杂

由此以来进行复杂的操作将是十分困难的事情

例如同时激活2种以上的法术

施法的同时用游戏中的聊天系统发送信息等

这时候宏命令就显得非常重要了

最后是事件的概念

事件是从游戏性代码中调用的节点

在事件图表(EventGraph) 中开始执行个体网络

使蓝图执行一系列操作

在开始进行游戏逻辑的设计和实现之前需了解

相对于函数的立即执行的效果

事件更偏向完成执行之前的触发及碰撞检测操作

函数 事件的区别还分以下6点

第一 事件里可以加延时节点 如Delay

函数里不可以

第二 函数里有返回值

事件里没有

第三 事件可以作为回调函数

函数不能直接作为回调

第四 事件可以作为输入事件和碰撞事件的处理

第五 实现接口的时候

有返回值的会变成函数

无返回值的会变成事件

第六 事件可以用来发送网络消息

而函数不能(网络)

函数和事件最本质的区别

函数的调用会立即执行并等待结果

而事件的调用只是触发

这句话是什么意思呢

举个例子

当我们在调用函数的时候

系统一定会等函数执行结束返回结果后

才会有后续动作

而事件的调用

只是触发了这个事件的开始

系统就继续往下执行了

再比如

就像是函数的执行都是在同一个线程

而事件的执行则是在多线程

而从宏的角度来看

新建一个角色

创建一个变量new blueprint

一个快速的蓝图通信用新建的变量这去引用

但新建的宏就获取不到

就是这个红没办法获得蓝图类里面创建的这个宏

这是第1个区别

第2个区别就是

宏和函数的执行引脚的一个区别

函数默认一个执行的影响

但宏一开始没有任何的执行影响

这个需要手动添加

所以新建一个执行引脚

多入口多出口控制流的多种命令组合技能

都可以用这种宏把一些按键同时输入进来

通过计算方法和导入条件判断就可以实现很多效果

这就是宏和函数的第2个区别

宏可以有非常多的执行引脚

但是函数没有

接着是各个单元模块间的传递

变量的概念

在蓝图中

变量是存放一个值或者世界中的

一个Object和Actor的一个引用

这些用于界面内部访问

或者通过设置可以在外部进行访问

便于可以在外部修改它的值

我们可以创建任何类型的变量

包括数据类型的变量 整型 布尔型和浮点型

及用于存放Object Actor

以及特定类的引用型变量

最后是第四个方面关于思维

使用蓝图需要有面向对象的思想

具有类与对象的概念

万物皆对象

世界是由各种各样具有自己的运动规律

和内部状态的对象所组成的

不同对象之间的相互作用

和通讯构成了完整的现实世界

所以对象是世界的核心

这是C++的面向对象思想

虽然我们现在还没有涉及C++

但是很多的用法我们已经正在使用中

了解这个思想

有助于我们之后开发游戏制定好游戏的大框架

我们要面对一个对象进行思考

比如我们要做一个角色

我们就要进行思考

要给这个角色添加什么属性功能

面向对象是为了解决系统的可维护性

可扩展性

可重用性

面向对象产生的历史原因有下面两点

第一 计算机是帮助人们解决问题的

然而计算机终究是个机器

他只会按照人所写的代码

一步一步的执行下去

最终得到了结果

因此无论程序多么的复杂

计算机总是能轻松应付

结构化编程

就是按照计算机的思维写出的代码

但是人看到这么复杂的逻辑

就无法维护和扩展了

第二 结构化设计是以功能为目标

来设计构造应用系统

这种做法导致我们设计程序时

不得不将客体所构成的现实世界

映射到由功能模块组成的解空间中

这种转换过程

背离了人们观察和解决问题的基本思路

可见结构化设计在设计系统的时候

无法解决重用 维护 扩展的问题

而且会导致逻辑过于复杂

代码晦涩难懂

能不能让计算机直接模拟现实的环境

用人类解决问题的

思路 习惯 步骤

来设计相应的应用程序

这样的程序

人们在读它的时候

会更容易理解

也不需要再把现突世界和程序世界之间来回做转换

那什么是对象呢

对象就是一张桌子 一台电脑 一个人

对象具有三种特征

封装 继承 多态

仅对外公开接口

控制在程序中属性的读和修改的访问级别

将抽象得到的数据和行为(或功能)相结合

形成一个有机的整体

也就是将数据与操作数据的源代码进行有机的结合

形成 类

其中数据和函数都是类的成员

举个例子

人就是一个类

人有非常多的功能

可以做非常多的事情

可以吃饭、上课、玩游戏

里面封装了非常多的功能

例如背包 射击 拾取 移动的功能

所以封装就是把很多属性功能封装起来

成为一个有机的整体

继承是父子类关系

子类继承了父类的属性功能

并且还能够进行拓展

在游戏设计中

我们通常会对我们可能拥有的功能

属性会进行一个定义

在子类中才会进行具体表现

比如我们做一把武器

武器就是一个父类

里面有后坐力 子弹数量 伤害值 射速等等

这些参数都是默认的

多态是属于多种状态

多种状态中具有共同点

比如我们做角色的移动控制

就可以多态成人型的角色 或者是动物 机甲

那他们的共同点就是都能够被玩家操控

比如我们拿起武器

武器可以是枪 刀 弓箭

但都是拿在手里输出伤害值

再比如我们开车我们可以是开大卡车开跑车开拖拉机

但是都是开车

他们都是坐在一个载具上面驾驶

所以多态和继承其实有一些相通之处

继承就是继承父类的一些属性一些功能

那多态就是你的父类可以衍生出非常多的子类

但是这些子类和父类都有个共同的点

继承和多态一个明确的关系

继承主要是一个父子类关系

子类继承了父类的属性功能

但多态是子类的延伸

他可以拥有一个父类的共同点

比如使用的武器枪械里面

有后座力 子弹数量 伤害值

但是他变成子类

具体可以变成不同种类的枪

这些就是子类可以衍生出去的

这个就是多态子类

有非常多的形态可以变成非常多的功能

但是它有统一的共同点

就是子弹数量 后座力 伤害值

这经涉及到了多态的运用

类和对象是面向对象的基本构成

类是对象的抽象

而对象是类的具体实例

类是抽象的

不占用内存

而对象是具体的

占用存储空间

类是用于创建对象的蓝图

它是一个定义包括在特定类型的对象中的

方法和变量的软件模板

实例化是指在面问对象的编程中

把用类创建对象的过程称为实例化

是将一个抽象的概念类

具体到该类实物的过程

宏是多个组合技能

连贯的操作的设置

那若是在游戏角色中

结合多态的应用会有什么效果呢

本节课内容就讲解到这

希望大家学有所成

再见

虚幻引擎(UE4)技术基础课程列表:

第一章 UE4引擎基础

-1.1 虚幻4引擎简介

--1.1 虚幻4引擎简介

--1.1 小节习题

-1.2 虚幻4引擎的安装及环境部署

--1.2 虚幻4引擎的安装及环境部署

--1.2 小节习题

-1.3 创建项目及试玩

--1.3 创建项目及试玩

--1.3 小节习题

-第一章 章节测试

第二章 UE4编辑器

-2.1 虚幻4编辑界面介绍01

--2.1 虚幻4编辑界面介绍01

--2.1 小节习题

-2.2 虚幻4编辑界面介绍02

--2.2 虚幻4编辑界面介绍02

--2.2 小节习题

-2.3 视口导航及基本操作

--2.3 视口导航及基本操作

--2.3 小节习题

-2.4 导入资源、项目迁移和管理

--2.4 导入资源、项目迁移和管理

--2.4 小节习题

-第二章 章节测试

第三章 地形系统

-3.1 地形工具

--3.1 地形工具

--3.1 小节习题

-3.2 新建地形

--3.2 新建地形

--3.2 小节习题

-3.3 塑造地形

--3.3 塑造地形

--3.3 小节习题

-3.4 使用植被工具

--3.4 使用植被工具

--3.4 小节习题

-第三章 章节测试

第四章 材质系统

-4.1 初识材质

--4.1 初识材质

--4.1 小节习题

-4.2 编辑基于物理材质

--4.2 编辑基于物理材质

--4.2 小节习题

-4.3 使用贴图纹理创建材质

--4.3 使用贴图纹理创建材质

--4.3 小节习题

-第四章 章节测试

第五章 光照系统

-5.1 大气照明和定向照明

--5.1 大气照明和定向照明

--5.1 小节习题

-5.2 添加点光源

--5.2 添加点光源

--5.2 小节习题

-5.3 添加聚光源

--5.3 添加聚光源

--5.3 小节习题

-5.4 光源质量和反射

--5.4 光源质量和反射

--5.4 小节习题

-第五章 章节测试

第六章 场景搭建

-6.1 几何体及纹理贴导入

--6.1 几何体及纹理贴导入

--6.1 小节习题

-6.2 素材整理和项目准备

--6.2 素材整理和项目准备

--6.2 小节习题

-6.3 搭建流程

--6.3 搭建流程

--6.3 小节习题

-第六章 章节测试

第七章 动画系统

-7.1 动画资源与编辑器

--7.1 动画资源与编辑器

--7.1 小节习题

-7.2 混合空间

--7.2 混合空间

--7.2 小节习题

-7.3 动画窗口及编辑动画

--7.3 动画窗口及编辑动画

--7.3 小节习题

-7.4 创建自定义角色

--7.4 创建自定义角色

--7.4 小节习题

-第七章 章节测试

第八章 特效系统

-8.1 创建粒子系统

--8.1 创建粒子系统

--8.1 小节习题

-8.2 虚幻粒子基础功能介绍01

--8.2 虚幻粒子基础功能介绍01

--8.2 小节习题

-8.3 虚幻粒子基础功能介绍02

--8.3 虚幻粒子基础功能介绍02

--8.3 小节习题

-8.4 粒子特效的综合运用

--8.4 粒子特效的综合运用

--8.4 小节习题

-第八章 章节测试

第九章 蓝图概念

-9.1 初识蓝图

--9.1 初识蓝图

--9.1 小节习题

-9.2 蓝图类型

--9.2 蓝图类型

--9.2 小节习题

-9.3 蓝图通信

--9.3 蓝图通信

--9.3 小节习题

-9.4 创建蓝图

--9.4 创建蓝图

--9.4 小节习题

-第九章 章节测试

第十章 蓝图应用

-10.1 击中事件

--10.1 击中事件

--10.1 小节习题

-10.2 实现物体来回移动

--10.2 实现物体来回移动

--10.2 小节习题

-10.3 Input输入与玩家快捷键交互

--10.3 Input输入与玩家快捷键交互

--10.3 小节习题

-10.4 用户界面和HUD

--10.4 用户界面和HUD

--10.4 小节习题

-10.5 创建游戏约束

--10.5 创建游戏约束

--10.5 小节习题

-10.6 游戏结束与重玩功能

--10.6 游戏结束与重玩功能

--10.6 小节习题

-第十章 章节测试

第十一章 游戏AI

-11.1 行为决策的AI

--11.1 行为决策的AI

--11.1 小节习题

-11.2 AI监听玩家行为

--11.2 AI监听玩家行为

--11.2 小节习题

-11.3 AI与玩家的攻击伤害

--11.3 AI与玩家的攻击伤害

--11.3 小节习题

-11.4 AI生成点与随机巡逻

--11.4 AI生成点与随机巡逻

--11.4 小节习题

-11.5 优化游戏体验

--11.5 优化游戏体验

--11.5 小节习题

-11.6 渲染及代码优化

--11.5 优化游戏体验

--11.6 小节习题

-第十一章 章节测试

第十二章 音频系统

-12.1 音频基础

--12.1 音频基础

--12.1 小节习题

-12.2 音频混成器

--12.2 音频混成器

--12.2 小节习题

-12.3 声音特效

--12.3 声音特效

--12.3 小节习题

-第十二章 章节测试

9.1 初识蓝图笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。