UE4 - String To Enum

FText GetNetRoleEnumAsString(ENetRole::Type EnumValue)  {    const UEnum* EnumPtr = FindObject<UEnum>(ANY_PACKAGE, TEXT("ENetRole"), true);    if(!EnumPtr) return NSLOCTEXT("Invalid","Invalid","Invalid");       return EnumPtr->GetDisplayNameText(EnumValue);  } return FString :  return EnumPtr->GetDisplayNameText(EnumValue).ToString();

SVN (Tortoise) - Error: Checksum mismatch

Error: Checksum mismatch~ 체크 아웃 시 - 일부 업데이트 후 Error 발생. 보안 프로그램 이슈. 안랩 (예 : AhnLab Safe Transaction) 보안 프로그램 이슈 . 제거 후 체크아웃 -> 잘됨.

UE4 - GENERATED_BODY, GENERATED_UCLASS_BODY

GENERATED_UCLASS_BODY - 생성자 정의가 포함 되어 있어 cpp에 생성자 사용해야함. .h public:      USkillBase(const FObjectInitializer& ObjectInitializer); .cpp USkillBase::USkillBase(const class FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer)  {       //constructor. }   GENERATED_BODY - 매크로 사용 시 생성자를 정의하지 않고 도 빌드 가능 .  생성자는 필요하면 정의해서 사용. GENERATED_UCLASS_BODY   상위 버전 ->   GENERATED_BODY 

[C++] explicit 란?

 C++에서 필수 매개변수가 하나만 있는 생성자는 암시적 변환 함수 로 간주되어 매개변수 유형을 클래스 유형으로 변환 합니다.  생성자 Buffer(int size)가 버퍼 크기를 바이트 단위로 사용 하는 버퍼 클래스가 있는 경우  컴파일러가 자동 으로 ( int size )를 Buffers 로 바꾸는 것을 원하지 않을 것입니다. 이를 방지하기 위해 explicit 키워드를 사용 하여 생성자를 선언합니다 . class Buffer  {  explicit Buffer(int size);  } void useBuffer(Buffer& buf); useBuffer(4); //error. explicit 키워드를 사용한다면 컴파일 오류 가 발생하므로 임시 Buffer객체를 전달 하려면 명시적으로 전달 해야 합니다 . useBuffer(Buffer(4)); // <- 생성자에 맞게 명확하게 사용. 요약 explicit 키워드 없이 사용한다면 사용자가 원치 않은 형변환 이 일어나는 등 예기치 않은 버그 가 발생할 수 있기 때문에 애매한 상황 이라면 explicit 키워드를 사용하여 예방 을 해야 한다.

[C++] char* 왜 사용할 수 없지?

 c++ 에서 아래와 같은 코드를 실행 시킬 시. const char* test1 = "t1"; // success char* test2 = "t2"; // fail 위와 같이 컴파일 오류 가 발생한다. 이유 C++에서는 상수-비상수 포인터 사이의 암묵적인 변환 이 일어나지 않아 문자열 리터럴은 항상 const char*로, 명시적으로 수정할 수 없음 을 나타내야 한다. 이해가 안되면 문자열 리터럴을 살펴보고 오자.

UE4 - Dont Blueprint Macro Inheritance

이미지
장점 : 블루 프린트 매크로를 사용하면 실행 핀없이 노드를 만들 수 있다는 것 하지만 .. This is  still  a serious oversight in the Engine design. A child cannot use the macros of a parent for... reasons. Okay? I'll make a macro library. A parent cannot use it's own macro library for... reasons. Therefore: All macros must be made twice. I thought the whole point of making macros and functions was to cut down on work, not double it. At this point I'm better off copy-pasing these nodes over and over again. 결론 : 전체 블루프린트에서 사용할 수 있도록 매크로 라이브러리를 이용.

UE4 - Call Server Event in Flow the Function Client (리플리케이션 액터에서 서버 함수가 안불릴때 )

이미지
  일단 서버 함수를 사용하려는 액터에 리플리케이션 되어 있는지 확인. 액터를 스폰할때나 착용할때 Owner를 설정 해 주지 않으면  스폰한 리플리케이션 되는 액터 에서 서버 함수 호출 이 불가능 하다.