Unreal Engine蓝图运行时错误:Accessed None trying to read PlaceableActor 排查求助
Unreal Engine蓝图运行时错误:Accessed None trying to read PlaceableActor 排查求助
问题背景
我正在学习用Unreal Engine开发游戏,目前跟着一套教程实现HUD选择建筑并放置到游戏世界的功能。现在已经能正常复制HUD功能、选择建筑并放置,但遇到了一个奇怪的问题:连续两次点击同一个建筑(用来取消选中)时会触发运行时错误,但如果选中一个建筑后切换选另一个,就不会报错。
错误复现场景
- 点击物品1 → 再次点击物品1 | 触发错误
- 点击物品1 → 点击物品2 | 无错误
- 点击物品1 → 点击物品2 → 点击物品1 | 无错误
- 点击物品2 → 再次点击物品2 | 触发错误
- 点击物品1 → 点击物品2 → 再次点击物品2 | 触发错误
错误信息
Accessed None trying to read PlaceableActor
已尝试的排查动作
我去看了教程的评论区,没有其他用户遇到这个问题,目前只明确触发条件是连续两次选中同一个建筑,但不确定具体原因,希望能得到排查方向的建议。
排查建议
根据你描述的场景,这个Accessed None错误大概率是取消选中同个建筑时,对已经被清理的PlaceableActor变量进行了非法访问,给你几个具体的排查点:
检查选中/取消选中的逻辑分支
- 当你点击已选中的建筑时,应该执行取消选中的逻辑(比如销毁预览Actor、清空
PlaceableActor变量),但可能你的蓝图里在取消后仍然尝试调用这个变量的方法或读取它的属性。 - 重点看取消选中的节点链:是不是先清空了
PlaceableActor,但后面还有节点在引用它?或者反过来,先执行了引用操作,再清空变量?
- 当你点击已选中的建筑时,应该执行取消选中的逻辑(比如销毁预览Actor、清空
验证变量的空值检查
- 在所有访问
PlaceableActor的节点前,一定要加Is Valid节点判断变量是否有效。尤其是取消选中的逻辑里,可能你在销毁预览Actor后没有及时做空值判断,就直接操作变量了。 - 比如:当第二次点击同个建筑时,你的逻辑可能先尝试对当前的
PlaceableActor做某些操作(比如隐藏预览),但其实上一步已经把它销毁/置空了,导致访问空对象。
- 在所有访问
跟踪变量的生命周期
- 给
PlaceableActor变量添加调试输出:在选中、取消选中、变量被赋值/清空的地方,打印变量的状态(是否为None)。这样能清晰看到第二次点击时,变量在哪个步骤变成了None,又在哪个步骤被非法访问。 - 比如:第一次选中时赋值了Actor,第二次点击取消时,先销毁了Actor但没置空变量?或者置空了变量,但后续逻辑还是去读它?
- 给
检查切换选中的逻辑差异
- 切换选中不同建筑时,你的逻辑是先处理上一个选中的Actor(销毁/隐藏),再赋值新的Actor,这个流程是正常的。但取消选中同个建筑时,可能没有走完整的“清理-置空”流程,导致逻辑出现遗漏。
- 对比“切换选中”和“取消选中同个”的蓝图分支,看看后者是不是少了某些关键步骤(比如变量置空、停止预览逻辑)。
如果能把相关蓝图的关键节点截图补充出来,会更容易定位问题,但先从上面几个点排查应该能找到线索。
备注:内容来源于stack exchange,提问作者pauloutboy
相关产品推荐
相关产品推荐

