【虚幻引擎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

相关推荐
虾球xz8 小时前
游戏引擎学习第263天:添加调试帧滑块
c++·学习·游戏引擎
虾球xz9 小时前
游戏引擎学习第262天:绘制多帧性能分析图
c++·学习·游戏引擎
烟水寻常1 天前
UE5 Audio2Face导出USD表情与ARKIT表情重定向
ue5
烟水寻常1 天前
UE5 使用插槽和物理约束对角色新增的饰品添加物理效果
ue5
KhalilRuan1 天前
Unity-Shader详解-其四
unity·游戏引擎
烟水寻常1 天前
UE5 GAS开发P47 游戏标签
游戏·ue5
烟水寻常1 天前
UE5 使用插件进行Audio2face和UE5的实时链接并实时输出嘴型
ue5
虾球xz1 天前
游戏引擎学习第261天:切换到静态帧数组
c++·学习·游戏引擎
笑鸿的学习笔记2 天前
虚幻引擎5-Unreal Engine笔记之显卡环境设置使开发流畅
笔记·ue5·虚幻
KhalilRuan3 天前
Unity-Shader详解-其三
unity·游戏引擎