(84)关卡蓝图

关卡蓝图详解

概述

关卡蓝图 是一种特殊类型的 蓝图 ,是作用于整个关卡的全局事件图表。 关卡事件或者关卡中的Actor的特定实例,用于 激活以函数调用或者流程控制操作的形式呈现的动作序列。 熟悉虚幻引擎3的人应该非常熟悉这个概念,因为这和虚幻引擎3中的 Kismet的工作原理非常类似。

关卡蓝图 提供了针对关卡动态载入、 Matinee 以及给放置到关卡中的 Actor绑定事件的控制机制。

默认情况下,每个地图有一个 Level Blueprint(关卡蓝图) ,您可以在虚幻编辑器中编辑该蓝图;但是,您不能通过
编辑器界面创建新的 关卡蓝图 。

关于 关卡蓝图 用户界面的更多信息,请参照关卡蓝图UI 。

默认关卡蓝图

每个游戏都可以在 DefaultGame.ini 设置文件中定义默认的 关卡蓝图 类。所有新地图的 关卡蓝图 将使用这个类来进行创建 ,这样可以获得针对特定游戏的附加物及功能。

打开关卡蓝图

要打开 关卡蓝图 进行编辑,请点击 关卡编辑器工具栏* 的 蓝图 按钮,并选择 Open Level Blueprint(打开关卡蓝图)** 。

Level Blueprint Button

这样会打开 关卡编辑器 的 关卡蓝图 :

level_blueprint_editor.png

在编辑 关卡蓝图 时, 尽管可以从 窗口 菜单来打开 Blueprint Defaults(蓝图默认值) 选项卡,但 蓝图编辑器 仅启用 Graph 模式。

defaults_window_menu.png

引用Actor

在很多时候,您需要在您的 关卡蓝图 中,把到一个Actor的引用连接到某个节点的 Target 引脚上。要获得包含 Actor引用的节点:

  1. 在 关卡视口 或 场景大纲视图 中选择该Actor。

    selected_actor.png

  2. 打开 关卡蓝图 。

    Level Blueprint Button

  3. 在您想要添加节点的位置处右键点击图表。

  4. 从出现的关联菜单中选择 添加引用到 [SelectedActor] 。

    add_reference_to.png

另一种方法:

  1. 从 场景大纲视图 选项卡中拖拽的 Actor 并将且放到 关卡蓝图 的图表中。

    add_reference_drag_drop.png

出现的 Actor 引用节点可连接到任何兼容的 Target 引脚上。

actor_reference.png

在一些情况下,您不需要引用节点,因为您可以连接一个类型正确的输出引脚到 Target 输入引脚。

target_pin_noref.png

添加事件

有两种方法可以把特定Actor的 关卡蓝图 添加到 关卡蓝图 中。

  1. 在 关卡视口 或 场景Outliner 中选择Actor。

    selected_actor.png

  2. 在 蓝图 标题下的 详细信息 选项卡,有一个 Level Blueprint Events(关卡蓝图事件) 下拉框。展开此菜单,从列表中选择您想要的事件。

    add_event_details_tab.png

或者,当您选择了所需的Actor后:

  1. 打开 关卡蓝图 。

    Level Blueprint Button

  2. 在您想要添加节点的位置处右键点击图表。

  3. 在出现的关联菜单中,展开 Add Event for [ActorName] (对[ActorName]添加事件)项。

    add_event_for_actor.png

  4. 在 Add Event for [ActorName] 项下的事件列表中选择您想要的事件。

    expanded_add_event_for_actor.png

### 如何在 Unreal Engine 中获取关卡蓝图 在 Unreal Engine 的开发过程中,关卡蓝图是一种特殊的蓝图类,用于定义整个关卡的行为和逻辑。以下是关于如何获取并操作关卡蓝图的具体方法: #### 1. 访问当前关卡关卡蓝图实例 可以通过 `GetWorld()` 函数访问当前的世界对象,并进一步调用 `GetBlueprint()` 来获取关卡蓝图的实例。此方法适用于 C++ 或蓝图脚本中的场景。 ```cpp // 在C++中获取关卡蓝图实例 UWorld* World = GEngine->GetWorld(); if (World && World->PersistentLevel) { ALevelScriptActor* LevelScriptActor = World->PersistentLevel->GetLevelScriptActor(); if (LevelScriptActor) { UBlueprintGeneratedClass* BlueprintClass = Cast<UBlueprintGeneratedClass>(LevelScriptActor->GetClass()); if (BlueprintClass) { UE_LOG(LogTemp, Warning, TEXT("关卡蓝图名称:%s"), *BlueprintClass->GetName()); } } } ``` 上述代码展示了如何通过世界对象找到关卡剧本演员(`ALevelScriptActor`),并通过其类属性确认是否由蓝图生成[^1]。 #### 2. 动态创建或修改关卡蓝图 如果需要动态创建一个新的关卡蓝图或者对其进行修改,则可以使用编辑器工具或运行时 API 实现这一目标。例如,在蓝图中可以直接拖拽组件到关卡蓝图画布上完成连接与设置。 对于保存和编译的操作,需注意每次更改后都需要点击 **Compile** 和 **Save** 按钮以确保改动生效[^2]。 #### 3. 利用事件驱动机制增强交互能力 为了使关卡更加生动有趣,可以在关卡蓝图中添加各种触发条件以及响应行为。比如当玩家进入某个区域时播放一段动画序列或是改变环境光照颜色等复杂逻辑都可以借助于事件图表来实现。 示例: 假设我们需要在玩家靠近特定位置时打印随机数消息至屏幕。 ```blueprint Event BeginPlay -> GetPlayerCharacter -> IsInRadius(Location: TargetLocation, Radius: 500) -> If True -> GetRandomInt(Min: 1, Max: 100) -> PrintString(Text: "Random Number: {GetRandomInt}") ``` 以上流程描述了一个简单的基于距离检测的功能模块构建过程[^2]。 --- ### 注意事项 - 如果项目频繁涉及大量计算密集型任务建议考虑优化策略减少不必要的开销以免影响最终产品的流畅度表现[^4]。 - 对于初学者来说熟悉官方文档及相关视频资源是非常有帮助的学习途径之一[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值