inflearn logo
강의

Course

Instructor

[Rookiss University] UE5 Lyra Clone Coding (Haker)

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

Resolved

78

siefn293

4 asked

0

안녕하세요 강의 듣는 수강생입니다.! 먼저 좋은 강의 만들어 주셔서 정말 감사드립니다.

강의를 들으면서 Lyra 구조에 대해 몇가지 오랫동안 고민 해봤습니다. 강의를 놓친 부분이 있을수 있겠지만 아무래도 많이 복잡한 구조다 보니까 제가 생각한 답이 맞는지 아직 풀리지 않는 의문에 대해 궁금해서 이렇게 글을 쓰게 되었습니다.


  1. Experience에 Game Feature Action을 넣는 이유가 뭔가요?

    • ShooterCore에서는 공통적으로 사용하는 Game Feature Action을 두고,

      ShooterCore 기반의 (점령전, 데스매치 등등) 그리고 여러 모드마다 서로 다른 action 구성들은 experience를 통해 동적으로 적용하기 위한 이유인건가요?


  2. Common UI 관련

    • Lyra에서는 UI 추가 방식이 크게 두 가지라고 생각이 들었는데 이 방식이 맞을까요?

      1. CommonUIExtensions의 static 함수 PushContentToLayer_ForPlayer 방식

      2. Game Feature의 Add Widget Action 방식

        이렇게 이해하면 맞나요?

        1. 이 안에서도 extension의 CreateEntryInternal를 통해 위젯 최종 생성)

    • Add Widget Action 방식은 Experience나 Game Feature 로딩 시 처음부터 상시 유지되는 UI에 주로 쓰이는 것 같은데 그렇다면 해당 Feature Action 방식에서도 레이어 태그를 구분하는 이유는 무엇인가요? (action에서 layout 추가시 Game, GameMenu, Menu, Modal 태그를 추가하는 부분)

    • 사실상 필요한 부분이 HUD 밖에 없는 것 같은데 그래도 거의 쓰이지 않더라도 범용성을 위해 설계 된건가요?


  3. Lyra UI 생성 구조 이해 확인

    • 최종적으로 위 질문을 스스로 고민해보면서 이해한 Lyra의 UI 구조는 다음과 같습니다. 제가 이해한 구조가 맞는지 궁금합니다.!

    0단계. Primary Layout

    • 1단계. Game / Menu / GameMenu / Modal Layer Stack

      • 2단계. HUD Layout(PushContentToLayer_ForPlayer로 추가)

        • 3단계. PointWidget

          • 4단계. 각종 Widget (UIExtension → CreateEntryInternal로 최종 추가)

      • 2단계. 실시간 추가/삭제되는 위젯(PushContentToLayer_ForPlayer로 추가)

 

다시 한번 좋은 강의 만들어주셔서 감사합니다. !

c++ unreal-engine

Answer 1

0

Liu

  1. 네 맞습니다 Experience 마다 Action을 다르게 하기 위해서 입니다.


  2. 2-1. 해당 Experience에 무조건 존재하면 Action을 통해 추가적인 부분은 PushContentToLayer_ForPlayer 함수를 이용해주시면 될 것 같습니다.

    2-2. 간단한 게임에서는 뭐 하나로 하셔도 되지만 게임이 커질수록 UI 관리가 정말 어려워져서 그러한 부분을 모듈화 하기 위한 방식입니다.

  3. 라이라 UI는 정말 복잡하고 AAA 게임을 고려할 만큼 모듈화를 해놔서 함수 호출로 기억하시기 보다는 말씀하신 순서인
    PrimaryLayout -> HUD Layout -> UIExtension -> Widget 이 정도 순서로 기억하시고
    이해하신 후에 프로젝트에 맞게 수정하시는걸 추천드립니다.
    사실 이 메커니즘이 핵심입니다.

AddGameFrameworkComponentReceiver vs AddExtensionHandler

0

5

0

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

0

51

2

.

0

56

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

73

2

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

0

60

2

Experience 재시작

0

77

2

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

0

79

2

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

0

201

1

FPerContextData에 대해 질문이 있어요

0

47

2

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

0

66

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

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

0

74

2