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

相关推荐
Zlzxzw2 小时前
使用unity创建项目,进行动画制作
unity·游戏引擎
X_StarX6 小时前
【Unity笔记01】基于单例模式的简单UI框架
笔记·ui·unity·单例模式·游戏引擎·游戏开发·大学生
qq_4286396119 小时前
Boss:玩家摄像机系统
虚幻
KhalilRuan20 小时前
Unity-MMORPG内容笔记-其一
unity·游戏引擎
向宇it1 天前
【unity游戏开发——网络】网络游戏通信方案——强联网游戏(Socket长连接)、 弱联网游戏(HTTP短连接)
网络·http·游戏·unity·c#·编辑器·游戏引擎
ue星空1 天前
UE5音频技术
ue5
qq_168278951 天前
Protobuf在游戏开发中的应用:TypeScript + Golang 实践
服务器·golang·游戏引擎
11 天前
Lua复习之何为闭包
开发语言·unity·游戏引擎·lua·交互
深空数字孪生11 天前
2025年小程序地图打车的5大技术革新:实时路况预测与智能调度升级
大数据·人工智能·unity·性能优化·小程序·游戏引擎
RPGMZ11 天前
RPGMZ 游戏引擎如何与lua进行互相调用 初探
开发语言·javascript·游戏引擎·lua·rpgmz