UE4第一篇之蓝图入门

本文详细介绍了虚幻引擎4(UE4)中的蓝图系统,包括关卡蓝图、类蓝图、仅包含数据的蓝图、蓝图接口及蓝图宏库等五个核心组成部分。通过这些蓝图类型,UE4为开发者提供了强大的可视化编程能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、关卡蓝图(Level Blueprint)

关卡蓝图是一种特殊类型的蓝图,是作用于整个关卡的全局事件图表。关卡事件或者关卡中的Actor的特定实例,用于激活以函数调用或者流程控制操作的形式呈现的动作序列。
关卡蓝图提供了针对关卡动态载入、Matinee以及给放置到关卡中的Actor绑定事件的机制。

二、类蓝图 (Blueprint Class)
类蓝图是一种允许内容创建者轻松地基于现有游戏性类添加功能的资源。它是在编辑器中可视化地创建的,不需要书写代码,会被作为类保存在包中。实际上,这种类蓝图定义了一种新类别或类型的Actor,这些Actor可以作为实例放置到地图中,就和其它类型的Actor的行为一样。
父类
你可以创建多种不同类型的蓝图,当然在你做这些之前,你需要指定该蓝图的**Parent Class(父类)** 选择继承父类,允许你在自己的蓝图里面调用父类创建的属性。
下面是你创建蓝图是最常见的父类:
Actor    一个可以在世界中摆放,或者生成的Actor。
Pawn    Pawn是一个可以从控制器获得输入信息处理的Actor.
Character    角色是一个包含了行走,跑步,跳跃以及更多动作的Pawn.
PlayerController     角色控制器
Game Mode    一个Game Mode 定义了游戏是如何被执行的,游戏规则,如何的分以及其他方面的内容。

仅包含数据的蓝图(Data-Only Blueprint)
仅包含数据的蓝图是指仅包含代码(以节点图表的形式)、变量及从父类继承的组件的类的蓝图。仅包含数据的蓝图允许你调整及修改继承的属性,但是不能添加新元素。从本质上讲,这些蓝图是原型的替代物,设计人员可以使用它们来调整属性或者设置具有变种的项目。可以通过添加代码、变量或者组件来将它转换成完整的类蓝图。
三、蓝图接口(Blueprint Interface)
蓝图接口是一个函数或多个函数的集合,它相当于C++中的一个纯虚基类,仅有函数名称,没有实现,该接口可以添加到其它蓝图中。使用具有该接口的蓝图,都一定会具备这些函数。在每个添加了接口的蓝图中,都可以提供接口的这些函数功能。从本质上讲这各一般编程中的接口概念一样,允许通过一个公共接口来共享及访问多种不同类型的对象。简单地讲,蓝图接口允许不同的类蓝图间彼此共享及发送数据。
蓝图接口的创建和其他类似,可以通过编辑器中的内容创建器进行创建,但它们有一些局限性,因为它们不能
添加新变量
编辑图表
添加组件

五、蓝图宏库(Blueprint Macro Library)
蓝图宏库是一个存放了一组宏的容器,或者是可以像节点那样放置到其他蓝图中的自包含图表。这些蓝图宏库非常节约时间,因为它们存放了常用的节点序列、及针对执行和数据变换的输入和输出。
宏会在所有引用它们的图表间共享,但是如果它们在编译过程中是合并的节点,那么它们会自动地展开为图表。这意味着蓝图宏库不需要进行编译,但是对宏所做的修改,仅当重新编译了包含引用该图表的蓝图时,这些修改才会反应在图表中。





### 使用蓝图进行型转换 (Cast To) 在 Unreal Engine 5 中,蓝图可视化脚本系统提供了强大的功能来处理对象之间的交互。其中,“Cast To”节点用于尝试将一个基指针安全地转换为目标子型的指针。 当执行 `Cast To` 节点时,如果源对象确实是指定目标型的实例,则返回该对象;如果不是,则返回 null 值。这种机制可以防止运行时错误并提高程序稳定性[^1]。 #### 创建 Cast To 节点 为了创建一个 `Cast To` 节点,在蓝图编辑器中右键点击空白区域,并输入 "cast to" 开始搜索所需的目标名。选择相应的选项后会自动生成对应的 `Cast To` 结构: ```mermaid graph TD; A[Actor Reference] --> B(Cast To TargetClass); B --> C(True Branch: Valid Cast); B --> D(False Branch: Invalid Cast / Null); ``` 此图展示了基本流程:给定一个 Actor 变量作为输入传递到 `Cast To` 节点上,它会判断这个变量所指向的对象是否属于指定的 TargetClass 型。如果是的话则沿 True 分支继续执行逻辑;反之则进入 False 分支表示转换失败[^2]。 #### 实际应用案例 假设有一个场景中有多个不同种的角色(比如人、机器人等),而这些角色都继承自同一个父 Character。现在想要编写一段通用代码去检测玩家碰撞到了哪种具体型的角色,并根据不同情况做出反应。这时就可以利用 `Cast To` 功能实现如下操作: ```mermaid graph TD; E(Player Controller) --> F(Overlap Event Triggered by Player Capsule Component); F --> G(Get Overlapped Actor List); H{Is Human?} --> I((Handle Interaction with Human)); J{Is Robot?} --> K((Handle Interaction with Robot)); L(Foreach Loop Begin) --> M(List Element as TmpActorRef); M --> N[Casts]; N -- Success --> O(Successful Cast Output); N -- Fail --> P(Go Next Iteration or End Loop); Q(Foreach Loop End); style N fill:#f96,stroke:#333,stroke-width:4px ``` 在这个例子中,每当玩家触发重叠事件时都会获取当前接触的所有 Actors 列表并通过循环逐一尝试将其强制转换成特定子别(Human 或者 Robot)。一旦成功匹配就调用相应的方法来进行互动处理[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值