[UE5] 언리얼 핵심 오브젝트 몇가지

라멘커비·2024년 5월 29일
0

Unreal Engine

목록 보기
3/7
post-custom-banner

블루프린트 사용한다? ⇒ 에디터에서 모든 걸 해결했다. VS를 사용할 필요가 없음. 근데 반복문부터 노드로 만들면 짜증나고 이해하기 힘들다고 함.

핵심 오브젝트(클래스)

ULevel

레벨 오픈하면 생성,

레벨 전환하면 파괴

AGameMode

생성 레벨과 함께 생성

레벨과 함께 파괴

생명 주기가 ULevel과 AGameMode는 비슷하다.

APawn

AActor를 상속받는 APawn

지형과 상호작용 등등을 지원. 기본 충돌기능, 이동 및 길찾기 등등에 필요한 기능을 내부에 다 보유하고 있다.(이거 안쓸거라고하심)

언리얼에서 플레이어가 이입할 수 있는 주인공으로서 만드는 애. 여러 개 만들 수 있음. 레벨 화면에 끌어다 놓기만 해도 만들어짐.

월드세팅에 디폴트 폰 클래스는 언리얼이 얘가 주인공이겠네- 하고 딱 1개 대신 만들어줌. 그리고 카메라가 걔를 따라다니게 해줌.

GameMode의 BeginPlay가 먼저 실행되고 Pawn의 BeginPlay가 실행됨

lib ⇒ 내 exe파일과 lib의 코드가 완전히 1개가 돼서 exe파일이 나온다.

dll ⇒ os가 dll코드를 가지고 있고 내가 실행될 때 빌려서 사용하는 개념. 중간에 사용하다가 언로드를 할 수가 있다. 그리고 dll로 만든다고 lib로 안나오는게 아님. dll로 바꾸면 pragma comments 로 읽어오는게 안댐.

dll에 존재하는 함수들에게 선언은 했지만 아래에 공개하고 싶지 않은 함수들이 있을 수 있음. 공개하고 싶은 애들은 클래스명 앞에 __declspec(dllimport) 붙여서 머시기 함…. 그대신 공개할 모든 함수에 붙여야 함.

그래서 언리얼엔진에 defaultPawn 코드 보면 define으로 줄여서 dllimport들이 붙어있음. (엔진은 dll이니까)

→ 그래서 defaultPawn 베껴올 때 나는 dllimport 안붙여도됨. 내가만든함수 나만쓰니까. 언리얼 엔진은 쓸 가능성들이 있으니까 붙이는거고 나는 붙일필요가 없음.

언리얼에서 불완전한 형식을 보게되면 그냥 구글에 검색하면 바로 공식 문서 나옴. include문까지 다 알려줌.

나중에 CDO라는것도 알려주신다는데 그게 몰까,,,

실습 - defaultPawn 베껴서 MyPawn 만들어보기

  • 사진 첨부

  • UFUNCTION

    • 블루프린트에서도 쓰고싶은 함수들을 위해 언리얼이 함수들을 알아야함. 조사를해야함. UFUNCTION이 있으면 그아래에 사용자가 중요하다고 생각하는 함수가 있다고 하는 규칙같은 거임. UFUNCTION 안 해주면 언리얼이 검사를 안 함. BlueprintCallable 넣으면 블루프린트에서 호출하는 execMoveForward 같은 함수 만들어짐.
    • UFUNCTION은 언리얼에서의 함수의 사용방법을 정의내리는 언리얼 문법이라고 볼 수 있다. 그래서 UFUNCTION을 붙이면 언리얼이 특별히 관리하는 함수가 된다고 보면 된다.
    • UFUNCTION(내용) ⇒ 내용을 넣으면 이 함수를 내용의 옵션으로 사용하고 싶다는 것.

실습 - MyMove()함수 만들어서 블루프린트 노드에 뜨게 하기

실습 - X, Y, Z 축 확인


MyMove로 알아본거긴한데

Forward로 가는게 X축 좌우가 Y축 위아래가 Z축

Integration 설치

VS 인테그레이션 툴인데 거의 필수로 설치하라고 하심.

금기사항?

자기가 직접 헤더 만들어서 복붙하거나 배우지않은 다른 경로로 C++파일 만들기 → 2주간 하지마세요

#include “MyPawn.generated.h” 언리얼에서 자동으로 만들어줌. 위치를 맘대로 위로 올리면 안됨.

UCLASS() , 프로젝트명_API , GENERATED_BODY() : 셋다 바꾸지 말기. 헤더툴때문임. 언리얼에서 클래스로 인정(?)하기 위해 필요한것들

헤더툴

언리얼 헤더툴이란 코드치는 프로그램. 템플릿과 비슷하다?

지금 컨텐츠 프로젝트의 헤더를 싹다 읽음.

UCLASS()가 있다면 그부분을 바꿔버린다.

레벨 바꾸는 법

편집 > 프로젝트 세팅 : 프로젝트의 모든 세부사항에 대해서 설정할 수 있음.

  • 맵&모드 : 에디터 시작맵 (에디터 처음 켜질 때 맵), 게임 기본 맵(빌드해서 만들었을 때의 기본 맵)

이벤트그래프 노드에서 뭔가 수정했다면 꼭 컴파일 누르고 저장하고 실행해야 적용됨.

그리고 디버그 중지로 끄지말고 X눌러서 끄는 습관 들이기

profile
일단 시작해보자
post-custom-banner

0개의 댓글