라이트 액터(Light Actor)를 배치하는 것과 머티리얼의 이미시브(Emissive) 속성 이 두 가지는 시각적인 결과물, 성능, 그리고 엔진이 빛을 계산하는 방식에서 근본적인 차이가 있다.언리얼 엔진 환경 제작 시, 이 오브젝트를 밝히기 위해 라이트를 설치해야 할까, 아니면 머티리얼을 빛나게 해야 할까?라는 고민은 흔히 발생한다. 라이트 액터 (Light Actor)라이트 액터는 엔진이 물리적으로 빛을 계산하도록 설계된 광원이다.피사체에 정확하고 선명한 그림자를 생성한다.표면의 재질(거칠기 등)에 따라 맺히는 하이라이트(반사광)를 정확하게 표현한다.빛의 감쇠(Attenuation), 반경, 색온도, 강도 등을 디테일하게 조절할 수 있다.이미시브 머티리얼 (Emissive Material)이미시브는 ..
📚분류
[Unreal Engine 5.6.1]스켈레탈 메시의 최적화를 진행하고 엔진을 다시 빌드하니, 스켈레탈 메시와 관련해서 null포인터 참조 크래시가 발생했다.언리얼 엔진 5.6.1은 기본적으로 자체적인 Skeletal Mesh Reduction 기능을 사용한다. Skeletal Mesh Simplifier이라는 플러그인인데, 이를 통해 에디터에서 LOD의 폴리곤 수나 자동 LOD 생성 등의 편의 기능을 사용할 수 있다.이를 통해 조작된 스켈레탈 메시에 대해서 폴리곤 관련 설정을 시도하면 오류가 발생하는 것을 확인했다. 그래서 Skeletal Mesh Simplifier 플러그인을 통해 Auto LOD를 여러 개 생성한 후, Skeletal Mesh Simplifier를 비활성화했다.그러고 나서 스켈레탈 ..
빌드 파일을 뽑았을 때, GameplayCue Tag가 제대로 지정이 안돼서 Cue 실행이 안되는 경우가 있다. 만약, 에디터에서도 그냥 안나온다면, 혹시 GameplayCue를 C++로 구현했고, 생성자에서 직접 Cue Tag를 지정하고 있지는 않은지 확인하자.C++의 생성자에서 태그를 지정하고 Cue를 블루프린트로 만들어 사용한다면, 태그가 제대로 지정이 안될 가능성이 있다.블루프린트에서 Cue Tag를 재할당 해보자. 먼저 Cue Tag를 추가했으면, "Config" 폴더에 "DefaultGameplayTags.ini" 파일이 있을 것이다.여기에 제대로 "Cue Tag"가 추가되었는지 확인한다.// DefaultGameplayTags.ini+GameplayTagList=(Tag="GameplayC..
빌드를 수행했는데 아래 이미지와 같이, 뜨면서 빌드가 안 되는 경우가 있다.이건 메모리가 부족해서 생기는 문제다. 작업 관리자에 가보면 다음과 같이, Visual C++ Language... 프로세스가 여러 개 있는 것을 확인할 수 있다.이걸 그냥 모두 작업 끝내기로 끝내주면 해결된다.
https://school.programmers.co.kr/learn/courses/30/lessons/84512# 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음에는 각 문자가 자릿수별로 채워질 때 매핑되는 수가 있기 때문에, 그걸 찾으려고 했다.(ex. 'I'가 1번째 자리인 경우 1563번째) 근데 못찾겠어서 그냥 문자 자릿수를 하나씩 올리는 완전 탐색으로 풀었다.#include #include using namespace std;// 다음 문자 반환 함수char Next(const char InChar){ switch (InChar) { case 'A': return 'E'; case 'E': ret..
다음 열거형의 DisplayName을 문자열로 가져와보자./** * 아이템 분류 열거형 */UENUM(BlueprintType)enum class EAR_ItemCategory : uint8{ Equipment UMETA(DisplayName = "장비"), Consumable UMETA(DisplayName = "소모품"), Quest UMETA(DisplayName = "퀘스트"), Misc UMETA(DisplayName = "기타")}; StaticEnum 템플릿 타입으로 변환할 열거형을 지정해 주고, GetDisplayNameTextByValue 함수를 통해 열거형의 값을 정수형으로 변환 후, 해당 값의 DisplayName을 가져와 변환하여 저장한다.// 아이템 카테고리 ..
https://school.programmers.co.kr/learn/courses/30/lessons/147354 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명이 굉장히 난해하지만, 그냥 문제 설명 그대로를 구현해 주면 문제없이 풀린다. 먼저, 테이블 튜플을 정렬해줘야 한다.이는 그냥 문제의 정렬 기준으로 테이블 배열을 정렬해주면 된다.파라미터로 주어지는 col값은 인덱스 순서인 0부터 시작하는게 아닌, 1부터 시작하기 때문에 -1을 해줘야 한다.나는 정렬 함수를 따로 만들어 사용했기 떄문에, 전역 변수 col을 하나 더 선언 후에 col-1로 초기화했다. 다음으로, 각 칼럼의 값을 i로 나눈 나머..
블루프린트에서 실행 흐름을 지연시키는 방법은 간단하게 Delay 노드를 사용할 수 있다.하지만, Delay 노드는 일반적으로 GAS가 의도하는 깔끔한 비동기 흐름(델리게이트를 통한 콜백)이 아닌, 액터의 실행 흐름에 의존하기 때문에 게임 플레이 어빌리티에서는 Delay 노드를 호출하면 오작동하거나 아예 실행되지 않는다. Delay 노드 대신, GAS에서 기본으로 제공하는 어빌리티 태스크인 Wait Delay Task 노드를 사용한다.