분류 전체보기 115

[UE4] UPROPERTY

UPROPERTY 변수는 변수 지정자 및 선언 위에 사용하는데, 메타데이터와 같은 추가 설명자와 함께 표준 C++ 구문을 사용하여 선언됩니다. 속성(property)을 선언함으로써 엔진 및 에디터의 다양한 측면에서 작동하는 방식을 제어할 수 있습니다. UPROPERTY([specifier, specifier, ...], [meta=(key=value, key=value, ...)]) Type VariableName; Garbage Collection GC는 오브젝트 계층구조를 designated된 UPROPERTY들을 통해 여행합니다. root objects부터 시작하게 되는데 AddToRoot, RemoveFromRoot 메서드를 통해 handle되는 root object들을 말하는 것입니다. 이 여행..

UE4 2022.11.12
[UE4] Unrecognized type Error 해결법

때로는 내가 생각해서 뭔가를 제작하는 것보다 그대로 따라하는 것이 더 어려울 때가 있다. 모방이 반복되다보면 제대로 이해하지 못한 채 따라만 하게 되고, 오류가 생겼을 때 (스펠링 틀리거나, 매우 사소한 오류) 해결하기가 더 어려워지는 것 같다. 이번 오류는 반년간 언리얼을 공부했지만 처음 겪는 오류였고 구글링해도 정보가 거의 나오지 않거나 도움이 되지 않았다. 이말인 즉슨 다른 사람들도 거의 하지 않을만한 어이없는 오류라는 소리였고(경험상) 최대한 마음을 비우고 삽질을 시작했다. # 사실 언리얼에 무슨 오류가 났을 때 대부분은 다음과 같은 방법으로 해결된다. 1. 기다린다. (언리얼은 가끔 업데이트가 느려 오류가 생길 때가 있다, 그렇다고 1분이상 기다리진 말것..) 2. 헤더파일을 추가한다. (언리얼..

UE4 2022.11.12
[UE4] 캐릭터 스텟 컴포넌트 만들기

캐릭터 스텟 컴포넌트를 만들어 이를 캐릭터에 부착해 캐릭터 스텟에 대한 관리를 액터 컴포넌트가 일임하도록 기능을 구현해보자. 먼저 Actor Component를 부모로 하는 새로운 클래스를 하나 생성해준다. 그리고 MyCharacter클래스에 해당 컴포넌트를 멤버 변수로 선언한다. UPROPERTY(VisibleAnywhere, Category = Stat) class UMyCharacterStatComponent* CharacterStat; 선언한 변수에 새롭게 Object를 생성해 대입해준다. CharacterStat = CreateDefaultSubobject(TEXT("CHARACTERSTAT")); 액터의 PostInitializeComponents에 대응하는 컴포넌트의 함수는 Initializ..

UE4 2022.11.12
[UE4] CSV 데이터 불러오기

엑셀에 저장돼 있는 캐릭터의 스탯 데이터 테이블을 언리얼 엔진에 불러들여보자. 캐릭터 스탯 데이터는 게임의 기반을 이루는 변하지 않는 데이터이므로 보통 게임 앱이 초기화될 때 불러들인다. 언리얼 엔진은 게임 앱을 관리하기 위한 용도로 GameInstance라는 언리얼 오브젝트를 제공한다. 이 인스턴스가 캐릭터의 스탯을 관리하도록 설계하면 게임 앱이 초기화될 때 캐릭터 스탯 데이터를 불러들이고, 앱이 종료할 때까지 스탯 데이터는 보존된다. GameInstance 클래스를 부모로 하는 클래스를 제작 후 프로젝트 세팅의 맵&모드로 들어가서 GameInstance항목을 우리가 만든 것으로 바꿔주면 게임 앱을 관리할 수 있다. 다음으로 원하는 캐릭터 스탯 데이터를 엑셀에 작성 후 CSV파일 형식으로 저장해준다. ..

UE4 2022.11.11
[졸작] 기능구현리포트_3회차

1. 아이템박스 제작 : 캐릭터와 overlap시 캐릭터에 무기 장착(소켓 활용), 이팩트 재생 후 Destroy. 무기클래스 제작 2. CSV파일 불러오기 : 캐릭터 스탯정보 엑셀에 저장 후 그에 맞게 구조체 선언, DataTable이용해 불러오기. 3. 캐릭터 스탯 제작 : 캐릭터에 부착해 레벨에 따라 자동으로 스탯이 상승하도록 하기. 4. UI와 스탯 연동하여 HP바 제작.

[UE4] 이펙트 구현하기

