박하의 나날

[20] Object

프로그래밍/Unreal

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
 
#include "GameFramework/Actor.h"
#include "Pickup.generated.h"
UCLASS()
class BATTERYCOLLECTOR_API APickup : public AActor
{
    GENERATED_BODY()
    
public:    
    // Sets default values for this actor's properties
    APickup();
 
    // Called when the game starts or when spawned
    virtual void BeginPlay() override;
    
    // Called every frame
    virtual void Tick( float DeltaSeconds ) override;
 
cs

*플레이 클래스: Object, Actor, Component

대다수의 게임플레이 클래스에 파생해 올수 있는 클래스 유형: UObject, AActor, UActorComponent, UStruct

UObject :기본 구성 요소, UClass와 함께한다.
프로퍼티와 메소드의 반영, 프로퍼티의 시리얼라이제이션, 가비지 컬렉션, 이름으로 UObject 찾기,
프로퍼티에 환경설정 가능 값, 프로퍼티와 메소드에 네트워킹 지원 등의 서비스 제공.

UObject에서 파생되는 각 클래스에는 그에 대한 단독개체 UClass가 생성되어 클래스 인스턴스에 대한
모든 메타 데이터가 포함된다.

5) UCLASS() : UObject와 인스턴스가 어떤 모양인지 어떤 프로퍼티가 네트워크 대상인지 등을 설명하는것. 

(=UClass 매크로는 UObject에게 기반으로 삼은 유형에 대해 설명해주는 UClass로의 레퍼런스를 넘겨준다.)

UMyObject를 보이도록 만든다.

클래스를 정의하는 프로퍼티와 함수 세트(일반 c++함수와 변수지만 오브젝트 시스템 안에서의 동작을 제어하는 언리얼 전용 메터데이터가 붙어있음)가 들어있다.
주어진 오브젝트인스턴스에 대해 UClass, CDO 둘다 구할수는 있지만 일반적으로는 읽기 전용으로 간주되어야 한다.
오브젝트 인스턴스에 대한 UClass는 GetClass 함수를 사용하여 언제든 접근 가능하다.

CDO : Class Default Object 각 UClass당 하나씩 유지한다.
기본 "템플릿" 오브젝트로 클래스 생성자에 의해 생성된 이후 변경되지 않는다.


6) 이 클래스를 다른 모듈에 노출시키고자 하면 MYPROJECT_API 으로 지정하면 된다.
의도적으로 다수의 프로젝트에 클래스를 노출시켜 기동성있는 자체 독립적인 함수성을 제공하고자 하는 경우,
게임 프로젝트에 포함시킬 모듈이나 플로그인일때 사용한다.


8)GENERATED_BODY() :
인수를 받진 않지만 클래스가 엔진에 필요한 인프라 스트럭쳐를 지원하도록 구성한다.
모든 UCLASS에 필수. Public으로 설정한다.

18)Tick
오브젝트가 어떻게 업데이트되는지. 프레임당 한번이 아니라 사용자 설정 최소 간격마다 tick이 가능하다.

 

 

'프로그래밍 > Unreal' 카테고리의 다른 글

[22]npc 대화상자  (0) 2017.06.01
[21]언리얼 오브젝트 처리  (0) 2017.05.22
0521  (0) 2017.05.21
[19] UE4 C++_tutorial 01  (0) 2017.05.21
[18]UE4 C++_tutorial 0  (0) 2017.05.17