인프런 커뮤니티 질문&답변
ABItemBox 아이템 에셋 배열이 비어있는 경우 크래쉬
작성
·
77
·
수정됨
0
LoginId:a941906b4a64d255e61742bb3c03f580
EpicAccountId:06c1d8e5195c4b94839c2f03669096c0
Assertion failed: (Index >= 0) & (Index < ArrayNum) [File:D:\Epic Games\UE_5.4\Engine\Source\Runtime\Core\Public\Containers\Array.h] [Line: 758] Array index out of bounds: 0 into an array of size 0
UnrealEditor_ArenaBattle!AABItemBox::PostInitializeComponents() [C:\Users\jinhy\Desktop\Unreal\Inflearn\UE5Part2\ArenaBattle\Source\ArenaBattle\Item\ABItemBox.cpp:54]
UnrealEditor_Engine
UnrealEditor_Engine
강의 내용 중 ABItemPotionData와 ABItemScrollItemData 클래스를 생성한 뒤 코드를 똑같이 입력하고 에디터 실행했더니 위 에러 메시지와 함께 에디터가 열리지 않고 있습니다.
DefaulGame.ini의 셋팅도 문제 없습니다.
+PrimaryAssetTypesToScan=(PrimaryAssetType="ABItemData",AssetBaseClass="/Script/ArenaBattle.ABItemData",bHasBlueprintClasses=False,bIsEditorOnly=False,Directories=((Path="/Game/ArenaBattle/Item")),SpecificAssets=,Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=Unknown))
bOnlyCookProductionAssets=False
bShouldManagerDetermineTypeAndName=False
bShouldGuessTypeAndNameInEditor=True
bShouldAcquireMissingChunksOnLoad=False
bShouldWarnAboutInvalidAssets=True
MetaDataTagsForAssetRegistry=()
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Item/ABItemData.h"
#include "GameData/ABCharacterStat.h"
#include "ABScrollItemData.generated.h"
/**
*
*/
UCLASS()
class ARENABATTLE_API UABScrollItemData : public UABItemData
{
GENERATED_BODY()
public:
UABScrollItemData();
FPrimaryAssetId GetPrimaryAssetId() const override
{
return FPrimaryAssetId("ABItemData", GetFName());
}
public:
UPROPERTY(EditAnywhere, Category = Stat)
FABCharacterStat BaseStat;
};
// Fill out your copyright notice in the Description page of Project Settings.
#include "Item/ABScrollItemData.h"
UABScrollItemData::UABScrollItemData()
{
Type = EItemType::Scroll;
}
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Item/ABItemData.h"
#include "ABPotionItemData.generated.h"
/**
*
*/
UCLASS()
class ARENABATTLE_API UABPotionItemData : public UABItemData
{
GENERATED_BODY()
public:
UABPotionItemData();
FPrimaryAssetId GetPrimaryAssetId() const override
{
return FPrimaryAssetId("ABItemData", GetFName());
}
public:
UPROPERTY(EditAnywhere, Category = Stat)
float HealAmount;
};
// Fill out your copyright notice in the Description page of Project Settings.
#include "Item/ABPotionItemData.h"
UABPotionItemData::UABPotionItemData()
{
Type = EItemType::Potion;
}
ABItemBox.cpp 의 에셋 매니저에서 에셋을 불러올 때 배열이 비어있는 것 같습니다.
void AABItemBox::PostInitializeComponents()
{
Super::PostInitializeComponents();
UAssetManager& Manager = UAssetManager::Get();
TArray<FPrimaryAssetId> Assets;
Manager.GetPrimaryAssetIdList(TEXT("ABItemData"), Assets);
ensure(0 < Assets.Num());
int32 RandomIndex = FMath::RandRange(0, Assets.Num() - 1);
FSoftObjectPtr AssetPtr(Manager.GetPrimaryAssetPath(Assets[RandomIndex]));
if (AssetPtr.IsPending())
{
AssetPtr.LoadSynchronous();
}
Item = Cast<UABItemData>(AssetPtr.Get());
ensure(Item);
Trigger->OnComponentBeginOverlap.AddDynamic(this, &AABItemBox::OnOverlapBegin);
}
깃헙에 올려주신 코드와 비교해보았는데 다른 부분이 없어서 어느 것이 문제인지 알고 싶습니다.
에디터가 열리지 않아서 설정을 확인할 수 없습니다。
추가로, 올려주신 프로젝트를 다운받아 실행했더니 똑같은 문제가 발생했습니다..
답변 2
0
음 이전에도 비슷한 질문이 있었는데, 아마 설정 문제가 아닌가 생각합니다.
영상대로 설정한 후 에디터를 재시작해보고 그래도 안된다면 혹시 깃헙 소스코드와 비교해보시겠어요?
https://inf.run/cpCUw
0
안녕하세요, 인프런 AI 인턴입니다. Henzee님께서 경험하신 문제는 UAssetManager를 통해 특정 PrimaryAssetType(“ABItemData”)에 해당하는 에셋 목록을 얻을 때 에셋 배열이 비어 크래쉬가 발생하는 상황입니다.
이 문제는 주로 프로젝트 설정이나 애셋에 대한 레퍼런스가 올바르게 설정되지 않은 경우 발생합니다. 여러분이 가진 코드는 정상적으로 보이나, 에셋 매니저가 올바르게 설정되어 있지 않을 수 있습니다. 이를 해결하기 위한 몇 가지 확인 사항을 알려드립니다:
PrimaryAssetType 등록 확인: 언리얼 엔진에서
PrimaryAssetId를 사용하려면, 에디터의 프로젝트 설정에서PrimaryAssetType을 올바르게 지정해야 합니다. ‘AssetManager’ 탭을 열고"ABItemData"타입이 제대로 등록되어 있는지 확인하세요.애셋 경로 확인:
UAssetManager가 값을 가져오기 위해서는 지정된 경로에 실제로 애셋이 존재해야 합니다. 콘텐츠 브라우저를 통해 에셋의 경로가 정확한지 확인하십시오. 특히 상대 경로나 파일명이 달라질 수 있습니다.애셋 로드 상태 확인:
Manager.GetPrimaryAssetIdList함수가 실패할 경우 엔진 내에서 별도의 로그나 경고가 표시될 수 있습니다. 에디터의 출력 로그를 통해 적절한 정보를 얻으실 수 있습니다.
아래 링크에는 유사한 문제를 다루고 있는 질문들이 있습니다. 확인해 보시길 권장드립니다:
- 아이템박스에서 배열 빈경우, - 이 링크에서도 비슷한 문제를 다루고 있으며, 프로젝트 설정과 애셋 경로를 점검하는 방법을 제안하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





