inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[Rookiss University] UE5 Lyra 클론 코딩 (Haker)

Common UI Frame #2

UGameUIManagerSubsystem::ShouldCreateSubsystem 이상한 것 같은데요

해결된 질문

74

Solution C

작성한 질문수 10

0


bool UGameUIManagerSubsystem::ShouldCreateSubsystem(UObject* Outer) const
{
	// 우선 DedicatedServer의 경우, GameUIManagerSubsystem을 활성화하지 않음
	if (!CastChecked<UGameInstance>(Outer)->IsDedicatedServerInstance())
	{
		// 만약 어떠한 Subsystem도 UGameUIManagerSubsystem을 상속받지 았다면, 해당 GameInstanceSubsystem은 활성화 안함
		TArray<UClass*> ChildClasses;
		GetDerivedClasses(GetClass(), ChildClasses, false);

		return ChildClasses.Num() == 0;
	}

	return false;
}
ChildClasses.Num() != 0;

if 안의 리턴문 이걸로 바꿔야 게임UI매니저 서브시스템을 상속받았을 때 create subsystem하게 하는 거 아닌가요?

이러면 서브클래스 안 만들었을때 빼고 안 만들어주는 거 아닌지요

c++ unreal-engine

답변 2

0

Liu

해당 클래스는 UI 관리에 대한 추상화 클래스라서 자식이 없을 때만 생성되는게 맞습니다.

대신 해당 클래스를 상속 받아 원하는 방식의 UI 시스템을 만들도록 설계되었습니다.

0

Solution C

아 현재 인스턴스로 존재하지 않으면 생성한다는 건가요? 아닌가?

HakUIManager가 이 클래스를 상속받았으니까 GetDerivedClasses한 결과가 1일거라서 생성이 안 되는 게 맞는거 아닌가 생각했는데.

0

Liu

네 그래서 UGameUIManagerSubsystem은 생성되지 않고 HakUIManager만 생성됩니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

Solution C님, 질문 주신 부분에 대해 설명 드리겠습니다. 함수 UGameUIManagerSubsystem::ShouldCreateSubsystem은 특정 조건에 따라 서브시스템을 생성할지 여부를 결정합니다. 코드의 목적과 로직은 서버의 유형과 상속 여부에 따라 서브시스템의 생성을 결정하는 데 있습니다.

현재 코드에서는 ChildClasses.Num() == 0일 경우에만 서브시스템을 생성하지 않도록 되어 있습니다. 즉, UGameUIManagerSubsystem을 상속받은 클래스가 없다면 서브시스템을 생성하지 않는다는 의미입니다.

따라서, 질문하신 것처럼 ChildClasses.Num() != 0으로 변경하면, UGameUIManagerSubsystem을 상속받은 클래스가 있을 경우에만 서브시스템을 생성하게 됩니다. 이 변경은 원하는 기능에 따라 맞는 수정일 수 있습니다. 결과적으로, 서브클래스가 존재할 때만 서브시스템을 생성하려는 의도라면 ChildClasses.Num() != 0으로 수정하는 것이 맞습니다.

아래는 관련 리소스입니다:
- 언리얼 엔진의 서브시스템 설명
- UE5의 서브클래스 처리 방법에 대한 예시

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

B_TeleportToUserFacingExperience가 추가로 생성되지 않습니다.

0

51

2

.

0

55

1

SpawnDefaultPawnAtTransform_Implementation이 호출되지 않습니다.

0

56

2

Input Subsystem 에서 오류가 발생합니다

0

62

1

7강 GameMode와 Modules관련 질문드립니다.

0

52

1

LyraFrontEnd 에서 로딩화면에서 넘어가지 않는 원인이 뭔지 질문드립니다.

0

81

2

리소스 이주했는데 안보이는데 어떻게 해야하나요?

0

84

3

TakeFromAbilitySystem 함수에서 Array 에 대한 remove 는 수행하지 않나요?

0

55

1

CircumferenceMarkerWidget의 bReticleCornerOutsideSpreadRadius 초기화 관련

0

58

1

Pawn 교체, Possess 후 위젯이 이전 값(상태)을 잘못 보여줄 때 처리법이 궁금합니다.

0

72

2

Pawnextension#3 9:19 질문이 있습니다.

0

60

2

Experience 재시작

0

77

2

Log 파트에서 Subtitution Macro Call 를 사용하는 방법이 무엇인가요?

0

79

2

설치후 빌드하는데 에러가 발생하고 인텔리센스도 잘 활성화되지 않습니다.

0

200

1

FPerContextData에 대해 질문이 있어요

0

47

2

OnGameFeatureActivating와 WorldContext관해 질문 있습니다.

0

66

1

GameFeature Action 및 Common UI Widget 생성 관련 질문

0

78

1

가비지컬렉션 관련 질문있습니다.

0

94

3

Travel관련해서 질문 있습니다.

0

59

1

IMC가 먹통이에요

0

83

2

PawnExtension #3 에서 말한 라이라 공식문서가 뭔가요?

0

64

1

PawnExtensionComponent::SetPawnData에서의 CheckDefaultInitialization

0

54

1

미니맵 제작

0

84

2

질문있습니다~~

0

59

1