1. Object
1) UObject
UObject๋ ์ธ๋ฆฌ์ผ์ด ์ค๊ณํ ์๋ก์ด ์์คํ ์ ๋จ์ ์ค๋ธ์ ํธ๋ก ์ธ๋ฆฌ์ผ์ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ์์ํ๋ ๋ฒ ์ด์ค ํด๋์ค์ด๋ค.
- C++ ์ค๋ธ์ ํธ(๋ค์ดํฐ๋ธ ํด๋์ค)
- ์ ์์ค์ ๋น ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ธฐ๋ฅ ๊ตฌํ์ ์ฌ์ฉํ๋ค.
- ์ ๋์ฌ F
- UObject ์ค๋ธ์ ํธ
- C++ ์ค๋ธ์ ํธ์ ๊ฐ์ฒด์งํฅ์ค๊ณ๋ฅผ ์ํ ๋ค์ํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ค๋ธ์ ํธ์ด๋ค.
- ์ฝํ ์ธ ์ ์์ ๊ด๋ จ๋ ๋ณต์กํ ์ค๊ณ ๊ตฌํ์ ์ฌ์ฉํ๋ค.
- ์ ๋์ฌ U
2) UHT(Unreal Header Tool)
UObject๋ฅผ ์์ํ๋ฉด ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋๋ฐ, ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํค๋ ํ์ผ์์ ์ ์ฒ๋ฆฌ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ํ์ํ ์ ๋ณด๋ฅผ ์์งํด์ผ ํ๋ค. ์ด๋ฌํ ์ ์ฒ๋ฆฌ ๋จ๊ณ๋ UHT์์ ์ด๋ฃจ์ด์ง๋ค.
์ธ๋ฆฌ์ผ ํ๋ก์ ํธ ๋น๋ ์ ์ฐ์ UHT๋ ์์ค ์ฝ๋๋ฅผ ๋ถ์ํ์ฌ .generated.h ์์ค ์ฝ๋๋ฅผ ์์ฑํ๋ค. ๊ทธ ํ ์ปดํ์ผ๋ฌ๊ฐ .h, .cpp, .generated.h ํ์ผ์ ์ปดํ์ผํ์ฌ ๋น๋๋ฅผ ์๋ฃํ๋ค. ์ด๋ .generated.h ํ์ผ์๋ ๋งคํฌ๋ก ๋ฑ๊ณผ ๊ฐ์ ๋ฉํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค.
- UCLASS() ๋งคํฌ๋ก: UObject ์์ ๋ช ์
- UPROPERTY() ๋งคํฌ๋ก
- UFUNCTION() ๋งคํฌ๋ก
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include 'MyObject.generated.h'
UCLASS()
class MYPROJECT_API UMyObject : public UObject
{
GENERATED_BODY()
};
3) ๋ค์ํ ๊ธฐ๋ฅ
UObject๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
- CDO(Class Default Object): ํด๋์ค์ ๊ธฐ๋ณธ ๊ฐ๊ณผ ํ์ ์ ๋ณด ์ ๊ณตํ์ฌ ๊ธฐ๋ณธ ๊ฐ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค.
- GC(Garbage Collection): ์ฐธ์กฐ๋์ง ์๋ ๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ์๋ ํด์ ํ ์ ์๋ค.
- Reflection: ๊ฐ์ฒด ์ ๋ณด๋ฅผ ๋ฐํ์์์ ์ค์๊ฐ ์กฐํํ ์ ์๋ค. ์ฆ, ์ปดํ์ผ ๋จ๊ณ์์๋ ๋ธ๋ฃจํ๋ฆฐํธ์ ์กด์ฌ๋ฅผ ๋ชจ๋ฅด์ง๋ง ๋ฐํ์์์๋ ๋ธ๋ฃจํ๋ฆฐํธ์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ ์ ์๋๋ก ํ๋ค.
- Serialization: ๊ฐ์ฒด์ ์์ฑ ์ ๋ณด๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ์ ์ฅ, ์ ์กํ ์ ์๋ค.
- Delegate: ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ์ ๋ฎ์ถ ์ ์๋ ๋ธ๋ฆฌ๊ฒ์ดํธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- Replication: ๋คํธ์ํฌ ์์์ ๊ฐ์ฒด ๊ฐ์ ๋๊ธฐํ๋ฅผ ํ ์ ์๋ค.
- Editor Integration: ์ธ๋ฆฌ์ผ ์๋ํฐ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๊ฐ์ ํธ์งํ ์ ์๋ค.
2. Actor
Actor(์กํฐ)๋ ๋ ๋ฒจ์ ๋ฐฐ์นํ ์ ์๋ ์ค๋ธ์ ํธ์ด๋ค. ๋ ๋ฒจ์ ์๋ ๋ชจ๋ ๊ฒ์ด ์กํฐ๋ผ๊ณ ๋ณผ ์ ์๋ค.
- ๋ชจ๋ ์กํฐ๋ Transform์ด ์กด์ฌํ๋ค.
- ์ปดํฌ๋ํธ๋ค๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- ๋ฃจํธ ์ปดํฌ๋ํธ๊ฐ ๊ทธ ์กํฐ๋ฅผ ๋ํํ๋ฉฐ ์กํฐ์ ์์น๊ฐ ๊ณง ๋ฃจํธ ์ปดํฌ๋ํธ์ ์์น๊ฐ ๋๋ค.
- AActor๋ ๋ฒ ์ด์ค ์กํฐ ํด๋์ค์ด๋ค.
1) ํน์ ์กํฐ
๊ธฐ๋ณธ ์กํฐ์ ์ผ์ ํ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋ ํน์ ์กํฐ ์ ํ์ด ์๋ค.
- Pawn(ํฐ)์ ์ ์ด ๊ฐ๋ฅํ ๊ฒ์ ์ค๋ธ์ ํธ๋ก ํ๋ ์ด์ด๋ AI ์ค๋ธ์ ํธ์ ์ฌ์ฉ๋๋ค.
- ์์ง์ผ ์ ์์ผ๋ฉฐ ์ถฉ๋์ด ๊ฐ๋ฅํ๋ค.
- ์ปจํธ๋กค๋ฌ ์์ ๋ฅผ ํตํด ํ๋ ์ด์ด๋ AI์ ์ํด ์์ง์ธ๋ค.
- Character(์บ๋ฆญํฐ)๋ ํฐ์ ์์์ผ๋ก ์ด์กฑ ๋ณดํ๊ณผ ๊ฐ์ ์๋ฐํ์ ์ฌ์ฉ๋๋ค.
- GameMode(๊ฒ์ ๋ชจ๋)๋ ๊ฒ์์ ๋ํ ๊ธฐ๋ณธ ๊ท์น๋ค์ด ์ง์ ๋๋ค.
- ์กด์ฌํ๋ ํ๋ ์ด์ด์ ๊ด๋์์ ์๋ ๋ฌผ๋ก , ํ์ฉ๋ ํ๋ ์ด์ด์ ๊ด๋์ ์ต๋ ์
- ํ๋ ์ด์ด๊ฐ ๊ฒ์์ ๋ค์ด์ค๋ ๋ฐฉ์, ์คํฐ ์์น ์ ํ ๊ท์น๊ณผ ๊ธฐํ ์คํฐ/๋ฆฌ์คํฐ ๋์ ํฌํจ ๊ฐ๋ฅ
- ๊ฒ์ ์ผ์์ ์ง ๊ฐ๋ฅ ์ฌ๋ถ, ๊ฒ์ ์ผ์์ ์ง ์ฒ๋ฆฌ ๋ฐฉ์
- ๋ ๋ฒจ ๊ฐ์ ์ ํ, ๊ฒ์์ ์๋ค๋งํฑ ๋ชจ๋ ์์ ์ฌ๋ถ ํฌํจ
2) ๋ชจ๋น๋ฆฌํฐ
์กํฐ์๋ ๋ชจ๋น๋ฆฌํฐ๋ผ๋ ํ๋กํผํฐ๊ฐ ์กด์ฌํ๋ค. ์ด๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ฒด๊ฐ ๊ฒ์ ๋ด๋ถ์์ ์์ง์ด์ง ์๋ ๊ฒ(์คํํฑ)์ธ์ง, ์์ง์ด๋ ๊ฒ(๋ฌด๋ฒ๋ธ)์ธ์ง๋ฅผ ๊ฒฐ์ ํ๋ค. ๋ง์ฝ ๊ฐ์ฒด๋ฅผ ์์ง์ฌ์ผ ํ๋ค๋ฉด ๋ฌด๋ฒ๋ธ๋ก ์ค์ ํ๋ ๊ฒ์ด ๊ธฐ๋ณธ ์กฐ๊ฑด์ด๋ค.
'์ฒ์๋ถํฐ ๋ชจ๋ ์กํฐ๋ฅผ ๋ฌด๋ฒ๋ธ๋ก ์ค์ ํ๋ฉด ๋์ง ์์๊น?'๋ผ๋ ์๊ฐ์ ํ ์๋ ์๋ค. ๊ทธ๋ฌ๋ ๋ผ์ดํ ๊ณผ ์๋์์ ์ํด์ ๊ตฌ๋ถ์ด ํ์ํ๋ค. ๊ฒ์์์ ์ค์๊ฐ์ผ๋ก ๋น๊ณผ ๊ทธ๋ฆผ์๋ฅผ ๊ณ์ฐํ๋ ๊ฒ์ ๊ต์ฅํ ๋ถํ๊ฐ ๋์ ์ผ์ด๋ค. ํ์ง๋ง ๊ฒ์์์ ์ด๋ค ๋ฌผ์ฒด๊ฐ ์์ง์ด์ง ์์ ๊ฒ์ด๋ฉฐ ๊ด์๋ ์์ง์ด์ง ์๋๋ค๊ณ ํ์ ๋๋ค๋ฉด, ๋น๊ณผ ๊ทธ๋ฆผ์๋ฅผ ๋ฏธ๋ฆฌ ๊ณ์ฐํ์ฌ ์ค์๊ฐ ๊ณ์ฐ์ ํ์ง ์์๋ ๋๋ค.
3. Component
Component(์ปดํฌ๋ํธ)๋ ์กํฐ์ ๋ถ์ฐฉ๋๋ ๊ฒ์ผ๋ก ์กํฐ์ ์ด๋ค ์ปดํฌ๋ํธ๊ฐ ๋ถ์ฐฉ๋๋๋์ ๋ฐ๋ผ ๊ทธ ์ญํ ์ด ๊ฒฐ์ ๋๋ค.
- UActorComponent๋ ๋ฒ ์ด์ค ์ปดํฌ๋ํธ ํด๋์ค์ด๋ค.
- Transform์ด ์๋ค.
- Rendering, Collision์ด ์๋ค.
- USceneComponent๋ Transform์ด ์๋ UActorComponent์ด๋ค. ์๋์ ๋ฐฐ์น ๊ฐ๋ฅํ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค์ ๋ถ๋ชจ ํด๋์ค๊ฐ ๋๋ ์ปดํฌ๋ํธ์ด๋ค. ์ถฉ๋, ๋ฌผ๋ฆฌ, ๋ ๋๋ง ๊ธฐ๋ฅ์ด ์์ด ๊ฐ๋ณ๊ธฐ ๋๋ฌธ์ ๊ณ์ธต ๊ตฌ์กฐ์์ ๋๋ฏธ๋ก ํ์ฉํ๊ธฐ ์ข๋ค.
- UPrimitiveComponent๋ Rendering, Collision์ด ์๋ USceneComponent์ด๋ค.
์ฐธ๊ณ
https://blog.naver.com/dbsgh3423/223468037691
UE5 - Actor
Actor ์ธ๋ฆฌ์ผ ์์ง์์ ๋ ๋ฒจ์ ๋ฐฐ์นํ ์ ์๋ ์ค๋ธ์ ํธ๋ฅผ Actor๋ผ๊ณ ํ๋ค. ๋ Actor๋ ์ด๋ค ์๋ฏธ์์ ...
blog.naver.com
https://ansohxxn.github.io/ue4docs/actor/
UE4 ๋ถ๋ชจ ํด๋์ค ์ ๋ฆฌ
๊ณต๋ถํ๋ฉด์ ์๊ฒ๋ Actor ์ ๋ฆฌ
ansohxxn.github.io