[Fundamental C++] 03. 빌드
·
C++/[서적] Fundamental C++ 프로그래밍 원리
1. 빌드의 구성빌드는 전처리, 컴파일, 링크 단계로 나누어질 수 있다. (1) 전처리전처리 지시문을 이용하여 컴파일 시점에 컴파일이 가능하도록 소스 파일에 원래 소스 구문을 복구하는 과정이다.#include, #define 등이 해당한다.//////////////////////////////// Main.cppvoid Func(char* str);void main(){ Func("Hello World !");}위의 코드에서는 링크 에러가 발생한다. Func 함수에 대한 선언은 했지만, 호출하는 과정에서 본체를 못 찾았기 때문이다. 따라서 #include 로 Func 본체가 정의되어있는 파일을 포함해주어야 한다. (2) 컴파일소스 파일을 기계가 읽을 수 있도록 기계어로 변환하는 과정이다. 이는 곧 ..
[Fundamental C++] 02. 선언과 정의
·
C++/[서적] Fundamental C++ 프로그래밍 원리
01. 정의해당 객체를 위한 메모리 영역을 확보하는 것 클래스 정의란 클래스가 어떻게 구성되어 있는지를 나타내는 설계도를 메모리에 저장하는 것. 개념적인 구조로서 존재할 뿐이다.멤버 객체가 선언되거나 멤버 함수가 선언 및 정의될 수 있다. 일반 객체와 함수들이 차지하는 메모리 영역은 프로세스가 사용하는 가상 메모리이다.클래스의 설계도가 저장되는 메모리 영역은 컴파일러가 사용하는 메모리이다. 실제 프로그램이 사용하는 메모리와 관련이 없다.클래스 객체에 대한 메모리가 할당될 경우 할당된 영역의 특정 부분이 멤버 객체에게 할당된다. 02. 선언어떤 객체가 존재하고 있음을 알리는 역할//////////////////////////////// A.cppint g_Val;int Func(){ return 1;..
[인생언리얼5] 04. 리플렉션 시스템
·
언리얼 엔진/[서적] 인생 언리얼5
1. 리플렉션언리얼 엔진에서 코드에 구현된 클래스와 변수, 함수 등을 미리 읽고 조사하는 기능이다. int 자료형은 플랫폼마다 메모리를 차지하는 크기가 달라지는 경우가 발생하므로 int32 정수 자료형을 사용한다. 이런 이유 때문인지 int 자료형의 경우 UPROPERTY 기능을 사용할 수 없다.1) UPROPERTY 옵션- EditAnywhere- EditInstanceOnly- EditDefaultsOnly- VisibleAnywhere- VisibleInstanceOnly- VisibleDefaultsOnly2) UFUNCTION 옵션- BlueprintCallable- BlueprintPure : Get으로 시작하는 노드로 호출 가능- 델리게이트 처리할 때도 사용 2. 클래스 전방 선언헤더파일에 ..
[인생언리얼5] 03. 실행 파일로 패키징하기
·
언리얼 엔진/[서적] 인생 언리얼5
패키징패키징 과정 1. C++ 클래스 파일과 블루프린트 파일들을 모두 컴파일한다. 2. 모델링, 음원 파일과 같은 리소스 파일들을 앱을 실행할 디바이스에 적합한 포맷으로 변환한다. (쿠킹) 3. 컴파일된 파일과 쿠킹된 파일을 묶어서 플랫폼에 맞는 실행 파일로 만든다.ex) PC → exe 파일, 안드로이드 → apk 파일기본 레벨 설정  [Edit] - [Project Settings] - [Maps & Modes] 탭에서 Game Default Map에 기본 레벨로 설정할 맵을 지정하면 됩니다.빌드 구성 이제 어떤 목적으로 패키징을 할 것인지 설정해야 합니다. [Edit] - [Project Settings] - [Packaging] 에서 Project 속성입니다. 빌드 구성설명Debug프로젝트 디버깅..
[인생언리얼5] 02. 세이브 및 로드
·
언리얼 엔진/[서적] 인생 언리얼5
SaveGameBP_SaveGame 생성 간단한 데이터를 저장하는 경우에는 블루프린트만으로 구현이 가능한데요.SaveGame 클래스를 상속받는 블루프린트를 하나 생성해주도록 합시다 !해당 클래스의 이름은 BP_SaveGame으로 설정해주었어요 !목표 변수 설정 세이브 및 로드를 적용할 변수 Score를 만들어주었구요 !세이브 Integer 자료형을 매개변수로 받는 Save Score 함수를 구현했어요 ! Create Save Game Object 함수를 호출해서 실제로 데이터를 저장할 클래스를 지정해줍니다. 해당 클래스를 Instance로 받아주고, 매개변수의 값을 Score 변수에 저장합니다. Score 변수에 데이터를 저장했으니, 저장한 상태로 Slot을 지정해주면 Slot Name으로된 시스템 슬롯..
[인생언리얼5] 01. 모델링, 머티리얼 속성
·
언리얼 엔진/[서적] 인생 언리얼5
모델링3ds Max, 마야, 블렌더 등 3D 모델링 아티스트들이 제작한 모델링 파일을 임포트 해야하는 상황이 있을 텐데요 !Import 시 모델 데이터를 어떻게 처리해서 가져올 것인지 설정할 수 있는 옵션을 살펴봅시다. 모델링의 방향과 크기가 언리얼 엔진에 맞춰서 작업되지 않았다면, 방향이나 Pivot이 어긋나 있을 수 있습니다.Transform 속성에서 위치, 회전 값을 조정해서 언리얼 엔진에 맞게 변환해줄 수 있어요 ! 또한, 원본의 사이즈를 조절해야 할 때에는 균등 스케일 (Uniform Scale) 값의 조정을 통해 맞춰줄 수 있습니다. 외부 3D 모델링 프로그램의 좌표계와 언리얼 엔진의 좌표계가 다른 경우가 종종 있다고 해요. 이럴 때에는 기타 속성의 Force Front XAxis (전방 X축..
[언리얼엔진] 05. Enemy 플레이어 추적
·
언리얼 엔진/[개인프로젝트] FPS 구현 맛보기
Enemy 기능 구체화코드 작성 막상 Enemy 클래스를 구현하려고 보니, 빼놓은 것들이 좀 있더라구요. 기본적으로 몬스터들은 플레이어를 바라보며 다가와야합니다. 여기서 필요한 건 "회전" 기능과 "이동" 기능입니다. 따라서, 이동속도와 회전속도가 필요해요 !언리얼에서는 캐릭터 이동에 특화된 "CharacterMovementComponent"가 존재하죠. 컴포넌트의 기능을 활용하기 위해 Actor를 상속받는 구조에서 Character를 상속받는 구조로 변경해주도록 하겠습니다.마지막으로는 공격 기능도 추가해주어야 하니, Attack 함수도 넣겠습니다. Enemy.h더보기#pragma once#include "CoreMinimal.h"#include "Apocalypse/ApocalypseCharacter...
[코딩테스트] 문자열 대소문자 변환
·
코딩테스트/알고리듬
아스키 코드문자열의 대소문자를 변환하는 첫 번째 방법은 아스키 코드를 활용하는 것입니다 !A ~ Z가 65 ~ 90에 해당하고,a ~ z가 97 ~ 122에 해당해요.문자열을 순차적으로 탐색하면서 각 아스키 코드에 따라 -32 혹은 +32를 해주면 됩니다 ! string str = "abcDEF";for(char c : str){ // 대문자 변환 if(c >= 97 && c = 65 && c  toupper, tolowertoupper와 tolower 메소드를 활용하는 방법도 있습니다 !매개변수로는 char 자료형이 와야합니다 ! string 자료형을 넣어서 한 번에 변환하고 싶어도 안 됩니다 ! string str = "abcDEF";// 대문자 변환for(int i=0; i Transfo..