본문 바로가기

c++124

언리얼엔진5 27장 [매크로] ▣ 안녕하세요. 이번장에서는 매크로를 공부해 보겠습니다. 매크로는 함수와 비슷합니다. 그리고 조금 다릅니다. 이 차이를 보기 위해 노드를 연결하며 공부해 보겠습니다. ▣ 먼저 저번장에서 공부했던 Axis로 입력하는 함수를 통해서 진행했던 노드에서 branch가 아닌 Compare Float 매크로블록으로 변경했습니다. 블록에 M이라고 적혀 있으면 매크로이고 F라고 되어 있으면 function 함수입니다. ▣ 컴파일 저장 후 씬에서 플레이 버튼을 클릭하고 위, 아래 키를 누르면 위에 이미지처럼 출력이 잘 되는 걸 확인할 수 있습니다. ▣ 이번에는 매크로를 직접 만들어서 사용해 보겠습니다. 왼쪽메뉴에 보면 MACROS라는 메뉴가 있습니다. 더하기 버튼을 클릭하면 생성이 됩니다. 함수와 동일합니다. ▣ 매크로.. 2023. 2. 14.
C++ [인수 객체, 인수 포인터, 인수 레퍼런스] ▣ 클래스 생성, 멤버변수, 멤버함수 생성 ▣ Play함수에 Player클래스의 객체 인수를 받는다. ▣ 인수로 받아오게 되면 바로 해당 인수의 객체를 사용할 수 있다. ▣ 다른 함수에서도 객체를 받아오면 그 해당 객체의 멤버 함수 호출 가능 ▣ 레퍼런스 인수로 받아와서 호출가능 주소를 받아오기 때문에 원본 수정 가능 ▣ 포인터로 인수를 받아 올 수 있다. ▣ 단 & 주소로 받아와야 하고 포인터로 받아온 객체는 -> 화살표로 접근해야 한다. 2023. 2. 10.
언리얼엔진5 24장 [Rotation] ▣ 안녕하세요. 이번장에서는 Rotation를 회전하는 간단한 코드를 공부해 보겠습니다. ▣ 먼저 Player, Monster라는 Actor 두 개를 생성합니다. ▣ Player Actor를 그릴때 두 개의 Cube를 그려주시는데 여기서 주의해야 할 건 두 번째 Cube의 위치가 첫 번째 Cube X좌표 쪽에 있어야 합니다. 그래야 Player Actor가 어떻게 방향을 바꾸는지 확인할 수 있습니다. ▣ 둘다 컴파일 저장 후 맵에 배치합니다. ▣ Player Actor에서 Event Graph에 노드를 완성합니다. Find Look at Rotation 블록은 Start, Targer에 Location을 지정해서 회전하는 블록함수입니다. 위에 있는 코드처럼 완성하고 씬에서 재생을 하면 Player Act.. 2023. 2. 9.
C++ [열거형, enum] ▣ enum 키워드를 이용해서 선언 구조체와 비슷합니다. ▣ enum은 여러 개의 상수를 관리한다고 생각하시면 됩니다. ▣ 함수 밖에 선언하면 전역변수처럼 모든 함수에서 접근이 가능합니다. ▣ 구조체와 동일하게 열거형 변수이름; 으로 정의해야 합니다. ▣ 위에 이미지처럼 switch에서 조건으로 바로 사용이 가능합니다. 2023. 2. 8.
C++ [헤더파일] ▣ Sum.cpp라는 소스파일을 생성하고 함수를 정의합니다. ▣ Sum.h 라는 헤더파일을 생성하고 아까 만든 함수를 선언합니다. ▣ 라이브러리에 있는 헤더는 으로 불러온다. ▣ 사용자가 임의로 만든 헤더는 "Sum.h" 이런식으로 불러온다. ▣ 헤더를 통해서 가져오게 되면 컴파일 과정에서 내가 필요한 코드만 컴파일한다. 2023. 2. 8.
C++ [배열메모리 할당] ▣ int *p = new int [num] == int 크기로 배열 메모리 할당, *p에 할당한 주소 대입 ▣ delete []p; == 사용한 메모리 반환(반환을 해야지 메모리 재사용 가능) ▣ int *p = (int*)malloc(sizeof(int)) * num); == sizeof() 함수는 메모리의 크기를 구하는 함수, int형 크기로 메모리 입력받은 수만큼 곱하여 메모리 할당, (int*) int형 포인터를 의미 강제형변환 ▣ free(p) == 사용한 메모리 반환(반환을 해야지 메모리 재사용 가능) 2023. 2. 8.
C++ [Swap, 레퍼런스 인수] ▣ int& num1 == 레퍼런스 인수(주소 값을 저장한다.) ▣ int*p = &num1; 포인터와 동일하지만 포인터는 초기값이 없으면 안 되기 때문에 그 점에 차별점이 있다. ▣ &변수이름 == 변수의 주소를 의미한다. 2023. 2. 8.
언리얼엔진5 20장 [Actor생성, Actor이동] ▣ 안녕하세요. 이번장에서는 Actor를 생성하고 이동하는 코드를 공부해 보겠습니다. ▣ 먼저 Content Drawer메뉴에서 오른쪽마우스를 클릭하여 Blueprint Class를 클릭합니다. ▣ 그럼 이렇게 여러 가지 메뉴들이 나오는데 맨 위에 Actor를 클릭합니다. ▣ 생성한 Actor에 이름을 Player로 지정합니다. F2키를 눌러서 이름을 바꿀 수도 있습니다. ▣ Player Actor를 클릭하여 Actor에 들어갑니다. 그리고 왼쪽메뉴 중에 Components에서 Add를 클릭하고 Basic Shapes에서 Cube를 클릭합니다. 그럼 큐브가 그려집니다. 컴파일 저장 후 ▣ Player Actor를 씬에 드래그합니다. 그럼 위에 이미지처럼 큐브가 생성되는 걸 확인할 수 있고 오른쪽에 Out.. 2023. 2. 2.
언리얼엔진5 19장 [Break point, Debug, 단축키] ▣ 안녕하세요. 이번장에서는 break point, Debug 그리고 여러 단축키에 대해 공부해 보겠습니다. ▣ 먼저 Window메뉴에서 Place Actors를 클릭합니다. ▣ 그럼 이렇게 왼쪽에 Place Actors에 관한 메뉴가 나옵니다. 여기서 SHAPES버튼을 클릭하고 Cube를 드래그해서 Cube하나를 생성합니다. ▣ Cube를 클릭한 상태에서 Q키, W키, E키, R키를 누르면 여러 모드를 선택할 수 있습니다. ▣ END키를 클릭하면 위에 이미지처럼 Cube가 바닥에 붙는 자석효과가 실행됩니다. ▣ CTRL + D를 클릭하면 그 자리에 같은 엑터를 복사합니다. ▣ LEVEL BLUEPRINT에서 PrintText함수를 생성하고 F9키를 누르면 break Point가 찍힙니다. ▣ 이 상태로.. 2023. 2. 1.
언리얼엔진5 8장 [MAX, MIN, Clamp] ▣ 안녕하세요. 이번장에서는 MAX, MIN, Clamp 블루프린트 함수에 대해 공부해 보겠습니다. ▣ 먼저 num1, num2 변수를 생성합니다. 자료형은 integer로 지정하고 변수의 값인 Default Value를 num1 = 10, num2 = 20로지정합니다. ▣ 그리고 노드바탕에서 오른쪽마우스를 클릭하고 Max, Min을 각각 검색하면 이렇게 MAX와 MIN에 관련된 여러 함수들이 나옵니다. 여기서 (Integer)로 구분하는 Max, Min 함수를 가지고 옵니다. ▣ 그리고 Max, Min 블록 함수 왼쪽에 첫 번째 두 번째 원에 각각 num1, num2를 연결합니다. 그리고 Max, Min 블록 함수 오른쪽원에 있는 반환값을 FormatText를 이용하여 출력하는 코드를 작성합니다. Pr.. 2023. 1. 25.
언리얼엔진5 5장 [keyboard event, Random, Branch] ▣ 안녕하세요. 이번장에서는 키보드를 클릭하는 이벤트, Branch에서 bool 변수를 생성하는 방법, 랜덤함수에 대해 공부해 보겠습니다. ▣ 키보드이벤트를 사용하기 위해서는 블루프린트 바탕에서 오른쪽마우스를 클릭하고 Keyboard라고 검색하면 Keyboard Events가 나옵니다. 여기서 우리는 1번 키를 누르는 이벤트를 사용하기 때문에 1번 키를 선택합니다. ▣ 그리고 num이라는 변수를 생성하고 1번 키를 누르면 +1을 하는 코드를 작성합니다. ++는 +1과 동일한 연산자입니다. 1번키를 누르는 이벤트블록을 보면 Pressed는 키를 클릭하면 호출하는 이벤트이고 Released는 키를 누르고 떼면 작동하는 이벤트입니다. 코드를 다 완성했다면 컴파일 저장을 하고 ▣ 씬 화면에서 플레이버튼을 클릭하.. 2023. 1. 19.
언리얼엔진5 4장 [Branch, if, 관계연산자, 주석] ▣ 안녕하세요. 이번장에서는 Branch(조건문)에 대해 그리고 주석에 대해 공부해 보겠습니다. ▣ 프로젝트를 생성해 주시고 Level BluePrint를 열고 노드바탕에서 오른쪽마우스를 클릭하고 if를 검색하면 Branch가 나옵니다. Branch는 조건문입니다. if문과 동일하기 때문에 if라고 검색하면 Branch가 나옵니다. Branch는 많이 사용하기 때문에 단축키도 있습니다. ▣ B키를 클릭한 상태에서 + 마우스왼쪽클릭 하면 Branch가 생성됩니다. ▣ Branch에 조건문을 사용하기 위해서는 관계(비교) 연산자가 필요합니다. 참(True), 거짓(False)을 구분하기 위함입니다. 노드배경에서 마우스오른쪽버튼을 클릭하고 > 기호를 검색해 보겠습니다. 그럼 Greater라는 연산자가 나옵니다.. 2023. 1. 18.
언리얼엔진5 3장 [산술연산자, SET, ++] ▣ 안녕하세요. 이번장에서는 블루프린트에서 간단한 산술연산을 공부해 보겠습니다. ▣ 처음에 프로젝트를 열어 BluePrint를 열어주시고 integer 변수를 생성합니다. 그리고 컴파일버튼을 클릭한 다음 변수의 기본값을 100으로 지정합니다. CTRL키를 누르고 변수를 드래그 한 다음에 변수의 GET을 ALT키를 눌러 변수를 드래그 한 다음에 변수의 SET을 가져옵니다. 그리고 (-) 산술연산자를 검색해서 가져온 다음에 왼쪽 밑에 값을 1로 지정하여 변수 값에 -1을 출력하는 노드를 작성해 보겠습니다. ▣ 여기서 한가지 팁을 드리면 노드를 연결할 때 조금 지저분하게 연결되는데 정렬하고 싶은 노드를 블록을 지정한 다음에 Q키를 누르면 간단하게 정렬이 됩니다. 그리고 컴파일 버튼을 클릭하고 CTRL키를 누른.. 2023. 1. 14.
언리얼엔진5 1장 [프로젝트생성, 레벨블루프린트] ▣ 안녕하세요. 언리얼엔진 5 공부를 시작해보려고 합니다. 언리얼엔진 5에는 너무 많은 기능들이 있기 때문에 제가 공부하면서 중요했고 핵심이라고 생각하는 실습 위주로 큰 틀로 업데이트를 진행하겠습니다. 공부하실 때 언리얼엔진 5 문서 API를 읽으시면서 공부하시면 많은 도움이 됩니다. 공부하시다가 모르시는게 있으시면 댓글을 남겨주시면 저도 함께 공부해서 댓글 남기도록 하겠습니다. https://docs.unrealengine.com/5.0/ko/ 언리얼 엔진 5 문서 언리얼 엔진 5 학습을 위한 종합 리소스 docs.unrealengine.com ▣ 먼저 프로젝트를 생성함에 있어서 중요한 부분을 공부해 보겠습니다. 설치하는 방법은 인터넷에 자료가 많으니 생략하도록 하겠습니다. ▣ 프로젝트를 생성 시 St.. 2023. 1. 12.
C vs C++ 입출력 차이 ▣ C언어, C++ 입력, 출력 차이 헤더를 선언 방법 : C언어 C++ , C++에서는. h 확장자를 붙이기 않는다. C언어 입력 : scanf("%d", &number), scanf함수 안에 어떤 데이터 타입으로 입력받을지 데이터 타입(형식)과 변수의 주소를 넣어야 한다. C++ 입력 : cin >> number , >> 추출 연산자를 이용하여 어디 변수에 저장하는지만 지정해준다. C언어 출력 : printf("%d", number), printf함수 안에 어떤 데이터 타입(형식)으로 출력할지를 지정 그리고 변수나 숫자를 넣어서 출력한다. C++ 출력 : cout 2022. 12. 8.
C++ 18장 [템플릿1] ▣ 안녕하세요. 이번장에서는 템플릿에 대해 공부해보도록 하겠습니다. C++에서 함수를 작성하다 보면 함수의 이름을 동일하게 만드는 경우가 있습니다. 같은 의도로 다른 자료를 받는 경우에 그렇습니다. 그걸 오버 로딩이라고 하는데 이럴 경우 반환형이나 매개변수에 자료형(데이터 타입)을 모두 다 다르게 하여 구분을 해서 함수를 만들기도 합니다. 하지만 우리가 모든 자료형(데이터 타입)의 경우의 수를 다 생각하고 함수를 만들 수는 없습니다. 그렇기 때문에 템플릿을 사용해야 합니다. 템플릿은 형판이라는 뜻을 가지고 있으며, 함수에서 매개변수에 자료형 타입만 다른 중복된 함수들을 일반화시킨 틀을 템플릿이라고 합니다. 설명만 들으면 어려울 수 있으니 코드를 작성하며 공부해보도록 하겠습니다. ▣ 템플릿을 작성하려면 t.. 2022. 11. 24.
C++ 17장 [프렌드 함수] ▣ 안녕하세요. 이번장에서는 프렌드 함수를 공부해보도록 하겠습니다. C++에서 객체(클래스)의 private 멤버에는 해당 객체가 public 멤버 함수를 통해서만 접근이 가능했습니다. 하지만 상황에 따라 객체의 멤버 함수가 아닌 일반 함수도 private 멤버에 접근해야만 할 경우가 있습니다. 이럴 때 프렌드 함수를 사용합니다. 프렌드 함수를 사용하기 위해서는 프렌드(friend)라는 접근 제어 키워드를 사용해야 합니다. 코드를 작성하며 공부해보도록 하겠습니다. ▣ 먼저 클래스를 선언해주시고 public: 접근 연사자에서 friend 키워를 넣어 접근할 함수를 작성합니다. 그리고 함수의 매개변수에 (Calculator c)를 매개변수로 주시고 sum(Claculator c) 코드에서 처럼 매개변수 클래.. 2022. 11. 18.
C++ 16장 [static 멤버 변수, 함수] ▣ 안녕하세요. 이번장에서는 static 멤버에 대해 공부해보도록 하겠습니다. static을 공부할 때는 메모리 영역과 정적, 동적 이런 이야기를 해야 하지만, 이번장에서는 static에 사용 방법과 용도를 간단하게 공부해보겠습니다. ▣ static 멤버 변수와 멤버 함수를 선언하는 건 간단합니다. 선언할 멤버 변수 자료형 앞에 static 키워드를 붙어주시면 됩니다. 여기서 중요한건 static 멤버 변수는 모든 객체를 공유합니다. 그래서 반드시 int Calculator::number = 500; 코드에서처럼 전역 범위에서 정의 및 초기값을 지정해야 합니다. ▣ 메인 함수에서 객체를 각각 선언해주시고 선언한 객체로 static 멤버 변수를 접근하여 static 변수 주소를 출력하는 코드와 sum() .. 2022. 11. 16.
C++ 15장 [디폴트 매개변수] ▣ 안녕하세요. 이번장에서는 디폴트 매개변수(기본 매개변수)에 대해 공부해보겠습니다. 디폴트 매개변수는 말 그대로 매개변수를 기본으로 정의하는 걸 의미합니다. 코드를 작성하며 공부해보겠습니다. ▣ 클래스를 생성하는 코드를 작성해주시구요. 클래스에 멤버 함수를 생성해주세요. 멤버 함수 매개변수에 int n=10 이런 식으로 디폴트 매개변수를 정의합니다. 그리고 메인 함수에서 객체를 생성하고 c1.sum(), c1.sum(20) 이렇게 호출해주세요. 그럼 sum() 함수처럼 매개변수에 값을 전달하지 않아도 오류 없이 기본으로 지정되어 있는 10을 더한 값을 출력하고 sum(20) 함수 호출은 매개변수를 20으로 전달했기 때문에 디폴트 매개변수는 무시하고 내가 전달한 값 20을 저장하게 됩니다. 그리고 출력 .. 2022. 11. 11.
C++ 14장 [복사생성자] ▣ 안녕하세요. 이번장에서는 복사 생성자(Copy Constructor)를 공부해보겠습니다. 복사 생성자란 다른 객체의 내용을 복사해서 만드는 생성자를 의미합니다. 다시 말해 객체를 복사해서 사용한다라고 생각하시면 됩니다. ▣ 복사 생성자는 컴파일러에 의해 자동으로 만들어집니다. 그리고 모든 멤버 변수를 자동 복사합니다. 직접 코드를 작성하며 공부해보겠습니다. ▣ 먼저 클래스를 생성하고 멤버 함수를 선언했습니다. 코드를 작성하다가 주의해야한껀 private으로 멤버 변수를 지정했기 때문에 this->num = n를 기본 생성자에 넣어주셔야 내가 기본생성자 호출로 받아온 매개변수 값을 멤버 변수에 대입할 수 있습니다. ▣ 그리고 이렇게 Calculator c2(c1), Calculator c3 = c1 코.. 2022. 11. 11.
C++ 13장 [참조변수] ▣ 안녕하세요. 이번장에서는 참조 변수를 공부하도록 하겠습니다. 참조란 무언가 가리키는 걸 의미합니다. 참조 변수의 개념은 C언어의 포인터와 같은 방식입니다. 그럼 코드를 작성하고 이야기를 이어가겠습니다. ▣ C++에서 참조 변수는 int &p 코드처럼 & 기호를 넣어주면 됩니다. C언어의 포인터 int*p와 거의 비슷합니다. &는 참조자를 의미합니다. 우리가 C언에서 공부했던 것처럼 &를 기호를 변수 이름 앞에 &변수 이름 하면 주소를 의미합니다. 참조 변수를 만들 때 중요한 건 int&p = n; 코드처럼 참조 변수 초기화 시 변수를 대입해줘야 합니다. 대입하지 않으면 오류가 나게 됩니다. 그리고 Calculator& pCal = cal; 코드처럼 객체 클래스도 참조 변수로 사용이 가능합니다. 이제 .. 2022. 11. 4.