Error cdo constructor failed to find

In the player class constructor, I use ConstructorHelpers::FObjectFinder to get a link to blueprint animation class: static ConstructorHelpers::FObjectFinder finderAnim(TEXT("

In the player class constructor, I use ConstructorHelpers::FObjectFinder to get a link to blueprint animation class:

static ConstructorHelpers::FObjectFinder<UAnimBlueprint> finderAnim(TEXT("AnimBlueprint'/Game/MixamoAnimPack/Mixamo_Adam/Anims/MixamoAnimBP_Adam.MixamoAnimBP_Adam'"));

Then I call SetAnimClass() method:

if (finderAnim.Succeeded())
    PlayerMesh->SetAnimClass(finderAnim.Object->GetAnimBlueprintGeneratedClass());

Everything works in the UE4 editor, but when I started packing the project, something went wrong and I got an error:

> PackagingResults: Warning: Error: CDO Constructor (Enemy): Failed to find /Game/MixamoAnimPack/Mixamo_Mortimer/Anims/MixamoAnimBP_Mortimer.MixamoAnimBP_Mortimer

Is there a solution to this problem or I should create a blueprint class of the player and choose the animation there?

asked Jun 3, 2020 at 14:18

Arcret's user avatar

0

Here is a similar question on Unreal Engine’s Forum.

This is the proposed solution:

Adding «_C» at the end of filename and treating the file as a «UClass»
makes things run smoother. Now it runs properly on both editor and
packaged game.

So your initialization of finderAnim will look like:

static ConstructorHelpers::FObjectFinder<UClass> finderAnim(TEXT("AnimBlueprint'/Game/MixamoAnimPack/Mixamo_Adam/Anims/MixamoAnimBP_Adam.MixamoAnimBP_Adam_C'"));

PS: Go through JamesG’s (Lead Programmer — UE4 Animation/Physics/Audio Team) answer on this thread to understand it more clearly.

answered Jun 3, 2020 at 15:01

brc-dd's user avatar

brc-ddbrc-dd

9,2413 gold badges37 silver badges62 bronze badges

1

Another possibly more robust solution is to use FClassFinder.

static ConstructorHelpers::FClassFinder<UAnimInstance> finderAnim(TEXT("/Game/MixamoAnimPack/Mixamo_Adam/Anims/MixamoAnimBP_Adam"));

after which you can simply

PlayerMesh->SetAnimClass(finderAnim.Class);

answered Jun 3, 2020 at 19:48

Rotem's user avatar

RotemRotem

21.2k6 gold badges62 silver badges109 bronze badges

Оригинальный автор: @ Dong Xuan Wong

связанная информация:

C ++ понимает проблему динамической загрузки: LoadClass <T> () и LoadObject <T> ()

http://aigo.iteye.com/blog/2281558
C ++ реализует динамическую загрузку UObject: StaticLoadObject (); взять в качестве примеров текстуру и материал

http://aigo.iteye.com/blog/2268056

Упомянутая здесь статическая загрузка относится к методу загрузки, который должен быть завершен в конструкторе. Значение динамической загрузки может быть загружено во время выполнения. В исходном коде UE4 первый фактически является слоем инкапсуляции для второго, а именноFObjectFinder () является инкапсуляцией LoadObject ()。But,FClassFinder () не является инкапсуляцией LoadClass ()FClassFinder () внутренне вызывает LoadObject ().

Если вы хотите получить класс типа чертежа БП, вы можете получить его через ConstructorHelpers :: FClassFinder (), например:

static ConstructorHelpers::FClassFinder<AActor> UnitSelector(TEXT("Blueprint'/Game/MyProject/MyBlueprint.MyBlueprint'"));
TSubclassOf<AActor> UnitSelectorClass = UnitSelector.Class;

 
Но при запуске игры сообщается об ошибке, что файл не может быть найден, например:

Default property warnings and errors:

Error: COD Constructor (MyGameMode): Failed to find /Game/MyProject/MyBlueprint.MyBlueprint

Есть два решения (это яма UE4, он меня долго тратит …):

А, вcopy referenceДобавить после пути к файлу_C,Например:Blueprint’/Game/Blueprints/MyBlueprint.MyBlueprint_C

static ConstructorHelpers::FClassFinder<AActor> UnitSelector(TEXT("Blueprint'/Game/Blueprints/MyBlueprint.MyBlueprint_C'"));
TSubclassOf<AActor> UnitSelectorClass = UnitSelector.Class;

B, удалите префикс пути:/Game/Blueprints/MyBlueprint

static ConstructorHelpers::FClassFinder<AActor> UnitSelector(TEXT("/Game/Blueprints/MyBlueprint"));
TSubclassOf<AActor> UnitSelectorClass = UnitSelector.Class;

Также обратите внимание: имя шаблона FClassFinder <T>,Невозможно написать UBlueprint напрямую,Например:FClassFinder<UBlueprint> Это неправильно.Какой родительский класс выбран при создании проекта, напишите имя соответствующего родительского класса, Если это Актёр, то это должно быть записано как:FClassFinder<AActor>, иначе он не может быть успешно загружен.

При использовании TSubclassOf <T>Название шаблона должно быть таким же

К тому же,Имя шаблона в функции FClassFinder <T> () должно совпадать с именем шаблона переменной TSubclassOf <T>.Например, вышеупомянутые все AActors, если они не совпадают, вышеупомянутая ошибка также произойдет.
Приведите другой пример:

static ConstructorHelpers::FClassFinder<UUserWidget> TestBP(TEXT("/Game/Blueprints/MyWidget_BP"));
TSubclassOf<UUserWidget> MyWidgetClass = TestBP.Class;

Вы также можете использовать UClass * для замены TSubclassOf <T>

Например:

static ConstructorHelpers::FClassFinder<UUserWidget> TestBP(TEXT("/Game/Blueprints/MyWidget_BP"));
UClass* MyWidgetClass = TestBP.Class;

Я видел много примеров черезFObjectFinder()Чтобы получить этот класс, сейчас думать об этом беспомощно. Документация по UE4 довольно скудна. Не только документация проекта не обновляется синхронно, но и документация C ++ жалкая.

static ConstructorHelpers::FObjectFinder<UBlueprint> UnitSelector(TEXT("Blueprint'/Game/MyProject/MyBlueprint.MyBlueprint'"));
TSubclassOf<AActor> UnitSelectorClass = (UClass*)UnitSelector.Object->GeneratedClass;

Другие ссылки:

CDO Constructor: Failed to find Blueprint

https://answers.unrealengine.com/questions/84880/cdo-constructor-failed-to-find-blueprint-ue-44.html

В конструкторе класса проигрывателя я использую ConstructorHelpers :: FObjectFinder, чтобы получить ссылку на класс анимации проекта:

static ConstructorHelpers::FObjectFinder<UAnimBlueprint> finderAnim(TEXT("AnimBlueprint'/Game/MixamoAnimPack/Mixamo_Adam/Anims/MixamoAnimBP_Adam.MixamoAnimBP_Adam'"));

Затем я вызываю метод SetAnimClass ():

if (finderAnim.Succeeded())
    PlayerMesh->SetAnimClass(finderAnim.Object->GetAnimBlueprintGeneratedClass());

Все работает в редакторе UE4, но когда я начал упаковывать проект, что-то пошло не так, и я получил ошибку:

> PackagingResults: Warning: Error: CDO Constructor (Enemy): Failed to find /Game/MixamoAnimPack/Mixamo_Mortimer/Anims/MixamoAnimBP_Mortimer.MixamoAnimBP_Mortimer

Есть решение этой проблемы, или я должен создать класс проекта игрока и выбрать там анимацию?

2 ответа

Лучший ответ

Здесь похожий вопрос на форуме Unreal Engine.

Это предлагаемое решение:

Добавление «_C» в конце имени файла и обработка файла как «UClass» делает работу более гладкой. Теперь он работает правильно как в редакторе, так и в упакованной игре.

Таким образом, ваша инициализация finderAnim будет выглядеть так:

static ConstructorHelpers::FObjectFinder<UClass> finderAnim(TEXT("AnimBlueprint'/Game/MixamoAnimPack/Mixamo_Adam/Anims/MixamoAnimBP_Adam.MixamoAnimBP_Adam_C'"));

PS: Пройдите через ответ Джеймса (Ведущий программист — UE4 Animation / Physics / Audio Team) на этот поток, чтобы понять его более четко.


1

brc-dd
3 Июн 2020 в 15:16

Другое, возможно, более надежное решение — использовать FClassFinder.

static ConstructorHelpers::FClassFinder<UAnimInstance> finderAnim(TEXT("/Game/MixamoAnimPack/Mixamo_Adam/Anims/MixamoAnimBP_Adam"));

После чего вы можете просто

PlayerMesh->SetAnimClass(finderAnim.Class);


0

Rotem
3 Июн 2020 в 19:48

I’m trying to get started developing for the Quest 2 on my Mac. I’m new to Android, UE4 and the Oculus Quest 2.

I’ve followed the instructions to build the Oculus fork of UE4 from source, installed Android Studio and set things up.

I did have to modify the UE4 source to get it to compile. See PR #108 to github.com/Oculus-VR/UnrealEngine/pull/108 (I’m not allowed to post proper links yet). I also had an issue with a type -P command in SetupAndroid.command failing because the default Mac shell zsh doesn’t appear to support the -P option to type. The two things make me wonder if developing on a Mac is actively being supported?

I have been able to build the sample template project in UE4.

LogPlayLevel: Running: /Users/erland/Library/Android/sdk/platform-tools/adb -s <serial> shell am start -n com.YourCompany.QuestOS/com.epicgames.ue4.GameActivity

LogPlayLevel:   Starting: Intent { cmp=com.YourCompany.QuestOS/com.epicgames.ue4.GameActivity }

In the headset I first see the three dots, and then just a «black» world.

At some point during troubleshooting, I got some messages indicating the .obb file was not found, and download of it was starting which might have 

I’m running Android Studio 3.6.3, UE 4.25 from source, MacOS 10.15.7, XCode 12.4, Oculus VR Plugin version 1.55.0.

Manually starting the code using adb shell, then «am start -n com.YourCompany.QuestOS/com.epicgames.ue4.GameActivity» and then «logcat«, I get the following 

02-15 10:49:56.447  9320  9354 D UE4     : [2021.02.15-09.49.56:447][  0]LogStreaming: Error: Couldn’t find file for package /OculusVR/Materials/PokeAHoleMaterial requested by async loading code. NameToLoad: /OculusVR/Materials/PokeAHoleMaterial

02-15 10:49:56.447  9320  9354 D UE4     : [2021.02.15-09.49.56:447][  0]LogStreaming: Error: Found 0 dependent packages…

02-15 10:49:56.448  9320  9354 D UE4     : CDO Constructor (OculusResourceHolder): Failed to find /OculusVR/Materials/PokeAHoleMaterial

02-15 10:49:56.448  9320  9354 D UE4     : [2021.02.15-09.49.56:448][  0]Error: CDO Constructor (OculusResourceHolder): Failed to find /OculusVR/Materials/PokeAHoleMaterial

02-15 10:49:56.448  9320  9354 D UE4     : 

02-15 10:49:56.448  9320  9354 D UE4     : [2021.02.15-09.49.56:448][  0]LogHMD: Error: Unable to load PokeAHoleMaterial

02-15 10:49:56.449  9320  9354 D UE4     : [2021.02.15-09.49.56:449][  0]LogStreaming: Error: Couldn’t find file for package /OculusVR/Materials/OculusMR_ChromaKey requested by async loading code. NameToLoad: /OculusVR/Materials/OculusMR_ChromaKey

02-15 10:49:56.449  9320  9354 D UE4     : [2021.02.15-09.49.56:449][  0]LogStreaming: Error: Found 0 dependent packages…

02-15 10:49:56.450  9320  9354 D UE4     : [2021.02.15-09.49.56:450][  0]LogUObjectGlobals: Warning: Failed to find object ‘Material None./OculusVR/Materials/OculusMR_ChromaKey’

02-15 10:49:56.450  9320  9354 D UE4     : [2021.02.15-09.49.56:450][  0]LogMR: Warning: Invalid ChromaKeyMaterial

02-15 10:49:56.450  9320  9354 D UE4     : [2021.02.15-09.49.56:450][  0]LogStreaming: Error: Couldn’t find file for package /OculusVR/Materials/OculusMR_OpaqueColoredMaterial requested by async loading code. NameToLoad: /OculusVR/Materials/OculusMR_OpaqueColoredMaterial

02-15 10:49:56.450  9320  9354 D UE4     : [2021.02.15-09.49.56:450][  0]LogStreaming: Error: Found 0 dependent packages…

02-15 10:49:56.451  9320  9354 D UE4     : [2021.02.15-09.49.56:451][  0]LogUObjectGlobals: Warning: Failed to find object ‘Material None./OculusVR/Materials/OculusMR_OpaqueColoredMaterial’

02-15 10:49:56.451  9320  9354 D UE4     : [2021.02.15-09.49.56:451][  0]LogMR: Warning: Invalid OpaqueColoredMaterial

02-15 10:49:56.500  9320  9354 D UE4     : [2021.02.15-09.49.56:500][  0]LogAudioCaptureCore: Display: No Audio Capture implementations found. Audio input will be silent.

02-15 10:49:56.501  9320  9354 D UE4     : [2021.02.15-09.49.56:500][  0]LogAudioCaptureCore: Display: No Audio Capture implementations found. Audio input will be silent.

02-15 10:49:56.516   737   737 E WifiHAL : handleResponse: OTHER_RX_MULTICAST_CNT not found

02-15 10:49:56.521   737   737 E WifiHAL : wifi_get_ring_data: Error -5 happened. 

02-15 10:49:56.521  1026  3833 E WifiVendorHal: getRingBufferData(l.1675) failed {.code = ERROR_INVALID_ARGS, .description = }

02-15 10:49:56.555  1026  3833 D wifi-jni: no kernel logs

02-15 10:49:56.595  9320  9354 D UE4     : [2021.02.15-09.49.56:595][  0]LogAISub: UAISubsystem AISubsystem (0x9f344160), frame # 0

02-15 10:49:56.596  9320  9354 D UE4     : [2021.02.15-09.49.56:596][  0]LogAISub: UAISubsystem AIPerceptionSystem (0xc5893b00), frame # 0

02-15 10:49:56.599  9320  9354 D UE4     : [2021.02.15-09.49.56:599][  0]LogAISub: UAISubsystem EnvQueryManager (0x9ff25100), frame # 0

02-15 10:49:56.601   688  9526 E ResolverController: No valid NAT64 prefix (100, <unspecified>/0)

02-15 10:49:56.609   688  9528 E ResolverController: No valid NAT64 prefix (100, <unspecified>/0)

02-15 10:49:56.616   688  9530 E ResolverController: No valid NAT64 prefix (100, <unspecified>/0)

02-15 10:49:56.616  9320  9354 D UE4     : [2021.02.15-09.49.56:616][  0]LogUObjectBase: Warning: ————— Default Property warnings and errors:

02-15 10:49:56.616  9320  9354 D UE4     : [2021.02.15-09.49.56:616][  0]LogUObjectBase: Warning: Error: CDO Constructor (OculusResourceHolder): Failed to find /OculusVR/Materials/PokeAHoleMaterial

02-15 10:49:56.616  9320  9354 D UE4     : 

I think perhaps the PokeAHoleMaterial is related to the OculusVR Plugin in UE4. I have enabled the plugin, but the plugin is not showing up under «Plugins» in the project settings. I saw a post saying to add the  /OculusVR/Materials to the «Additional Asset Directories to Cook». But there is no «/OculusVR/Materials» that can be selected, and I’m wondering if this is due to the plugin not working completely?

Понравилась статья? Поделить с друзьями:
  • Error cannot use throw with exceptions disabled
  • Error by add sms task
  • Error arthur distone скачать песню
  • Error adding friend please try again стим что делать
  • Error adding friend communication between you and this user has been blocked