본문 바로가기

Unreal 공부

1일차 (Unreal Battery Collector Tutorial 따라하기) 1~5강

ACTOR ( UObject에 기반하여 만들어짐 )

- Header File (기본 생성 코드)

UCLASS( )
에디터가 가비지 콜렉션, 키워드 설정 등 UObject의 특성을 갖도록 해주는 클래스

GENERATED_BODY( )
보일러 플레이트 텍스트로 엔진 링킹 등을 담당함

BeginPlay( )
해당 Actor가 생성되었을 때 호출될 함수 

Tick( )
매 프레임마다 호출될 함수

- Cpp File (기본 생성 코드)

PrimaryActorTick.bCanEverTick (bool 타입)
해당 Actor가 매 프레임마다 호출되게 할 것인지를 정함
True이면 매 프레임 호출, False이면 매 프레임 호출 X


- 추가 내용

UPROPERTY(VisibleAnywhere, BlueprintReadOnly)

// Static mesh to represent the pickup in the level 
class UStaticMeshComponent* PickupMesh


UPROPERTY에 BlueprintReadOnly 특성을 주면?
레벨에 아이템을 놓거나 또는 이 클래스를 부모로 하는 블루프린트를 만들면 이 컴포넌트가 존재하는 것은 알 수 있지만 수정이나 삭제 등은 하지 못함

UFUNCTION에 BlueprintPure와 BlueprintCallable의 차이는?
공통점 ) 둘 다 코드로 작성되었고 블루프린트에서 호출 가능함

BluePrintPure BlurPrintCallable
값 변경 가능하며 반환값을 달라고 요청했을 때만 실행 실행 순서 핀에서 실행 신호가 입력되었을 때에만
실행되며 결과값을 아웃풋핀에 저장

∴ 자주 변경하지 않을 것으로 예상되는 코스트가 큰 결과값에 BlueprintPure보다는 BlueprintCallable이 더 적절함
   계산이 빠르고 더 자주 변경되는 값에는 BlueprintPure을 사용해야 함

StaticMesh가 물리효과를 가지게 하고 싶다면?

// 물리 시뮬레이션을 하려면 true, 끄려면 false
SetSimulatePhysics(true);


Unity와 연관지어 생각해보기
- SetSimulatePhysics를 true로 만드는 것과 Unity의 Rigidbody에서 IsKinematic을 false로 만드는 것은 같은 의미일까?

중요하다고 생각하는 내용
- BlueprintPureBlueprintCallable의 차이(뭐가 어떤 상황에 더 좋을까? 어떤 상황에 실행될까?)

Unreal 공식 문서

Unreal 문서에 있는 BlueprintPure와 BlueprintCallable
Unreal 문서에 있는 BlueprintReadOnly와 BlueprintReadWrite


오늘 후기 
1. Unreal Engine을 처음 다뤄보다보니 약간 헤매게 된다.
2. 노트북으로 코딩을 하다보니 얘가 Unreal을 돌리기 버거워하는 듯 했다. 쿨러 돌아가는데 미세하게 끼긱거리는 소리가 나고 있다. 
3. Visual Studio에서 Unreal c++을 편하게 쓸 수 있게 하는 확장 도구들을 설치하고 Project열고 컴파일하는데 시간이 많이 걸려서 오늘 이렇다할 성과를 못내서 아쉽다. 강좌에서는 나름 빨리 되던데 나는 한 번 컴파일하는데 5분정도 걸린걸 보고 이것이 노트북의 한계인가? 라고 생각했다.