UnrealEngine 12

[UE5] GAS / AbilitySystemComponent 겉핥기

GameplayAbility와 관련된 클래스, 기능등을 사용하기 위해서 먼저 플러그인을 추가해야한다. 플러그인에서 Ability를 검색하면 GameplayAbilities가 있는데 체크 후 지금 재 시작을 눌러 에디터를 실행해주자. C++ 클래스를 새로 추가해보면 AbilitySystemComponent가 검색에 뜨는 것을 볼 수 있다. 또한 "프로젝트명.Build.cs" 파일에서 PrivateDependencyModuleNames.AddRange를 통해 사용할 모듈을 추가해주어야 한다. 추가하지 않으면 아래와같은 에러를 뱉어낸다. AbilitySystemComponent https://docs.unrealengine.com/5.0/en-US/gameplay-ability-system-component-..

[UE5] GAS / GameplayAbility 게임플레이 어빌리티

GameplayAbility https://docs.unrealengine.com/5.0/ko/using-gameplay-abilities-in-unreal-engine/ 게임플레이 어빌리티 Gameplay Ability 클래스 개요입니다. docs.unrealengine.com 게임에서 어떠한 능력, 행동 등 다양한 것을 어빌리티로 정하고 그걸 GameplayAbility로 구현할 수 있다. 언리얼 Lyra 프로젝트에서는 LyraAbilitySet.h에 데이터화 하여 관리하는 방식을 택한것 같은데, 이건 아직 보는 중이니 넘어가겠다. Lyra에서는 Jump를 GameplayAbility로 구현해두었다. 게임플레이 어빌리티는 자체 리플리케이트도 가능하고 RPC 호출도 가능하다. 단, 리플리케이트를 사용하..

[UE5] GAS / GameAbilitySystem 겉핥기(feat. Lyra)

언리얼5에 들어와서 유독 GAS에 대해 강조를 하는 영상을 봤다. 언리얼 엔진팀이 많은 걸 시도하는 것 같아서 메타 휴먼, 퀵셀브릿지도 사용해보고, 웨비나에서 레벨, 라이트 등의 강좌를 진행하기에 매주 화요일 열심히 들어보았다. 다시 보기가 가능하다는 사실을 알고부터는 조금 대충 보기도 했다. 다시 보면 되니까.. 언리얼에서 Lyra라는 샘플 프로젝트를 공유해주고 있는데 샘플 이상의 가치를 한다고 해서 들여다 보고 있다. 열어보면 GameAbilitySystem을 활용해서 구현되어 있는데 이 GameAbilitySystem을 어떻게 사용하고 있는지 하나씩 다 뜯어보기엔 시간이 좀 걸릴 것 같다.. GAS 의 장점은 아마 데디를 사용하는 멀티게임의 경우 데디를 GAS라는 프레임워크 활용을 통해 개발자가 덜..

[UE5] 언리얼 프로퍼티 시스템 ?

UPROPERTY(), UCLASS() ,USTRUCT() ,UENUM() ,UFUNCTION() 언리얼 C++ 작업을 하면서 많이 봤던 UCLASS, UPROPERTY. 사실 UPROPERTY를 사용해서 지정자를 넣어주면 블루프린트에서 사용할 수 있다. 라고만 생각해왔던 때가 있었다. 처음 언리얼을 접했을 때 튜토리얼 따라하기, 구글링으로 찾아서 방법 따라하기 등을 많이 했었기에 그냥 그런가보다 하고 생각했다. 하지만 이제는 제대로 알고 써야할 때가 온 것 같아 조금씩 찾아보며 공부하고 있다. 언리얼 프로퍼티 시스템, 언리얼 리플렉션, 리플렉션 시스템 등으로 많은 정보를 찾을 수 있었다. 언리얼에서 말하는 프로퍼티 시스템이 뭘까? 공식 문서를 찾아서 봤을 때, 사실 번역이 이상한건지 말이 어려운건지 1..

[UE5] UScrollBox에 버튼이 들어있는 위젯 스크롤이 안될 때

UMG를 만들어서 확인하는데 ScrollBox 혹은 UListview와 같은 스크롤 기능이 있는 위젯에서 갑자기 스크롤이 되지 않는 경우가 생겼다. 마우스 휠을 움직이면 스크롤이 되는데 마우스 클릭후에 움직이려니 간헐적으로는 스크롤이 되는데, 계속 스크롤이 되지 않는 현상이 발생해서 원인을 찾아봤다. 원인은 버튼이 클릭되었음을 인지 하기 위한 이벤트 처리와, 스크롤박스의 스크롤이 되기 위한 조건 응답이 충돌하기 때문이었다. Button detail에 Advanced라는 카테고리에서 Click Method, Touch Method 세팅을 알맞는 방법으로 바꾸었더니 해결됐다. 자세한 내용은 아래에.. 내가 만들고 있는 위젯은 상품의 종류를 나열해 보여줄 수 있는 리스트다. 아직 리소스도, UI 구성도 없지만..

UnrealEngine/UMG 2023.01.26

[UE5] UMG 위젯 Visibility 종류와 차이점

위젯에는 Visibility 설정을 하는 곳이 있다. 위젯 하나를 클릭해서 디테일 패널을 내리다보면 Behavior 라는 카테고리 아래에 Visibility가 있을 것이다. 이름 그대로 이 위젯을 어떤 방식으로 보여주는 것인지 설정하는 곳이다. 크게는 보이는 것, 보이지 않는 것 으로 나눌 수 있지만 각 타입마다 기능이 다르다. 이걸 그냥 설명만 봤을 때는 그렇구나 하고 넘어갔는데 설정에 따라서 간혹 버그가 일어나는 경우도 있었다. 그래서 사용법과 그 예시를 조금씩 같이 적어놓으려고 한다. 참고로 코드에서는 SetVisibility라는 함수를 통해 타입을 설정할 수 있다. ESlateVisibility라는 enum타입으로 정의한다. Visibility 기능과 차이점 언리얼 코드에서 SlateWrapper..

UnrealEngine/UMG 2023.01.15

[UE5] Shop UMG - C++ 코드 연동하기

이전 글에서 만들었던 UMG를 이제 작동하도록 만들려고 한다. 블루프린트를 일부 사용하고, 데이터 저장과 로직이 들어가야 하는 부분은 C++ 을 사용해서 작업할 예정이다. 오늘은 이 큰 Shop을 하기전에 커스텀해서 만들었던 Tab을 먼저 작업하려고 한다. Tab 의 UMG 하이어라키는 이렇게 구현되어있다. 이 Tab UMG가 할 역할은 다음과 같다. 1. Shop에서 각 탭마다 부여받는 이름과 번호가 존재한다. 2. 클릭된 Tab에 따라 다른 아이템을 보여줄 수 있도록 Clicked 된 탭이 몇 번인지 Shop UMG에 알려준다. 3. 클릭된 Tab은 On , 클릭되지 않은 Tab은 Off 상태를 유지할 것이다. 그래서 이 Tab은 데이터가 들어오면 어떤 이름을 세팅하고 현재 부여받은 내 번호가 몇 번..

UnrealEngine/UMG 2023.01.08