공부 정리/API 프로젝트 (별의 커비) 콘텐츠
1. 코어 - Game_Core
CE : 하랑
2024. 2. 17. 16:18
Game_Core.h
#pragma once
#include <EngineCore\EngineCore.h>
class UGame_Core : public UEngineCore // 상속
{
public:
// 클래스 디폴트
UGame_Core(); // 디폴트 생성자
~UGame_Core(); // 디폴트 소멸자
UGame_Core(const UGame_Core& _Other) = delete;
UGame_Core(UGame_Core&& _Other) noexcept = delete;
UGame_Core& operator=(const UGame_Core& _Other) = delete;
UGame_Core& operator=(UGame_Core&& _Other) noexcept = delete;
protected:
// 오버라이드
void BeginPlay() override; // 시작
void Tick(float _DeltaTime) override; // 업데이트
void End() override; // 종료
private:
// 윈도우창 크기 (X,Y)
int windowX = 1000;
int windowY = 700;
// 윈도우창 위치 (X,Y)
int positionX = 200;
int positionY = 100;
};
(1) 복사 생성자, 대입 연산자
// 디폴트 복사 생성자
UGame_Core(const UGame_Core& _Other) = delete;
UGame_Core(UGame_Core&& _Other) noexcept = delete;
// 디폴트 대입 연산자
UGame_Core& operator=(const UGame_Core& _Other) = delete;
UGame_Core& operator=(UGame_Core&& _Other) noexcept = delete;
-> noexcept
- 내부에서 터지면 외부가 아닌 내부에서 오류 체크
- 예외를 외부로 넘기지 않는다.
-> delete
함수를 사용하지 못하게 하기위한 역할
-> 디폴트 복사 생성자(깊은 복사)와 디폴트 대입 연산자(얕은 복사)를 무의식적으로 사용할 수 있기에 사용
(2) EngineCore 상속
- 레벨 생성 가능
- 윈도우 크기, 위치, 이름 설정 가능
// 오버라이드
void BeginPlay() override; // 시작
void Tick(float _DeltaTime) override; // 업데이트
void End() override; // 종료
(3) BeginePlay()
- 윈도우 창 설정
MainWindow.SetWindowPosition({ positionX,positionY }); // 윈도우창이 뜨는 위치 Set
MainWindow.SetWindowScale({ windowX, windowY}); // 윈도우창 크기 Set
MainWindow.SetWindowTitle("Kirby Star"); // 윈도우창 타이틀 Set
- Level 생성
// Level 생성에 필요한 헤더
#include "TitleLevel.h"
// EngineCore에서 std::map<std::string, ULevel*> AllLevel; map으로 관리
CreateLevel<UTitleLevel>("TitleLevel"); // 타이틀 Level 생성
ChangeLevel("TitleLevel"); // 레벨 변경