Programming/C++ & Unreal

Programming/C++ & Unreal

C++ 메모리 덤프

개요 졸작으로 C++ 서버를 만들면서 제일 잣같았던 부분은, Try-Catch로 모든 Exception을 캐치 할 수 없다는 것이다. 특히 밥먹듯이 발생하던 "잘못된 메모리 접근"이 골치아팠는데, 그에 대한 해결 방법 중 하나인 Unhandled Exception Dump를 따는 법을 간단하게 적어보겠다. Try-Catch가 안되는 Exception void CreateException(int* a = nullptr) { a[100] = 100; } ... try { CreateException(); // 강제로 Memory Access Exception 유발. } // Memory Access Exception은 Catch되지 않는다. catch (...) { cout

Programming/C++ & Unreal

C++ config parser

텍스트를 파싱하는 로직이 필요해서 간단히 작성한 프로그램. 긴 설명은 필요없을 것 같아 소스만 남김! 사용법 #include #include "ConfigParser.h" int main() { CConfigParser test("test.ini"); if (test.IsSuccess()) { std::cout

Programming/C++ & Unreal

언리얼4 C++ 에셋 불러오기

언리얼 에셋은 불러오기 참 불편하다... static ConstructorHelpers::FClassFinder CS_PSYCHICFORCE(TEXT("/Game/Blueprint/CameraShake/Esper/CS_01_PsychicForce.CS_01_PsychicForce_C")); if (CS_PSYCHICFORCE.Succeeded()) { CS_PsychicForce = CS_PSYCHICFORCE.Class; } 뭔가 받으려면 이름부터 길다란 네임스페이스에 여러가지 붙여야 로드가 가능하다. 로드가 실패한것도 체크안하면 터져버린다. 클라이언트 프로그래머 친구들이 저 더럽고 불결한 내용을 몇십 몇백개 적고 있는걸 보니 눈물이 나서 다음과 같은 매크로를 만들었다. /* Object Asset을 ..

Programming/C++ & Unreal

언리얼(C++)에서 자주 사용하는 매크로 (언리얼 로그 찍기)

이득우 교수님의 언리얼 C++ 책을 참고해서 작성한 매크로 들인데 다른 프로젝트에서 유용히 쓸 수 있을것 같아서 여기에 공유한다. // HACKED.h (모듈최상위 헤더) // 이 함수가 호출된 함수의 이름과 라인을 매크로로 String화 시킴 - 출처 : 이득우의 언리얼 C++ 게임 개발의 정석 #define LOG_CALLINFO (FString(__FUNCTION__) + TEXT("(") + FString::FromInt(__LINE__) + TEXT(")")) // 위의 CALLINFO와 함께 아무 내용이 없는 로그를 찍는 매크로 - 출처 : 이득우의 언리얼 C++ 게임 개발의 정석 #define LOG_S(Verbosity) UE_LOG(HACKED_LOG, Verbosity, TEXT("%s..

Programming/C++ & Unreal

언리얼 플레이어 회전값 직접 바꾸기

UGameplayStatics::GetPlayerController(this, 0)->SetControlRotation(rideTarget->GetComponentRotation()); RideTarget의 로테이션에 플레이어 컨트롤러 화면을 바꾸는 건 이렇게 하면됨. 언리얼 인풋 컴포넌트에서 조정해서 그럼.

Programming/C++ & Unreal

언리얼 C++에서 경로로 에셋 불러오기.

LoadObject는 로드되지 않은 오브젝트를 레퍼런싱할때,FindObject는 이미 로드된 오브젝트를 레퍼런싱할때 쓰라고함. GridTexture = LoadObject(NULL, TEXT("/Engine/EngineMaterials/DefaultWhiteGrid.DefaultWhiteGrid"), NULL, LOAD_None, NULL); 이런식으로 하면되는듯 /Game/Sprite/Crosshair/Item_Sprite 경로는 대충이럼.Game = Content라고 생각하면될듯 const ConstructorHelpers::FObjectFinderSM_Body(TEXT("/Game/P38/SM_P38Body.SM_P38Body"));이런식으로 할수도있뜸 경로는 콘텐츠 브라우저에서 레퍼런스 복사를 하..

Programming/C++ & Unreal

UPaperSpriteComponent 쓰기

그냥 UPaperSpriteComponent를 쓰려면 에러가 잔뜩 난다..뭔가 하고 거의 반나절을 찾아본결과..PaperSpriteComponent.h를 인클루드하고,빌드.cs에, Paper2D를 추가하면된다.네트워크등 다른것들도 이런식으로 모듈확장을 해야하는덧.

Programming/C++ & Unreal

언리얼 C++ Enum 블루프린트에서 쓰기

UENUM(BlueprintType) enum class ECrossHair : uint8 { CROSSHAIR_NoDetect UMETA(DisplayName="NoDetect"), CROSSHAIR_Item UMETA(DisplayName="Item"), CROSSHAIR_Ride UMETA(DisplayName="Ride") }; 이런식으로 클래스 헤더 위에서 선언하고 쓰면됨.

Programming/C++ & Unreal

언리얼 4.12 Visual studio 2015 Update 3 사용하기

command line argument number 261 does not match precompiled header가 뜬다면 https://forums.unrealengine.com/showthread.php?115833-Tutorial-Fix-for-the-Visual-Studio-Update-3-without-Source-Control 여기 따라하면됨!!!!!

Programming/C++ & Unreal

언리얼 기초 용어

Class -유니티의 프리팹 처럼 쓸 수 있는 액터 클래스와, 컴포넌트로 사용 할 수 있는 컴포넌트 클래스등등이 있다. Object -구성 요소라고 할 수 있는데, 여러가지 기능들을 가지고 있는 그냥 말그대로 오브젝트! 중요하지 않다.ㄴ 클래스엔 기본적인 내용들이 담겨있음. Actor -화면에 등장하는 오브젝트로, 유니티의 GameObject라고 생각하면 될듯.ㄴ 클래스엔 위치정보나 렌더링 이벤드 등이 담겨있음. Pawn - ★체스 말의 폰 처럼, 생각하며 움직이는 액터. 나의 캐릭터, 아군 캐릭터, 적군 캐릭터등이 있으며, 빙의(Possess)하여 제어한다.ㄴ 물리적인 동작들. Brush -모델링하기 귀찮을때 쓰거나, 쉽게 모양을 만들어 트리거로 사용할때 쓰는 듯? 정확힌 잘 모르것다. Level -유..

장형이
'Programming/C++ & Unreal' 카테고리의 글 목록 (2 Page)