UE5 GameFeature示例项目《古代山谷(Valley of the Ancient)》中Action_SpawnActor无法动态拔插的问题
前因#
最近在研究GameFeature这个功能,UE官方推荐的是《古代山谷》这个项目,因为在其中用到了很多的新功能,GameFeature也在其中。观察到原来的GameFeature默认提供的action中其实功能比较有限,于是就从《古代山谷》拷贝了一些Action来用,结果Action_SpawnActor并无法在我自己的项目中在PIE模式下动态拔插。
分析#
通过分析古代山谷中的Action编写逻辑我们可以知道,Action_SpawnActor其实是继承于WorldActionBase的,然后实现了WorldActionBase中的AddToWorld纯虚函数,从而达到SpawnActor的目的。
然后我们把断点打在SpawnActor前,然后我们运行PIE,并把GameFeatureData的状态从Loaded改为Active。
结果发现断点命中在Continue了:
可以看到,Entry的TargetWorld叫做GameFeatureTestMap,World也是GameFeatureTestMap,也就是说其实是同一个Level。但是最后判断的时候却是不相等。
于是我们尝试判断两个World的PathName是否相等:
结果发现一个叫做PIE_GameFeatureTestMap,另一个倒是我们一开始的GameFeatureTestMap。于是发现问题。
解决方案#
把if条件改为两个World的Name是否相同
总结#
没想到PIE在运行对应的Level的时候会给这个Level在生成一个自己的PIE_XXXLevel,真是涨知识了...
不过解决方案也有点问题,也就是如果设置的TargetMap恰巧与你的当前Level是一个名字就会错误地Spawn这个Actor到你当前Level中,这显然不是预期行为。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2022-11-07 ARTS_4