TIL - Today I Learned : 참조와 포인터의 차이, TIL는 꼭 강의를 들으면서 정리하자..
오늘의 진도: Section 4: Crypt Raider 84. Scene Components ~ Const References & Out Parameters
내용을 슝슝 지나가서 완전 잊고 있었는데 막상 정리하려니 결국 강의를 다시 보게 된다..
오늘부터 다시 TIL을 잘 정리하자!!
Scene Components
Scene Component는 다른 Scene Component에 붙을 수 있고
Transfrom (Position + Rotation + Scale)을 가진 컴포넌트이다.
일전에는 Static Mesh Component (Mesh를 나타내는 컴포넌트)나
Skeletal Mesh Component(애니메이션을 적용할 수 있는 컴포넌트)를 보았는데
Actor(개체)에 다양한 구성요소들(Component)이 포함되고 Scene Component도
특정 목적(Transform)을 위해 Actor에 포함되는 요소이다.
Unity로 생각하자면 GameObject에 붙이는 Component인 것이다.
Line Tracing & Sweeping
UE_Tracing == Unity_RayCasting
두지점에 사이에 가상의 레이저를 쏘아 충돌하는 개체를 검출 한다.

개체의 Collision 항목을 보면 Trace Responses라고 있는데 각각의 목적은 다음과 같다.
Visibility : 눈에 보이는 모든 것, 시야 판정에 사용됨
Camera : 카메라 뷰와 관련된 충돌 검사를 수행할 때 사용됨
Trace Channel을 통해 특정 개체만 검출할 수 있다.
Trace Channel은 Edit -> Project Settings -> Engine -> Collision에서 설정 가능하다.

GetWorld()
월-드는 말 그대로 게임의 세상이다. World에서는 모든 레벨과 엑터가 랜더링 된다.
Level은 World의 한부분이다. 게임 세상의 마을이 될 수도 있고 던전이 될 수도 있다.
World의 상위는 이제 Package가 되겠지..

Line Tracing을 하다 갑자기 World이야기가 나온이유는
Unreal Engine에서는 Line Tracing 을 World에 속한 기능이다.
생각에는 World에서 모든 개체의 랜더링을 맡기 때문에 특정 개체에 대한 충돌 감지를 할 수 있기 때문이라 생각된다.
Unity에서는 Physics안에 RayCasting이 있고 Layer Mask를 이용해 특정 개체에 대한 충돌을 감지한다.
Unreal Engine에서는 TraceChannel로 어떤 개체들을 ignore / overlap / block 할지 정할 수 있다.


https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/Engine/UWorld
DrawDebugLine()
LineTrace가 제대로 되었는지 확인할 수 있게 가상의 레이저를 쏘는 것이다.


References vs Pointers
Reference
참조는 철수를 철이라 부르는 것이다.
철수든 철이든 둘다 하나의 개체를 뜻한다.
참조는 선언과 동시에 초기화 해야한다.
Null이 될 수 없기 때문이다.
참조는 초기화 후 다른 변수를 참조할 수 없다.
철수를 철이라고 부른 후에
영희를 철이라고 부를 수 없는 것이다.
int Chulsoo = 10;
int Yonghee = 20;
int& Chulee = Chulsoo;
Chulee = Yonghee;
위와 같은 상황에서는 Chulsoo == Chulee == 10이었지만
Chulee = Yonghee 후 Yonghee == Chulee가 되는 것이 아니라.
Chulsoo == Chulee == 20(Yonghee의 값)이 되는 것이다.
Pointer
포인터는 '아, 걔?' 정도일것이다.
걔는 아직 초기화하지 않아도 된다. nullptr가 가능하다. (걔가 누구여?)
그래서 걔는 철수가 될 수도 있고 영희가 될 수도 있다.


Const Referneces & Out Parameters
매개변수로 전달된 값이 변경되길 원치 않는다면 앞에 const를 넣어 참조를 변경할 수 없게 한다.

변수가 선언되었지만 값이 없이 바로 함수로 전달되는 변수가 있다면
이는 호출한 함수에서 추가적으로 값을 변경 후 반환하기 위함이다.
이를 Out Paramter라 한다.

학습 강의 : Udemy Unreal Engine 5 C++ 개발자: C++ 학습하고 비디오 게임 제작하기
'Unreal Engine > Udemy:UE5 C++ 학습하고 게임 만들기' 카테고리의 다른 글
| Unreal Day - 27 - Physics Handle (0) | 2024.06.21 |
|---|---|
| Unreal Day - 26 - Hit! (0) | 2024.06.18 |
| Unreal Day - 24 - FMath::VInterpConstantTo (2) | 2024.04.21 |
| Unreal Day - 23 - Pointer & Dereferencing & Arrow Operator (2) | 2024.04.20 |
| Unreal Day - 22 - Inheritance & Composition (0) | 2024.04.19 |