๐Ÿ–ฅ๏ธ Study Note/Unreal Engine

    [UE] Public Dependency Module vs Private Dependency Module

    PublicDependencyModuleNames.AddRange( new string[] { "Core", "OnlineSubsystem", "OnlineSubsystemSteam", // ... add other public dependencies that you statically link with here ... } ); PrivateDependencyModuleNames.AddRange( new string[] { "CoreUObject", "Engine", "Slate", "SlateCore", // ... add private dependencies that you statically link with here ... } ); ํ”Œ๋Ÿฌ๊ทธ ์ธ์„ ๋งŒ๋“ค๋ฉด์„œ ์˜์กด ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ, ์œ„์˜ ์ฝ”๋“œ์™€..

    [UE5] #04 ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ ์‚ดํŽด๋ณด๊ธฐ!

    [UE5] #04 ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ ์‚ดํŽด๋ณด๊ธฐ!

    [ ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ ] : ์–ธ๋ฆฌ์–ผ ์—”์ง„์ด ์„ค๊ณ„ํ•œ ์ƒˆ๋กœ์šด ์‹œ์Šคํ…œ์˜ ๋‹จ์œ„ ์˜ค๋ธŒ์ ํŠธ์ด๋‹ค. https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Objects/ ๊ธฐ์กด C++ ์˜ค๋ธŒ์ ํŠธ์— ๋ชจ๋˜ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ ์˜ค๋ธŒ์ ํŠธ์ด๋‹ค. ์–ธ๋ฆฌ์–ผ์—์„œ๋Š” ์ผ๋ฐ˜ C++ ์˜ค๋ธŒ์ ํŠธ์™€ ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. C++ ์˜ค๋ธŒ์ ํŠธ : ์ ‘๋‘์‚ฌ๋กœ F ์‚ฌ์šฉ. ์ €์ˆ˜์ค€์˜ ๋น ๋ฅธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ์‚ฌ์šฉ ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ : ์ ‘๋‘์‚ฌ๋กœ U ์‚ฌ์šฉ. ์ฝ˜ํ…์ธ  ์ œ์ž‘์— ๊ด€๋ จ๋œ ๋ณต์žกํ•œ ์„ค๊ณ„ ๊ตฌํ˜„์— ์‚ฌ์šฉ UCLASS ๋งคํฌ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ธ๋ฆฌ์–ผ ์—”์ง„์— UObject๋กœ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. { ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ ๊ธฐ..

    [UE5] #03 ์–ธ๋ฆฌ์–ผ ์—”์ง„์˜  C++ ๊ธฐ๋ณธ ํƒ€์ž…๊ณผ ๋ฌธ์ž์—ด ์•Œ์•„๋ณด๊ธฐ!

    [UE5] #03 ์–ธ๋ฆฌ์–ผ ์—”์ง„์˜ C++ ๊ธฐ๋ณธ ํƒ€์ž…๊ณผ ๋ฌธ์ž์—ด ์•Œ์•„๋ณด๊ธฐ!

    ๊ฒฐ๊ณผ๋ฌผ 1. ์–ธ๋ฆฌ์–ผ C++ ๊ธฐ๋ณธ ํƒ€์ž… https://docs.unrealengine.com/5.2/ko/epic-cplusplus-coding-standard-for-unreal-engine/ ๐Ÿ“Œ ์–ธ๋ฆฌ์–ผ์ด ๊ธฐ๋ณธ ํƒ€์ž…์„ ๋”ฐ๋กœ ์ง€์ •ํ•˜๋Š” ์ด์œ  ํ”Œ๋žซํผ์— ๋”ฐ๋ผ์„œ C++ ๊ธฐ๋ณธ ํƒ€์ž…์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 64bit window์—์„œ๋Š” long์ด 4byte์ธ๋ฐ ๋ฐ˜ํ•ด, 64bit linux์—์„œ๋Š” long์ด 8byte๋กœ ํ•ด์„๋œ๋‹ค. ์ด๋Ÿฐ ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๋ชจํ˜ธํ•จ์€ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ์‹œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. bool- ๋ถ€์šธ ๊ฐ’(๋ถ€์šธ ํฌ๊ธฐ ์ถ”์ • ๊ธˆ์ง€).BOOL์€ ์ปดํŒŒ์ผ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. TCHAR- character(๋ฌธ์ž) (TCHAR ํฌ๊ธฐ ์ถ”์ • ๊ธˆ์ง€) uint8- unsigned byte(๋ถ€ํ˜ธ ์—†๋Š” ๋ฐ”์ดํŠธ) (1๋ฐ”..

    [UE5] #02 ์–ธ๋ฆฌ์–ผ ์ฝ”๋”ฉ ํ‘œ์ค€ ์•Œ์•„๋ณด๊ธฐ!

    ์–ธ๋ฆฌ์–ผ ์ฝ”๋”ฉ ํ‘œ์ค€์€ ์•„๋ž˜ ๋งํฌ์— ์ž์„ธํžˆ ๋‚˜์™€์žˆ๋‹ค! https://docs.unrealengine.com/5.2/ko/epic-cplusplus-coding-standard-for-unreal-engine ์ฝ”๋”ฉ ํ‘œ์ค€ ๊ธฐ์กด์— ํ™•๋ฆฝ๋œ ํ‘œ์ค€ ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์ค€์ˆ˜ํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. docs.unrealengine.com ์ด์ค‘์—์„œ ํŠนํžˆ ์ค‘์š”ํ•œ ๋‚ด์šฉ์„ ์•„๋ž˜์— ์ •๋ฆฌํ–ˆ๋‹ค. ํด๋ž˜์Šค ์ฒด๊ณ„ ํด๋ž˜์Šค ์ธํ„ฐํŽ˜์ด์Šค์—์„œ public :์™€ private : ์ˆœ์„œ๋Œ€๋กœ ์„ ์–ธํ•˜๋Š” ํด๋ž˜์Šค ์ฒด๊ณ„ ์ค€์ˆ˜ํ•˜๊ธฐ. ๋ช…๋ช… ๊ทœ์น™ ํŒŒ์Šค์นผ ์ผ€์ด์‹ฑ ์‚ฌ์šฉ ํŒŒ์Šค์นผ ์ผ€์ด์‹ฑ : ํ•ฉ์„ฑ์–ด์˜ ์ฒซ๋ฌธ์ž๋ฅผ ๋Œ€๋ฌธ์ž. ex> Unreal Engine ๊ณต๋ฐฑ๊ณผ _ ์‚ฌ์šฉ x ๋ชจ๋“  ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด์—๋Š” ๊ณ ์œ ํ•œ ์ ‘๋‘์‚ฌ ์‚ฌ์šฉํ•˜๊ธฐ T : ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค U : UObject ํŒŒ..

    [UE5] #01 GameInstance ์ƒ์† ๋ฐ›๊ณ  Log ์ถœ๋ ฅํ•ด๋ณด๊ธฐ! (+ ์–ธ๋ฆฌ์–ผ ์ฝ”๋“œ ์ปดํŒŒ์ผ ์ฃผ์˜ ์‚ฌํ•ญ)

    [UE5] #01 GameInstance ์ƒ์† ๋ฐ›๊ณ  Log ์ถœ๋ ฅํ•ด๋ณด๊ธฐ! (+ ์–ธ๋ฆฌ์–ผ ์ฝ”๋“œ ์ปดํŒŒ์ผ ์ฃผ์˜ ์‚ฌํ•ญ)

    ๊ฒฐ๊ณผ๋ฌผ 1๋‹จ๊ณ„. Game Instance ์ƒ์† ๋ฐ›๊ธฐ - Game Instance? ์–ธ๋ฆฌ์–ผ ์—”์ง„์ด ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ฒŒ์ž„์˜ ๋ผˆ๋Œ€์ด๋‹ค. ๊ทธ๋ƒฅ ์–ธ๋ฆฌ์–ผ์ด ์ œ๊ณตํ•ด์ฃผ๋Š” ์‹ฑ๊ธ€ํ†ค ๊ฒŒ์ž„ ๋งค๋‹ˆ์ €๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค. ์ด Game Instance๋ฅผ ์ƒ์†๋ฐ›์•„ ์ž์‹ ์˜ ๊ฒŒ์ž„์˜ ๋ผˆ๋Œ€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์—”์ง„์ด ์ดˆ๊ธฐํ™”๋œ ๋’ค์— ๊ฐ€์žฅ ๋จผ์ € ์ƒ์„ฑ๋˜๊ณ  ์‹คํ–‰๋˜๋Š” ๊ฐ์ฒด์ด๋ฉฐ, ๊ฒŒ์ž„์˜ ์‹œ์ž‘๋˜๊ณ  ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์กด์žฌํ•œ๋‹ค. - Game Instance ์ƒ์† ๋ฐ›๊ธฐ 1. tools > New C++ Class ์„ ํƒํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐฝ์ด ๋œฌ๋‹ค. All Classes์—์„œ GameInstance๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ , ์•„๋ž˜ ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด GameInstance๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. 2. Visual Studio๋กœ ์ด๋™ํ•˜๊ณ  ํŒ์—…์ฐฝ์ด ๋œจ๋ฉด 'Reload All' ์„ ์„ ํƒํ•˜๋ฉด ..