본문 바로가기

전체 글646

언리얼엔진5 3장 [산술연산자, SET, ++] ▣ 안녕하세요. 이번장에서는 블루프린트에서 간단한 산술연산을 공부해 보겠습니다. ▣ 처음에 프로젝트를 열어 BluePrint를 열어주시고 integer 변수를 생성합니다. 그리고 컴파일버튼을 클릭한 다음 변수의 기본값을 100으로 지정합니다. CTRL키를 누르고 변수를 드래그 한 다음에 변수의 GET을 ALT키를 눌러 변수를 드래그 한 다음에 변수의 SET을 가져옵니다. 그리고 (-) 산술연산자를 검색해서 가져온 다음에 왼쪽 밑에 값을 1로 지정하여 변수 값에 -1을 출력하는 노드를 작성해 보겠습니다. ▣ 여기서 한가지 팁을 드리면 노드를 연결할 때 조금 지저분하게 연결되는데 정렬하고 싶은 노드를 블록을 지정한 다음에 Q키를 누르면 간단하게 정렬이 됩니다. 그리고 컴파일 버튼을 클릭하고 CTRL키를 누른.. 2023. 1. 14.
언리얼엔진5 2장 [블루프린트, 변수, get, set, formatText] ▣ 안녕하세요. 이번장에서는 블루프린트 변수 그리고 변수를 get, set에 대한 부분 formatText에 대해 공부해 보도록 하겠습니다. ▣ level bluePrint를 열어주시고 Event Graph에서 왼쪽메뉴를 보면 VARIABLES 변수에 대한 메뉴가 있습니다. 여기서 + 버튼을 누르시면 ▣ 이렇게 변수가 생성된 걸 확인할 수 있습니다. 여기서 Boolen이라고 되어 있는 자료형을 누르면 많은 자료형들이 나와 있는 걸 확인할 수 있습니다. ▣ 기본적으로 많이 사용하는 몇 가지만 살펴보겠습니다. Byte형는 1byte 크기 정수로 0~255까지만 표현이 가능합니다. 보통 주인공의 능력치, 캐릭터 커스텀할 때 쓰이는 게이지 0~255를 표현할 때 사용합니다. integer도 동일하게 정수이지만 .. 2023. 1. 13.
언리얼엔진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.
C++ 12장 [함수객체] ▣ 안녕하세요. 이번장에서는 함수를 호출할 때 매개변수를 객체로 전달하는 코드를 공부해보도록 하겠습니다. ▣ 클래스의 소멸자와 생성자를 각각 지정해주고 메인 함수에서 객체를 정의한 다음에 디버그를 하면 이렇게 클래스 생성 시 생성자와 소멸자가 호출되는 걸 확인할 수 있습니다. 이번에는 클래스 멤버함수가 아닌 따로 함수를 만들고 그 함수의 매개변수에 클래스 객체를 전달하는 코드를 작성해보겠습니다. ▣ 코드를 작성했다면 이제 코드를 살펴보겠습니다. sum(cal) 코드를 살펴보면 sum()이라는 함수에 매개변수에 cal 클래스 객체를 전달했습니다. 그럼 클래스가 전달됩니다. 여기서 중요한 건 그 클래스의 생성자는 호출되지 않고 소멸자만 호출된걸 확인할 수 있습니다. 그 이유는 전달 받은 원본의 클래스 객체의.. 2022. 11. 3.
C++ 11장 [string] ▣ 안녕하세요. 이번장에서는 string클래스에 대해 공부해보도록 하겠습니다. 문자열은 문자를 여러 개를 관리하는 문자 배열을 의미합니다. 다시 말해 문자를 여러 개 관리하는 메모리를 의미합니다. C언어에서는 char라는 자료형으로 char str [5] 이렇게 문자열을 다뤘습니다. 배열은 처음에 선언할 때 메모리의 크기를 먼저 정하기 때문에 문자열을 저장하고 다루기가 어려웠고 관리하기도 어려움이 많았습니다. 그래서 C++에서는 그점을 개선하기 위해 표준 라이브러리에서 제공하는 클래스, 문자열 객체가 바로 string입니다. string클래스는 문자열의 크기에 맞춰서 메모리 크기를 조절하기 때문에 앞에 이야기한것처럼 메모리의 크기를 지정하고 미리 생각했야 했던 문제들은 쉽게 해결됩니다. 이제 코드를 작성.. 2022. 10. 28.
C++ 10장 [this 포인터] ▣ 안녕하세요. 이번장에서는 this포인터를 공부해보도록 하겠습니다. this 포인터는 말 그대로 포인터를 의미하며 단순한 포인터가 아닌 멤버 함수를 호출한 객체 자신을 가리키는 포인터, 객체 자신에 대한 포인터를 의미합니다. 코드를 작성하며 공부해보도록 하겠습니다. ▣ 기본적인 클래스와 멤버 함수를 만들어주세요. this->n = n;코드를 보시면 이게 무슨 코드이지?라고 생각하실 거라 생각합니다. 이 코드를 해석하면 this(자신의 객체 주소를 의미하고), ->는 주소에 접근하는 연산자입니다. 그리고 = n 은 멤버 함수에 있는 int n 매개변수의 값을 현재 객체에 있는 멤버 변수에 대입을 하라는 의미입니다. 디버그하고 출력을 해보면 각각 객체마다 지정했던 멤버 함수에 값이 출력되는 걸 확인할 수 .. 2022. 10. 27.
C++ 9장 [메모리 할당] ▣ 안녕하세요. 이번장에서는 메모리 할당에 대해 공부해보겠습니다. 메모리 할당은 프로그래밍에서 실행하는 동안 사용할 메모리 공간을 할당(배정, 몫을 나누는 것) 의미합니다. ▣ 그럼 왜 메모리 할당이 필요할까요? 우리가 프로그램을 만들 때 "내가 몇 기가짜리를 만들어야지"라고 계획을 하지 않습니다. 그렇게 계획을 하고 만들더라도 프로그램에 텍스트 입력 수, 이미지나 도형 크기 등등 메모리를 어느 정도 사용할지에 대한 부분을 모두 다 생각하며 제작하는 건 불가능합니다. 그렇기 때문에 프로그램을 만들고 실행 중 내가 필요한 메모리를 할당받고 필요 없을 때 반환하는 메모리 할당을 진행해야 합니다. 그럼 이제 코드를 작성하며 공부하겠습니다. ▣ int* p = (int*) malloc(sizeof(int)) 이.. 2022. 10. 26.
C++ 8장 [포인터 객체] ▣ 안녕하세요. 이번장에서는 포인터로 객체를 다루는 코드를 공부해보도록 하겠습니다. 포인터는 주소를 저장하는 변수입니다. C언어의 포인터의 개념과 동일합니다. 혹시 포인터를 모르시는 분은 C언어 공부에 포인터 부분을 꼭 공부해보세요. 이제 포인터 객체를 코드를 작성하며 공부해보도록 하겠습니다. ▣ 먼저 기본적인 클래스를 생성해주는 코드와 멤버 함수 코드를 작성해주세요. 그리고 메인 함수에서 Calculator num; 로 객체를 선언합니다. 그런 다음에 포인터를 선언합니다. Calculator* p = num(자료형 변수 이름 = 주소)의 형태로 코드를 작성합니다. 변수를 선언하는 코드와 동일합니다. 그리고 포인터를 이용하여 멤버 함수를 호출해보겠습니다. 포인터에 있는 멤버함수를 접근하기 위해서.(점) .. 2022. 10. 20.
pygame - [소리 제어] ▣ 안녕하세요. 이번장에서는 pygame으로 소리를 제어하는 코드를 공부해보겠습니다. ▣ 먼저 소리를 재생하기 위해서 소리를 가져오는 코드를 작성해야 합니다. pygame.mixer.Sound() 함수를 이용해서 소리를 가져와야 합니다. Sound() 함수에서 매개변수에 파일 위치를 지정할 때 주의해야 할 건 \를 / 기호로 바꿔서 지정해야 합니다. 소리 파일을 지정했다면 이제 소리의 크기를 제어해보겠습니다. sound변수에서. 점으로 접근을 하게 되면 이렇게 sound.set_volume() 함수로 소리를 제어할 수 있습니다. 함수에서 소리의 범위는 0.0~1.0입니다. 소리를 재생하는 코드는 sound.play() 함수로 재생합니다. 그냥 play() 함수로 재생할 수도 있지만 play() 함수안에 .. 2022. 10. 14.
C++ 7장 [인라인 함수] ▣ 안녕하세요. 이번장에서는 인라인 함수를 공부해보겠습니다. 인라인 함수는 인라인 함수 호출 시 그 호출한 코드에 인라인 함수 코드 자체가 안으로 들어가는 함수를 의미합니다. ▣ 정리하면 짧은 코드를 함수로 만들면 함수 호출의 오버헤드가 커서 프로그램 실행 시간이 길어집니다. 오버헤드란 프로그램의 실행 흐름에서 나타나는 현상을 이야기하는데 쉽게 이야기하면 메인 함수로 프로그램을 실행 흐름 중에 다른 곳에 떨어진 위치의 함수 코드를 실행시켜야 할 때, 메모리와 시간을 드리게 됩니다. 그걸 오버헤드 현상이라고 합니다. 만약 우리가 짧은 함수를 호출할 때마다 스택 메모리를 할당하고 함수에 따라 여러 가지 연산을 하는 이 과정들로 하여금 많은 메모리와 시간을 들이게 되면 효과적이지 않고 속도가 저하됩니다. 그렇.. 2022. 10. 13.
C++ 6장 [클래스4] ▣ 안녕하세요. 이번장에서는 접근 지정자를 공부해보겠습니다. 우리가 클래스를 공부하면서 C언어의 구조체와 거의 동일하다고 알고 있습니다. 하지만 클래스와 구조체의 가장 큰 차이점은 접근 지정자입니다. 접근 지정자란 객체를 캡슐화하고 외부에서 객체를 접근할 수 있는지에 대한 허용 여부를 지정해주는 키워드입니다. 코드를 작성하며 공부해 보록 하겠습니다. ▣ 먼저 public은 클래스 내외의 모든 함수에 접근 가능 키워드입니다. 그렇기 때문에 cal.number = 30 코드에서처럼 객체를 만들고 멤버 변수에 접근이 가능합니다. 여기서 주의해야 할 점은 꼭 접근 지정자 끝에 : 콜론을 붙여주세요. ▣ private은 클래스 내의 멤버 함수만 접근 가능하고 외부에서는 접근할 수 없습니다. 그래서 cal.numb.. 2022. 10. 12.
C++ 5장 [클래스3] ▣ 안녕하세요. 이번장에서는 클래스 3번째 시간으로 소멸자를 공부해보도록 하겠습니다. ▣ 소멸자는 객체가 소멸되는 시점에서 자동으로 호출되는 클래스 멤버 함수를 의미합니다. 저번장을 이어서 복습하면 생성자는 객체가 생성되었을 때 소멸자는 소멸되었을 때 호출하는 멤버 함수들입니다. 소멸자를 만들려면 클래스 이름 앞에 ~ 기호를 붙여야 합니다. 또 소멸자는 한 개만 존재해야 합니다. 만약 소멸자가 선언되지 않으면 기본 소멸자가 자동으로 생성됩니다. 그리고 소멸자는 리턴 타입이 없습니다. 생성자처럼 반환형이 없다는 의미입니다. 소멸자의 목적은 마무리 작업을 할 때 사용합니다. 그럼 코드를 작성하며 공부해보겠습니다. ▣ 소멸자를 생성하려면 ~Calculator() 코드에서처럼 클래스 앞에 ~ 기호를 넣으시면 됩.. 2022. 10. 7.
pygame - [이미지 제어] ▣ 안녕하세요. 이번장에서는 pygame으로 이미지를 제어하는 코드를 공부해보겠습니다. ▣ 이미지를 제어하기 위해서는 pygame.image.load() 함수를 사용해야 합니다. 이 함수는 이미지를 불러오는 함수입니다. 여기서 이미지 경로를 지정해야 하는데 \(백 슬래시) -> /(슬래시)로 변경하여 이미지 경로를 지정해야 합니다. 이미지의 위치를 모를 경우 이미지를 클릭하고 오른쪽 마우스를 누르고 속성을 눌러 확인하시면 됩니다. ▣ pygame.transform.scale() 함수는 이미지의 크기를 조절합니다. scale(이미지 변수, (크기)) 이런 식으로 매개변수 값을 넣으면 됩니다. pygame.transform.rotate() 함수는 이미지 회전을 제어할 수 있습니다. rotate(이미지 변수,.. 2022. 10. 6.
C++ 4장 [클래스2] ▣ 안녕하세요. 이번장에서는 클래스에 생성자에 대해 공부해보도록 하겠습니다. 생성자는 클래스가 객체로 생성될 때(정의할 때) 자동으로 실행되는 함수(생성자)라고 생각하시면 됩니다. 생성자는 오직 한 번만 실행합니다. 생성자 함수의 이름은 클래스 이름과 동일하게 작성해야 합니다. 생성자 함수의 반환형(리턴 타입)을 선언하지 않습니다. 단 함수에 매개변수는 넣을 수 있습니다. ▣ 생성자를 쓰는 이유는 객체가 생성될 때 필요한 초기화 작업을 하기 위함입니다. 이제 생성자를 코드로 공부해보겠습니다. ▣ 생성자 함수는 Calculator::Calculator()처럼 클래스와 동일하게 이름을 지정해주면 됩니다. 여기서 중요한 건 일반 함수와 다르게 반환형이 없는 점 주의해주세요. 코드를 다 작성하셨다면 이제 메인 .. 2022. 10. 6.
C++ 3장 [클래스1] ▣ 안녕하세요. 이번장에서는 클래스를 공부해보겠습니다. 클래스에 대한 부분은 내용이 많아서 여러 장으로 진행하도록 하겠습니다. ▣ 클래스란 객체를 정의하는 틀이나 설계도를 이야기합니다. 클래스는 C언어에서 구조체랑 비슷하다고 생각하시면 됩니다. 클래스를 만들어서 정의하면 그게 객체입니다. 객체는 자신만의 교유한 상태 행동을 구성하고 있습니다. 다시 말해 구조체처럼 클래스 안에 멤버 변수와 멤버 함수를 선언할 수 있습니다. 객체의 상태와 행동으로 생각하시면 됩니다. 그럼 코드를 작성하며 클래스를 공부해보겠습니다. ▣ 클래스를 선언하기 위해서는 class 키워드를 사용해야 합니다. 구조체와 동일한 형식으로 class 키워드, 클래스 이름을 지정해주시고 괄호를 이용하여 클래스의 범위를 지정해줍니다. 중요한 건.. 2022. 9. 30.
pygame - [텍스트입력] ▣ 안녕하세요. 이번장에서는 텍스트를 입력받고 입력한 텍스트를 화면에 바로 출력하는 코드를 공부해보겠습니다. ▣ 기본적인 화면 구성하는 코드를 작성하겠습니다. 항상 pygame을 진행하실 때 pygame.init() 초기화하는 코드를 잊지 말고 넣어주세요. 그리고 text를 입력 받을 변수를 만들어주시고, 글꼴 객체, 폰트 랜더링하는 코드까지 작성해주세요. ▣ 이제 무한반복으로 코드를 입력받아야 하기 때문에 while문을 통해서 무한반복을 하고 입력받는 코드를 작성 넣겠습니다. 먼저 기본적으로 pygame을 종료하는 코드가 있어야 하기 때문에 스페이스키를 누르면 pygame이 종료되는 코드를 먼저 작성했습니다. ▣ 그리고 이어서 if event.key == pygame.K_RETURN: 엔터 키를 누르는.. 2022. 9. 19.
pygame - [마우스 제어] ▣ 안녕하세요. 이번장에서는 마우스를 제어하는 코드를 공부해보겠습니다. ▣ 먼저 화면을 구성하는 코드를 작성해주세요. ▣ 그리고 무한 반복을 하는 while문에서 마우스를 제어하는 조건문과 스페이스키를 누르면 pygame 끝나는 코드를 작성했습니다. 이 장에서는 마우스 제어에 대한 부분만 설명하겠습니다. pygame.event.get() 함수는 마우스, 키보드 모든 이벤트에 대한 값을 가져오는 코드입니다. 마우스에 대한 코드를 한 줄씩 설명하면 if event.type == pygame.MOUSEBUTTONDOWN: 받아온 event에 type이 마우스 클릭이면 작동하는 조건문입니다. pygame.mouse.get_pos() 마우스 위치를 가져오는 함수입니다. 그럼 마우스를 클릭하면 pos변수에 마우스 .. 2022. 9. 16.