虚幻蓝图快速上手

前言

蓝图 实际上也是一门编程语言 一种图形化的语言

使用蓝图 可以使开发者们省去代码的编写 即便你不会代码 也能进行游戏开发

这一点 很大程度地吸引了许许多多的游戏爱好者的加入

……

如果你有编程基础的话 那么蓝图上手会非常的快, 接下来 我们来快速入门

语言类比

我们知道 正常的编程的语言 基本上都有变量 函数的概念, 蓝图既然是一门语言, 那么它自然也有 只不过表现形式不太一样罢了

函数

  1. 蓝图中函数的表现形式

    在蓝图中 每一个蓝图节点我们可以视作一个函数

    image-20220829152437687

  2. 函数的定义

    虚幻引擎给我们封装好了许多函数 比如打印字符串的函数 给物体添加材质的函数等等

    如果我们想要自定义一个函数呢, 那么直接在左侧面板中添加一个新函数, 比如 我定义一个名为Test的函数 内部逻辑是比较传入的值是否等于3

    image-20220829180025489

    函数创建好后可以在蓝图事件表中通过鼠标右键进行名称搜索使用:

    image-20220829180313058

    image-20220829180354133

  3. 函数的调用

    节点连线可以表示函数调用和传参, 这种箭头形状的输入口 表示的就是函数调用, 左边调用右边

    image-20220829152624719

  4. 函数传参

    蓝图节点左侧下方的一系列入口 可以理解为函数参数的传递入口:

    image-20220829170225676

事件监听

现代程序的编写几乎离不开监听回调, 在设计模式的领域中也叫做观察者者模式, 我们可以在蓝图编辑面板中左侧查看当前创建事件:

image-20220919152646963

事件主要用于蓝图类之间的信息交互, 当关卡中的某一个子物体需要和所处关卡进行通信时, 我们可以在关卡蓝图中自定义一个事件, 然后子物体蓝图中调用触发:

image-20220919153104557

image-20220919153620945

事件触发命令格式为: ce 事件名

关卡蓝图是当前关卡内所有物体的父级 它可以获取到物体的实例 很容易和子物体进行数据通信, 但是物体并不持有关卡的实例, 所以信息交互需要依靠事件

变量

  1. 定义全局变量

    添加变量后 我们可以在属性细节面板中 设置变量的数据类型

    image-20220829153316870

  2. 定义局部变量

    在左侧面板中 点击鼠标右键调出菜单 可以增加局部变量的设置入口, 其操作和使用与全局变量一样 这里不再赘述

    image-20220829155333576

  3. 初始化变量的值

    通常情况下 我们在定义变量的同时 会对该变量进行值的初始化

    image-20220829153622095

  4. 获取变量值

    程序运行时 我们需要动态读取变量的值, 此时我们按住Ctrl键 然后鼠标左键将变量拖拽至事件图标中

    getvar

    此时会生成一个获取变量值的函数(蓝图节点)

  5. 设置变量的值

    同样的 我们要生成一个设置变量值的函数时, 按住Alt键 然后鼠标左键将变量拖拽至事件图标中即可

    setvar

注释

任何一门编程语言都有注释 方便我们对于程序的维护 蓝图自然也有

选中你需要进行注释的蓝图节点 然后按键盘C 则会出现一个方块将选中的节点包裹 此时可以输入注释内容

image-20220829153005361

逻辑执行

比如我们要执行一个在屏幕上打印字符串的逻辑, 那么我们可以在游戏启动的时候 调用打印字符串的函数(节点)

事件开始运行 这个函数 表示的就是游戏启动的 相当于Java中的main函数, 只执行一次

image-20220829160253326

编写好逻辑后 运行游戏 就能看到屏幕上打印的内容了

printString

对象

蓝图是一门面向对象的编程语言 在游戏中每一个物体都是一个对象

  1. 创建对象

    在世界大纲中显示的所有物体都是对象

    image-20220829161621529

    而创建对象方法很简单就是直接将素材拖拽至场景中

    2022-08-29 16-32-03.2022-08-29 16_34_17

    有些素材拖入场景后世界大纲中找不到 比如材质 说明该素材在蓝图事件表中不能直接通过右键的方式来创建对象引用

    材质比较特殊 对硬件资源消耗比较大 我们通常会在材质基础上创建材质实例 其好处是一方面减少资源消耗 另一方面可以暴露参数在游戏过程中动态修改属性

    对于材质对象的创建 我们可以选中对应材质 然后鼠标右键创建材质实例:

    image-20220829170844561

    点击创建后 素材面板会多出一个材质实例, 这个实例是材质的子类:

    image-20220829171302287

    我们可以在蓝图中创建数组变量来存放该实例:

    image-20220829173504954

  2. 获取对象实例

    我们只需在场景或者世界大纲中选中需要引用的物体对象, 然后在蓝图事件表中 右键创建对象引用节点即可

    image-20220829164655130

    动图操作如下:

    2022-08-29 16-48-00.2022-08-29 16_49_34

  3. 修改对象属性

    比如修改某个物体的位置属性, 我们可以在游戏启动时调用位置修改函数

    image-20220829165958763

关卡蓝图和蓝图类

  • 关卡蓝图: 重点在关卡 而不是蓝图 是指以蓝图语言编辑的关卡
  • 蓝图类: 重点在类 是指以蓝图语言定义和编辑的类

在游戏引擎中 关卡本质就是一个集合了众多Actor的类

虚幻引擎类继承关系

1
2
3
4
5
6
7
        |--Actor--Pawn--Character
|
Object--|--PlayerController
|
|--Info--GameModeBase
|
|--ActorComponent--SceneComponent

开发文档参考

官方文档

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%