UE5 GameFeature示例项目《古代山谷(Valley of the Ancient)》中Action_SpawnActor无法动态拔插的问题

前因#

最近在研究GameFeature这个功能,UE官方推荐的是《古代山谷》这个项目,因为在其中用到了很多的新功能,GameFeature也在其中。观察到原来的GameFeature默认提供的action中其实功能比较有限,于是就从《古代山谷》拷贝了一些Action来用,结果Action_SpawnActor并无法在我自己的项目中在PIE模式下动态拔插。

image-20241107134717400

分析#

通过分析古代山谷中的Action编写逻辑我们可以知道,Action_SpawnActor其实是继承于WorldActionBase的,然后实现了WorldActionBase中的AddToWorld纯虚函数,从而达到SpawnActor的目的。

image-20241107135149574

然后我们把断点打在SpawnActor前,然后我们运行PIE,并把GameFeatureData的状态从Loaded改为Active。

结果发现断点命中在Continue了:

image-20241107135706968

可以看到,Entry的TargetWorld叫做GameFeatureTestMap,World也是GameFeatureTestMap,也就是说其实是同一个Level。但是最后判断的时候却是不相等。

image-20241107135738967

于是我们尝试判断两个World的PathName是否相等:

image-20241107140111549

结果发现一个叫做PIE_GameFeatureTestMap,另一个倒是我们一开始的GameFeatureTestMap。于是发现问题。

解决方案#

把if条件改为两个World的Name是否相同

image-20241107140242639

总结#

没想到PIE在运行对应的Level的时候会给这个Level在生成一个自己的PIE_XXXLevel,真是涨知识了...

不过解决方案也有点问题,也就是如果设置的TargetMap恰巧与你的当前Level是一个名字就会错误地Spawn这个Actor到你当前Level中,这显然不是预期行为。

posted @   ViKyanite  阅读(105)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2022-11-07 ARTS_4
点击右上角即可分享
微信分享提示
主题色彩