게시글
질문&답변
Extension 초기화 순서
이건 가능은 할 수는 있지만 완벽하게 보장은 되지 않습니다. 일단 생성자 단계에서 CreateDefaultObject를 이용해서 생성하게 되는데 언리얼은 CDO 관리를 일반적인 C++과 다르게 해서 항상 C++ 다음 순위로 초기화 되는 Blueprint에서 추가하는 것이 좋습니다.
- 0
- 2
- 26
질문&답변
이런 현상은 어떻게 고치나요?
Pivot 설정이나 Curve 데이터를 잘못 가져온 상황일 가능성이 있는 것으로 보입니다. 관련 내용을 다시 한 번 확인해 주시면 될 것 같습니다.
- 0
- 2
- 50
질문&답변
9주차 자료가 빠진것 같습니다.
기존 강의를 재편성하는 과정에서 6주차에 두 가지 내용이 통합되었습니다. 9주차 자료가 없어서 이에 따라 9주차와 10주차 자료를 하나로 합쳐 새로 업로드했습니다.
- 0
- 2
- 34
질문&답변
UDefaultGameFeaturesProjectPolicies 사용 하는 이유
GameFeatureSubsystem과 UDefaultGameFeaturesProjectPolicies는 각기 다른 목적과 역할을 가지고 있습니다! GameFeatureSubsystem은 GameFeature 시스템의 중앙 관리자 역할을 수행하며, GameFeature와 관련된 작업을 관리하는 데 사용됩니다. 예를 들어, AddComponent나 SendMessage와 같은 Action을 처리하고, 시스템 내에서 필요한 로직을 중앙에서 제어하는 역할을 합니다. 반면, UDefaultGameFeaturesProjectPolicies는 프로젝트 수준에서 GameFeature와 관련된 규칙과 정책을 정의하는 데 초점이 맞춰져 있습니다. 이름에서 알 수 있듯이 GameFeature가 로딩되었을 때 어떤 작업을 수행해야 하는지를 규정하는데, 라이라 게임의 사례를 보면 GameFeature 로딩 시 필요한 GameplayCue를 로드하도록 규칙을 설정하는 데 사용되고 있습니다.다시 한번 정리해보면 이 두 클래스는 구조적으로도 차이가 있습니다. GameFeatureSubsystem은 시스템 전반의 관리를 담당하는 중앙 집행 기관과 같은 역할을 하며, 여러 Action을 처리하는 데 중점을 둡니다. 반면, UDefaultGameFeaturesProjectPolicies는 특정 기능의 실행보다는 게임 전반의 규칙을 정하고 관리하는 데 더 큰 역할을 합니다. 이러한 설계를 통해 두 시스템이 각각의 목적을 충족하면서도 유기적으로 작동할 수 있도록 설계되었습니다.
- 0
- 2
- 34
질문&답변
ABP_Mannequin_Base 세팅 관련
강의에 나온 설정만 해주시면 됩니다.
- 0
- 2
- 45
질문&답변
장착 소켓 관련
구조는 최상위 스켈레탈 메시인 Invis를 기반으로 하며, 이 메시에 애니메이션이 적용되고 Quinn 메시와 Weapon 메시가 추가됩니다(결국 Quinn과 Weapon 모두 Actor). Invis 메시에 Actor를 장착하는 Cosmetic 시스템을 통해 Quinn 메시를 추가하고, Quinn 메시의 애니메이션은 Invis 메시의 Animation Copy From 기능을 사용하여 가져옵니다. 이 방식이 문제가 발생하지 않는 이유는 두 메시가 동일한 스켈레탈 구조를 가지기 때문입니다. 이러한 복잡한 구조를 사용하는 이유는 라이라는 네트워크를 많이 고려하여 만든 방식이라서 네트워크 최적화를 극대화하면서 높은 모듈성을 제공하기 위해서입니다.
- 0
- 1
- 30
질문&답변
ExtensionComponent의 CheckDefaultInitialization에 대해서
CheckDefaultInitializationForImplementers는 초기화 상태에 등록된 모든 Component의 CheckDefaultInitialization 메서드를 호출하여, Tick 검사를 하지 않고 PawnExtension을 제외한 다른 Component의 상태가 변경될 때 PawnExtension의 OnActorInitStateChanged가 호출되도록 동작합니다. 변경된 Component의 상태가 InitState_DataAvailable인 경우, CheckDefaultInitialization가 다시 호출되어 PawnExtension 자신과 모든 Component의 상태를 연쇄적으로 업데이트합니다. 마지막으로, PawnExtension을 제외한 다른 Component들은 자신들의 InitState_DataInitialized 단계로 업데이트하기 위해 PawnExtension이 먼저 InitState_DataInitialized로 업데이트되기를 기대하며, PawnExtension이 해당 단계로 업데이트되면 비로소 자신들도 InitState_DataInitialized 단계로 전환됩니다. 이를 통해 각 Component가 서로의 상태를 주고받으며 업데이트를 지속적으로 전파하는 구조를 형성합니다.구조가 많이 어려운 편이라서 명확하게 순서를 보고 싶으시면 각 상태 업데이트 부분에 Log를 설정해놓으시면 좀 더 이해가 되실꺼에요
- 0
- 2
- 42
질문&답변
Core Redirect 에서 FootStepEffectTagModifier 블루프린트 컴파일 오류
FootStepEffectTagModifier를 확인해보니 AnimationModifier를 상속받고 있는데 해당 클래스의 경우 엔진의 기본 클래스인거 같습니다. Migrate 과정에서 뭔가 누락된거 같아서 다시 해보시면 될 것 같습니다.
- 0
- 2
- 26
질문&답변
AddExtensionHandler 질문
Lyra의 경우 몬스터 같은 개념이 없는 FPS라서 이렇게 작업했지만 말씀하신대로 몬스터 같은 개념이 있다면 PlayerCharacter의 StaticClass를 사용하면 더 좋겠죠 ㅎㅎ
- 0
- 1
- 28
질문&답변
Experience와 PawnExtension 디버깅
넵 결국 브레이크 포인트로 하는 방법 밖에 없습니다 추가적으로 버그가 발생 할 것 같은 곳에 check를 넣어서 저는 진행합니다.
- 0
- 2
- 27