작성
·
128
·
수정됨
0
아래와 같은 지점에서 저는 문제가 발생을 계속 하고 있는데 혹시 이유를 알수 있을까요?? 모듈러 로그를 활성화 하여 ContinueInitStateChain 쪽 로그 입니다.
LogModularGameplay: Verbose: ContinueInitStateChain: Cannot transition B_SimpleHeroPawn_C_0:Hero (role 3) from InitState.DataAvailable to InitState.DataInitialized
LogModularGameplay: Verbose: ContinueInitStateChain: Transitioning B_SimpleHeroPawn_C_0:PawnExtension (role 3) from InitState.DataAvailable to InitState.DataInitialized
LogModularGameplay: Verbose: ContinueInitStateChain: Transitioning B_SimpleHeroPawn_C_0:PawnExtension (role 3) from InitState.DataInitialized to InitState.GameplayReady
LogModularGameplay: Verbose: ContinueInitStateChain: Cannot transition B_SimpleHeroPawn_C_0:Hero (role 3) from InitState.DataAvailable to InitState.DataInitialized
LogModularGameplay: Verbose: ContinueInitStateChain: Cannot transition B_SimpleHeroPawn_C_0:Hero (role 3) from InitState.DataAvailable to InitState.DataInitialized
Cannot transition 이 발상한 조건문 체크는
// DataAvailable -> DataInitialized
if (CurrentState == InitTags.InitState_DataAvailable && DesiredState == InitTags.InitState_DataInitialized)
{
// PawnExtensionComponent가 DataInitialized될 때까지 기다림 (== 모든 Feature Component가 DataAvailable인 상태)
//return CLMPS && Manager->HasFeatureReachedInitState(Pawn, UCLMPawnExtensionComponent::NAME_ActorFeatureName, InitTags.InitState_GameplayReady);
return CLMPS && Manager->HasFeatureReachedInitState(Pawn, UCLMPawnExtensionComponent::NAME_ActorFeatureName, InitTags.InitState_DataInitialized);
}
라이라 원본으로 정상 작동을 진행하는데 코드를 몇번을 수정을 하여도 진척도가 없는데 혹시 원인을 알수 있을까요?
InitState_GameplayReady 태그를 사용할 경우에는 정상 동작 합니다..
답변 2
0
넵 GameInstance 정의 부분 입니다.
void UCLMGameInstance::Init()
{
Super::Init();
// 앞서 정의한 InitState의 GameplayTags 등록:
UGameFrameworkComponentManager* ComponentManager = GetSubsystem<UGameFrameworkComponentManager>(this);
if (ensure(ComponentManager))
{
const FCLMGameplayTags& GameplayTags = FCLMGameplayTags::Get();
// 초기화 순서를 정의 하는곳
//RegisterInitState 함수는 GameManager Init 함수 에서만 정의를 해야함 필수!
// -> 컴포넌트 생성 단계 순서가 보장할수없어 해당부분을 정의하기 위한방법.
ComponentManager->RegisterInitState(GameplayTags.InitState_Spawned, false, FGameplayTag());
ComponentManager->RegisterInitState(GameplayTags.InitState_DataAvailable, false, GameplayTags.InitState_Spawned);
ComponentManager->RegisterInitState(GameplayTags.InitState_DataInitialized, false, GameplayTags.InitState_DataAvailable);
ComponentManager->RegisterInitState(GameplayTags.InitState_GameplayReady, false, GameplayTags.InitState_DataInitialized);
}
}
CLMAssetManager 로 상속해서 만들었습니다.
혹시 풀소스를 원하시면 깃허브로 공유는 가능합니다.
0
안녕하세요, 인프런 AI 인턴입니다. Walnut님.
ModularGameplay 시스템에서 발생하는 문제와 관련된 질문이군요. 비슷한 문제와 관련된 답변이 있습니다. 해당 답변들이 도움이 될 수 있기를 바랍니다.
특히, 첫 번째 링크에서 상속과 관련된 언리얼 엔진 블루프린트의 동작 방식을 확인해 보시고, 두 번째 링크에서 객체 초기화와 관련된 문제를 확인해 보시면 도움이 될 것 같습니다.
일반적으로, ModularGameplay의 순서와 관련된 문제는 다음과 같은 사항들을 확인해 보면 해결에 도움이 될 수 있습니다:
데이터 초기화 순서 문제:
InitState.DataAvailable
에서 InitState.DataInitialized
로 전환하는데 실패하고 있습니다. 이 문제는 데이터 초기화 순서가 맞지 않을 때 발생할 수 있습니다.모듈 종속성 확인:
UE5
에서는 여러 모듈이 서로 종속적일 수 있습니다. 종속성을 명확하게 정의하고 올바른 순서로 초기화되도록 설정이 필요합니다.Feature Component 상태 확인:
Manager->HasFeatureReachedInitState
함수가 올바르게 작동하는지 확인하십시오. 특히, 모든 Feature Component가 DataAvailable
상태에 있는지 확인해 보세요.질문하신 내용을 바탕으로 위에 제공된 링크들에서 더 많은 정보를 찾아보시면 좋을 것 같습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
AssetManager에 있는 StartInitialLoading 쪽에 태그를 등록 했습니다.