분류 전체보기
[메모] UE - TSubClassOf를 가진 자식 Object 생성하기
UObject는 NewObject를 통해 생성해야 하지만, 어떤 SubClass의 Object를 생성해야 할 때는 다음과 같이 작성합니다. 예를 들어, Magic이란 부모 클래스가 있고 자식 클래스로 다양한 마법 클래스가 있으며 NewObject를 통해 적절한 자식클래스로 마법을 생성해야 할경우 다음과 같이 작성해야 오버라이딩 된 자식 생성자와 함수를 이용합니다. struct MagicData { UPROPERTY(EditAnyWhere) TSubClassOf MagicClass; UPROPERTY(EditAnyWhere) int ID; }; . . . . //마법 종류에 따라 다른 자식 클래스로 생성 for(MagicData magic : Magics) { Magic* newMagic = NewObje..
[메모] UE - TMap에 FStruct 자료형 키 사용하기
TMap에 커스텀 자료형을 키로 사용하려 하면, GetTypeHash에러가 나게 되는데, 이는 GetTypeHash 함수가 해당 자료형으로 해싱이 불가능하다고 말해주는 것입니다. 해시가 가능하도록 GetTypeHash 함수와 자료형::operator== 함수를 오버로딩 해주면 됩니다. 위는 커스텀 구조체의 오버로딩 샘플 코드입니다. CRC는 순환 패리티 검사방식을 이용한 해싱을 의미합니다. 참고 링크 : Using Custom C++ Structs as TMap Keys in Unreal Engine | by biq | The Startup | Medium Using Custom C++ Structs as TMap Keys in Unreal Engine Let’s take a look at how to ..
[C++] 백준 - 2167번 문제
2167번: 2차원 배열의 합 (acmicpc.net) 2167번: 2차원 배열의 합 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 www.acmicpc.net 2167번 : 2차원 배열의 합 2차원 배열이 주어졌을 때 (i, j) 위치부터 (x, y) 위치까지에 저장되어 있는 수들의 합을 구하는 프로그램을 작성하시오. 배열의 (i, j) 위치는 i행 j열을 나타낸다. 입력 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10..
C++의 기초 - 6
* 참조자 int A = 99; int &B = A; int *C = &A; B++; //A == 100 (*C)++; //A == 101 - 참조자는 포인터가 *를 사용해 데이터를 실제로 변경하는 것처럼 해당 데이터에 직접 접근할 수 있습니다. int A = 99; int E = 1; int &B = A; int* C = &A; int& D = E; B++; //A == 100 (* C)++; //A == 101 printf("%d\n", A);//101 printf("%p\n", &B);//A의 주소 printf("%p\n", C);//A의 주소 printf("%d\n", E);//1 B = D; //A == 1 B--; //A == 0 printf("%d\n", A);//0 printf("%p\n"..
C++의 기초 - 5
* Inline 함수 - 함수는 Call할 때 수행시간이 추가로 드는 편입니다. - 일반적인 함수의 수행 과정 1. 스택에 함수 매개변수, 호출이 끝난 후 돌아갈 주소, 함수의 지역변수 등이 저장된다. 2. 함수가 시작되는 메모리 주소로 점프하여 함수를 수행한다. 3. 리턴 값을 레지스터에 복사한 후, 저장해 둔 주소의 명령으로 돌아온다. - Inline 함수의 수행 과정 1. 함수 코드가 함수 콜한 코드 안에 직접 삽입된다. 즉, 함수로 점프, 돌아오는 과정이 생략됩니다. 그렇다고 항상 Inline 함수가 유리한 것은 아닙니다. 이유는 다음과 같습니다. 1. Inline으로 생략되는 수행 시간이 크지 않다. -> 빈번히 사용되는 함수가 아니면 큰 이득이 없음 2. 함수 코드가 길어서 메모리를 많이 사용..
UC++ 프로젝트 - 7
* 공격 구조에 대한 고민 현재 공격 및 스킬 등을 구현하는 데에 어떻게 구조를 만들 지 고민이 큽니다. 쉽지 않지만.. 개방-폐쇄 등의 원칙과 컴포넌트 기반 설계 방식을 고려하며 짜려고 노력중입니다. 1. 입력 반응의 주체는 유저입니다. 예시) 마우스 버튼을 눌렀다. 2. 웨폰마다 가지는 액션이 다릅니다. 예를 들어, 검은 마우스 좌클릭 시 콤보 공격, 총은 격발을 해야합니다. 3. 에디터에서 액션과 웨폰을 조립하여 웨폰 데이터를 완성하고 싶습니다. 4. 액션은 여러 클래스를 가지며, 웨폰이 여러 액션 데이터를 가진다. 5. 웨폰 데이터에서 액션의 몽타주 재생이 일어나면, 노티파이가.. 해당 액션 클래스까지 접근하여 작업해야 한다. 현 시점에서 좌클릭 -> 웨폰 컴포넌트의 PressedLMB() 호출 ..
[C++] 백준 - 2096번 문제
2096번: 내려가기 (acmicpc.net) 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net 2096번 : 내려가기 N줄에 0 이상 9 이하의 숫자가 세 개씩 적혀 있다. 내려가기 게임을 하고 있는데, 이 게임은 첫 줄에서 시작해서 마지막 줄에서 끝나게 되는 놀이이다. 먼저 처음에 적혀 있는 세 개의 숫자 중에서 하나를 골라서 시작하게 된다. 그리고 다음 줄로 내려가는데, 다음 줄로 내려갈 때에는 다음과 같은 제약 조건이 있다. 바로 아래의 수로 넘어가거나, 아니면 바로 아래의 수와 붙어 있는 수로만 이동할 수 있다는 것..
[C++] 백준 - 2342번 문제
2342번: Dance Dance Revolution (acmicpc.net) 2342번: Dance Dance Revolution 입력은 지시 사항으로 이루어진다. 각각의 지시 사항은 하나의 수열로 이루어진다. 각각의 수열은 1, 2, 3, 4의 숫자들로 이루어지고, 이 숫자들은 각각의 방향을 나타낸다. 그리고 0은 수열의 마 www.acmicpc.net 2342번 : Dance Dance Revolution 승환이는 요즘 "Dance Dance Revolution"이라는 게임에 빠져 살고 있다. 하지만 그의 춤 솜씨를 보면 알 수 있듯이, 그는 DDR을 잘 하지 못한다. 그럼에도 불구하고 그는 살을 뺄 수 있다는 일념으로 DDR을 즐긴다. DDR은 아래의 그림과 같은 모양의 발판이 있고, 주어진 스텝..