【虚幻引擎UE5】SpawnActor生成Character实例不执行AI Move To,未初始化AIController的原因和解决方法

虚幻引擎版本:5.5.4

问题描述

刚创建的Third Person项目里,定义一个BP_Enemy蓝图,拖拽到场景中产生的实例会追随玩家,但SpawnActor产生的实例会固定不动。BP_Enemy蓝图具体设计如下:
BP_Enemy的Event Graph

又定义了一个Actor蓝图BP_SpawnEnemy,在场景中随机半径内根据BP_Enemy蓝图生成实例,BP_SpawnEnemy蓝图具体设计如下:
BP_SpawnEnemy的Event Graph

场景中也添加了NavMeshBoundsVolume覆盖,将BP_SpawnEnemy放置在场景中时产生的BP_Enemy实例静止不动,如下图。

可能原因

  1. AI Move To节点没有生效

  2. SpawnActor产生的实例没有激活,不会执行BeginPlay

  3. AI Move To节点的输入有问题

  4. NavMeshBoundsVolume设置有问题

分析过程

问题的关键在于:拖拽到场景中的实例和通过SpawnActor产生的实力有什么区别?

通过在不同的节点前添加Print String节点,可以发现AI Move To的On Success和On Fail都没有执行,怀疑过是不是异步操作的原因,但更大的可能性是输入存在问题,在AI Move To节点前添加Print String节点打印发现输入都很正常,Pawn和TargetActor能获取DisplayedName,即表明成功获取到实例引用,其他还会是什么输入出现问题呢?

在两天与豆包的交流里它多次提起"AIController异常"的问题,查看BP_Enemy蓝图里"AI Controller Class"发现设置成功,在SpawnActor后获取实例并打印其AIController,Is Valid节点判断为false,果然是没有初始化。在知乎里查到这样一个设置"Auto Possess AI",看了选项恍然大悟,该设置用来定义角色的AIController在什么场景下初始化。

根本原因

配置问题,AIController没有初始化。

解决方案

在BP_Enemy蓝图中,确认"AI Controller Class"配置是否设为"AIController",并修改配置"Auto Possess AI"是否设置正确,各选项含义如下:

  1. Disabled 不自动初始化AI Controller

  2. Placed in world 当实例在场景初始化时就被放置在场景中,自动初始化AI Controller

  3. Spawned 当实例是被生成出来的,生成时自动初始化AI Controller

  4. Placed in world or spawned 无论实例是被放置或被生成出来的,都会自动初始化AI Controller

相关推荐
HH‘HH1 天前
Unity通过OPC UA工业协议连接工业设备实战指南
unity·游戏引擎
Duo1J2 天前
【UE】Slate 编辑器工具开发03 - 节点编辑器 (EdGraph)
ue5·编辑器·游戏引擎·ue4
郝学胜-神的一滴2 天前
[简化版 GAMES 104] 现代游戏引擎 02:拆解现代游戏引擎5+1层级架构,吃透引擎底层核心逻辑
c++·unity·架构·游戏引擎·图形渲染·unreal engine·系统设计
unityのkiven2 天前
Unity 中如何创建一片森林:享元模式能不能用?应该怎么用?
unity·游戏引擎·享元模式
directx3d_beginner3 天前
26,怪物受击接口改为C++
ue5
郝学胜-神的一滴3 天前
中级OpenGL教程 023:Assimp模型加载全解——从源码到架构的骈文探秘
c++·unity·游戏引擎·cmake·unreal engine·opengl
郝学胜-神的一滴4 天前
中级OpenGL教程 022:探秘三维世界的血脉传承——物体父子关系与矩阵递归奥义
c++·线性代数·unity·矩阵·游戏引擎·unreal engine·opengl
Python私教5 天前
我用 AI 做出了第一个 Godot 贪吃蛇
人工智能·游戏引擎·godot