Bootstrap

解决UE打包Cook错误:LogOutputDevice: Error: Ensure condition failed: GetSuperClass()

@[TOC](解决UE打包错误:LogOutputDevice: Error: Ensure condition failed: GetSuperClass() [File:D:/Build/++UE4/Sync/Engine/Source/Runtime/Engine/Private/BlueprintGeneratedClass.cpp] [Line: 1552])

【前言】

基于UE4.27.2的EpicLaunch下载版本,在Cook阶段就会发生这个错误,所以是UAssets资源规范导致的问题,主要错误日志为:LogOutputDevice: Error: Ensure condition failed: GetSuperClass() [File:D:/Build/++UE4/Sync/Engine/Source/Runtime/Engine/Private/BlueprintGeneratedClass.cpp] [Line: 1552]
LogOutputDevice: Error: Ensure condition failed: ClassDefaultObject [File:D:/Build/++UE4/Sync/Engine/Source/Runtime/Engine/Private/BlueprintGeneratedClass.cpp] [Line: 1556]

完整日志参考:https://forums.unrealengine.com/t/help-my-project-made-an-error-while-cooking-ensure-condition-failed-getsuperclass/1584020
https://community.gamedev.tv/t/can-you-help-me-to-fix-this-packaging-error/227062

【解决办法】

问题产生背景

我这个问题是同一个父类的不同子类pawn,从另一个pawn复制过来的函数中的Deleget类型参数的BlueprintGeneratedClass引用的路径是其他类,这个路径应该是自身的资源路径才对。
在这里插入图片描述
在这里插入图片描述

【解决方法】

先定位到是那个资源,那个函数产生的问题(最笨的方法是二分法不断删除资源和报错的节点,直到不再出现GetSuperClass的错误日志),这里将参数干掉,从新从绑定事件的节点重新连线到方法生成Event参数,就没有Cook到这个问题了。
在这里插入图片描述

;