inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

6강 : 캐릭터 어트리뷰트 설정

GA에서 Attribute를 가져올때 발생하는 C6011 Warning과 관련하여 질문드립니다.

117

eric1306

작성한 질문수 6

0

안녕하세요 교수님.

좋은 퀄리티의 강의를 제공해주셔서 정말 감사드립니다.

저는 현재 언리얼 엔진 5.4.4, Visual Studio 2022 17.12.3 버전으로 강의를 수강하고 있습니다.

다름이 아니고 "6강 : 캐릭터 어트리뷰트 설정"의 35분 즈음에 Source와 Target의 AbilitySystemComponent를 가져오고, 해당 ASC에서 AttirbuteSet을 가져오는 부분을 구현하던 도중, 초록색 줄이 나오면서 C6011 Warning이 발생하였습니다.

https://learn.microsoft.com/ko-kr/cpp/code-quality/c6011?view=msvc-170

이는 null포인터 역참조에 의한 경고임을 확인했습니다.

근데, SourceASC의 경우 checked 함수를 통해서 점검하고 가져오기 때문에 null포인터가 발생할 수 없지 않나요?

아니면 check함수가 unreal에서만 사용하는 함수이기 때문에 C++은 이를 인지하지 못하여 저렇게 디레퍼런싱 경고를 띄워주는 것일까요?

unreal-engine ue-blueprint unreal-engine5 언리얼-c++ gas

답변 2

1

이득우

check는 항상 발동되는 것이 아닌, DO_CHECK 전처리 값에 따라 실행될 수도 무시될 수도 있습니다.
주로 디버깅시 발동되며, 테스트가 충분히 진행된 릴리즈 단계에서는 성능 향상을 위해 무시하는 용도로 활용됩니다. 그렇기에 컴파일러는 해당 구문으로 판단을 의존할 수는 없겠죠.
가장 확실한 것은 if문을 넣어주는건데, 사실 개인적인 취향이긴 한데, 코드가 조금 더 복잡해지더라도 warning은 가급적 없애는게 마음이 편해서 그쪽을 주로 선호하긴 합니다.

0

eric1306

감사합니다!

0

인프런 AI 인턴

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

언리얼 엔진을 통해 프로그래밍을 배우는 과정에서 C6011 경고는 비교적 흔한 문제입니다. 이 경고는 실제로 null 포인터를 역참조했을 가능성을 나타내지만, Unreal Engine의 check 함수는 런타임에서만 검사를 수행하기 때문에 컴파일러는 여전히 잠재적인 null 포인터 사용을 의심할 수 있습니다.

경고 메시지를 무시하고 코드가 정상적으로 작동하는 것을 확인했다면, 이는 주로 컴파일러가 Unreal Engine의 특정한 런타임 검사를 인식하지 못하기 때문입니다. 그렇다고 하더라도 이러한 경고를 무시하는 것은 좋은 방법이 아닙니다. 경고를 제거하기 위해서는 포인터가 null인지 명시적으로 확인하는 코드를 추가하는 것이 좋은 습관입니다.

이 문제에 대한 더 많은 이해를 위해, 비슷한 질문 답변 포럼 URL을 참고하실 수 있습니다. 이 링크는 강의와 비슷한 문제를 해결하는 데 도움이 될 것입니다.

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

OnInterruptedCallback()으로 몽타주가 중간에 취소될 경우 CancelAbility를 호출하는게 맞을까요 ?

0

40

1

HasMatchingGameplayTag 역활이 조금 이해가 안갑니다.

0

47

1

캐릭터 스탯 초기 설정 방법 질문

0

89

2

언라얼 공식 홈페이지 튜토리얼 강의에 질문 있습니다

0

87

2

StartAbility, StartInputAbility 둘 다 GiveAbility를 호출해야하나요?

0

77

2

AnimNotify 구현 질문

0

107

2

[6강] ShowDebug에서 Attributes for avater가 변하지 않아요..

0

82

2

4강에서 콤보 공격시 다음 공격을 할 경우 ActivateAbility가 자동으로 발동되는 이유

0

114

2

9강 44:59 부분에서 질문이 있습니다.

0

83

2

8강 24:22 CurrentAttributeSet 질문입니다.

0

69

2

ASC 에서 AttributeSet 함수에 대한 mutable 반환 함수가 없는 이유

0

88

2

SetupGASInputComponent 함수 호출위치가 이해가안갑니다.

0

147

3

[GAS] Player State에 대해 궁금한 점이 있습니다.

0

138

2

AnimNotify를 GA에서 받는방법이 있을까요?

0

88

2

ABP의 skeleton 오류

0

118

1

장판스킬을 만들때 콜리전설정

0

175

2

어빌리티의 쿨다운 GameEffect에 대하여

0

265

2

GAS 구조로 멀티 플레이 게임을 제작할려고 하는데요

0

233

2

5.4버전 기준으로 Remove Gameplay Effect With Tags가 안 보입니다.

0

287

3

8강의 수업 내용들 중 이해가 잘 안가는 부분들이 있습니다.

0

211

2

7강 GE로 NonPlayer의 어트리뷰트셋 값을 초기화시키는 것에 질문이 있습니다.

0

111

2

7강 정리했는데 검토부탁드려요

0

127

1

5강 정리해봤는데 검토부탁드립니다.

0

136

2

4강의 CreateTask 함수 질문입니다,

0

160

2