Programming/C++ & Unreal

Programming/C++ & Unreal

언리얼 디버그 로그 출력 c++

GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("Debug %f"), 123.0f)); // Debug 123.0 출력 GEngine->AddOnScreenDebugMessage(-1, 3.0f, FColor::Blue, TEXT(" Screen")); // 화면출력 UE_LOG(LogClass, Log, TEXT("Output")); // Debug 출력 참조: https://wiki.unrealengine.com/Logs,_Printing_Messages_To_Yourself_During_Runtime --- 더 편리한 방법을 아래 링크에 추가하였으니 사용바람.https://developstudy.tistory...

Programming/C++ & Unreal

언리얼 클래스 기초

유니티에서는 한 오브젝트에서 여러 컴포넌트와 소스들을 합쳐서 하나의 오브젝트를 구성할 수 있지만,언리얼에선, 하나의 오브젝트는 하나의 클래스를 가진다. (컴포넌트는 유니티와 동일하게 합칠 수 있다.) 그러므로, 오브젝트에서 다른 클래스를 가지려면 OverRide 하는 등의 방법을 써야할 것 같다.소스를 컴포넌트처럼 마구마구 조립하는 방법도 힘들 것 같다. * 언리얼은 하나의 클래스를 가지며, Override 하는등의 방법으로 다른 클래스를 사용해야한다.

Programming/C++ & Unreal

변수 언리얼 디테일창에 노출 시키기

UPROPERTY(EditAnywhere) int32 TotalDamage; // 기본형 -> 함수의 이름으로 카테고리가 생김 UPROPERTY(EditAnywhere, Category="Damage") int32 TotalDamage; // Damage라는 이름으로 카테고리가 생김 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Damage") int32 TotalDamage; // 블루프린터 전용자세한건 아래 링크를 참조.http://api.unrealengine.com/KOR/Programming/UnrealArchitecture/Reference/Properties/http://api.unrealengine.com/KOR/Programming/Tut..

Programming/C++ & Unreal

C++ 함수 포인터 추가

typedef void (*SYS_FUNC)(int); -> 리턴타입이 void이고 매개변수 타입이 (int)인 함수를 담을수있는 SYS_FUNC EX) void Test(int a); SYS_FUNC pfn = &Test; (*Test)(); typedef void (CPoint::*FP)(void); 이런식으로 클래스의 멤버함수도 접근가능 typedef void (CPoint::*FP)(void) const; FP func = &CPoint::Print; (pt.*func)(); 이런식으로..

Programming/C++ & Unreal

C++ 쓰레드

#include #include using namespace std; void Loop() { printf("1"); } void Loop2() { printf("2"); } int main() { thread l1(&Loop); thread l2(&Loop2); l1.join(); l2.join(); return 0; } 이렇게하면 Lpp2 -> Loop2가 호출됨.예전의 CreateThread 보다 엄청 쉬워진듯. !!

Programming/C++ & Unreal

함수 포인터 예제

void sayYeah(void) { printf("Yeah"); } void sayHo(void) { printf("Ho!!"); } int main() { void (*test)(void); test = sayHo; test(); test = sayYeah; test(); return 0; } // 함수들을 맵 같은곳에 넣어서 간단하게 사용하는 방법도 재미있을듯. 실제로 저 글을 작성한 후 기말고사 API 게임 때, JSP처럼 Map에다 함수를 넣어서 사용하는 미친 짓을 했었다..

Programming/C++ & Unreal

C++ 클래스에서 구조체 초기화

만약 Block이라는 클래스와, point라는 구조체가 둘다 초기화를 필요로 하고 있다면, MyPoint point; MyBlock(const float x, const float y, /* TODO LIST */) : point(x,y){ // TODO LIST } 이런식으로 초기화 해주면 된다.이렇게 구조체를 초기화 하지 않고, 생성자를 구현하면 에러가 나게 된다.

Programming/C++ & Unreal

C++ 참조형 변수 Reference

Reference(참조) 형 변수.포인터와 비슷하면서 다르다.똑같은 변수를 이름만 복제해서 사용 한다고 생각하면 편하다. void ReferTest(int& test){ test = 1; } main(){ int a; ReferTest(a); } // Main : a = 1

Programming/C++ & Unreal

헷깔리는 const

const int* ap; // const int의 주소를 참조하는 포인터 int* const ap; // int의 주소를 참조하는 const 포인터 const int* const ap; // const int의 주소를 참조하는 const 포인터 솔직히 어디다 쓸지 잘 모르겠지만, 문법이 엄격한 C++ 특성상 알아두면 좋을 것 같다.

Programming/C++ & Unreal

삼항연산자

삼항연산자는 조건문을 간략하게 줄인것이다. (조건) ? 참일때 : 거짓일때 ; 이런 형태로 사용이 된다. if(a>=b) printf("%d",a); else printf("%d",b); ↓ printf("%d",(a>b)?a:b); 위 소스는 두 정수(a,b)중 더 큰 값을 출력하는 소스인데, 아래처럼 짧은 조건은 오히려 삼항연산자를 사용하는 것이 더 보기 좋다. #include #define Max(Num1,Num2) ((Num1>Num2)?Num1:Num2) int main(){ int a,b; scanf("%d %d",&a,&b); printf("%d",Max(a,b)); return 0; } 위 #define~ 부분은 int Max(int num1,int num2){ if(num1>=num2) ..

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