구현방법 1. MyBox Actor에 ParticleComponent 추가. 2. 원하는 Effect Asset을 ParticleComponent의 템플릿으로 지정한다. 3. ParticleComponent에서 제공하는 OnSystemFinished 델리게이트에 멤버 함수를 하나 연결해 이펙트 재생이 종료되면 아이템 상자가 제거되도록 하기. 4. Effect가 재생될 때는 액터의 Collision 기능 제거, 박스 스태틱메시도 액터가 제거될 때까지 안보이게 설정. Effect = CreateDefaultSubobject(TEXT("EFFECT")); Effect->SetupAttachment(RootComponent); //파티클 에셋 불러온 후 적용 static ConstructorHelpers::FO..

UE4 2022.11.11
[UE4] 아이템 상자 제작

콜리전 설정 ItemBox라는 이름으로 오브젝트 체널을 하나 생성한 후 프리셋도 하나 생성해서 기본 반응은 무시, MyCharacter와의 콜리전 반응만 겹침으로 설정해준다. 캐릭터의 ItemBox에도 마찬가지로 겹침 반응을 설정해야 한다. (콜리전 켜짐 메뉴의 값은 Query Only로 지정하고 오브젝트 유형은 ItemBox로 지정해준다. ) 델리게이트 언리얼에서 제공하는 BoxComponent에는 Overlap Event를 처리할 수 있게 OnComponentBeginOverlap이라는 이름의 멀티캐스트 다이내믹 델리게이트가 선언되어 있다. 유형과 인자를 모두 복사해 매크로 설정과 동일한 멤버 함수를 선언하고 이를 해당 델리게이트에 바인딩한다. 그럼 위에서 설정한 겹침(Overlap)이벤트가 발생할 ..

UE4 2022.11.11
[UE4] 무기 액터 제작

무기 액터 생성 새로운 C++클래스 추가> Actor클래스 하나 만들기 -> 스켈레탈 메쉬를 담을 변수를 헤더에 하나 선언 후 코드에서 스켈레탈 메쉬 불러와서 액터에 적용시켜주기. AMyWeapon::AMyWeapon() { // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = false; //무기 오브젝트 만들고 애셋 적용하기 Weapon = CreateDefaultSubobject(TEXT("WEAPON")); RootComponent = Weapon; static ConstructorHelpers..

UE4 2022.11.09
[UE4] 캐릭터 에셋에 붙어있는 무기제거

보통의 경우 캐릭터 스켈레탈 메쉬를 프로젝트에 임포트하면 무기는 붙어있지 않은 것이 일반적이다. 하지만 특히 언리얼의 혜자 무료에셋인 Paragon 시리즈의 캐릭터에셋들을 보면 스켈레탈 메쉬에 무기가 함께 붙어있는 것을 확인할 수 있다. 아마 캐릭터 애니메이션에 무기 애니메이션도 함께 연결하고 싶어서 묶지 않았을까 싶지만 지금 내가 만드는 게임의 경우 무기를 유동적으로 교체하기 위해 기본으로 달려있는 무기를 떼어야 한다. 내가 붙여넣고 싶은 무기가 저 커다란 기본 무기에 가려져있다. 어서 없애버리자. 제거법 사실 구글링을 열심히 해보고 아는 지식으로 여러가지 시도도 해봤지만 칼자체를 깔끔하게 캐릭터에서 떼어낼 방법은 찾지 못했다. 사실 어찌보면 당연한게 캐릭터와 '한 몸'인 상태로도 볼 수 있기에 만약 ..

UE4 2022.11.08
[UE4] 스켈레톤 & 소켓 시스템

소켓 소켓이란 스켈레탈 메시 내의 Born에서 약간 Offset을 준 부분을 말한다. 그런 다음 Born을 기준으로 소켓의 위치, 방향, 크기를 조절한다. 스태틱 메시, 스켈레탈 메시는 소켓에 미리 붙여볼 수 있어, 콘텐츠 제작자는 스켈레탈 메시의 소켓을 구성한 다음, 프로그래머에게 오브젝트를 붙일 소켓 이름만 알려주면 된다. 소켓을 생성하려면 일단 스켈레탈 메시를 더블클릭해서 들어간 후 스켈레톤 트리 패널에서 소켓추가를 선택해 추가할 수 있다. 소켓은 Born 이름 옆에 소켓 아이콘으로 표시된다. 원하는 소켓을 우클릭하고 프리뷰 애셋 추가 메뉴를 선택한 후 원하는 악세사리를 캐릭터에 부착해 볼 수 있다. 스켈레톤 애셋 언리얼4에서의 스켈레톤 애셋은 기본적으로 Born의 이름과 계층구조의 목록이다. Bo..

UE4 2022.11.03