๐Ÿ“˜TIL - ์–ธ๋ฆฌ์–ผ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒ์„ฑ ๋ฐ ์—์…‹ ๊ด€๋ฆฌ ๊ตฌ์กฐ ์„ค๊ณ„

HappyCircleยท2026๋…„ 3์›” 23์ผ

Unreal ๊ฐœ๋ฐœ

๋ชฉ๋ก ๋ณด๊ธฐ
92/163

๋ฌธ์ œ 1. ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒ์„ฑ ํ›„ ๋นŒ๋“œ ์‹คํŒจ

์‹ ๊ทœ ํ”„๋กœ์ ํŠธ์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ƒ์„ฑํ•˜๊ณ  ๋นŒ๋“œ๋ฅผ ์‹œ๋„ํ–ˆ์„ ๋•Œ
๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

  • Target.cs ๊ด€๋ จ RulesError
  • UnrealEditor-MySpartaLog.lib ์ค‘๋ณต ์ƒ์„ฑ ์—๋Ÿฌ
  • ๋ชจ๋“ˆ์ด ์ค‘๋ณต์œผ๋กœ ๋นŒ๋“œ๋˜๋Š” ๋ฌธ์ œ

๋ถ„์„ 1. ๋ชจ๋“ˆ ์ค‘๋ณต ๋“ฑ๋ก ๊ตฌ์กฐ

์—๋Ÿฌ ๋กœ๊ทธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์›์ธ์„ ์ถ”์ ํ•œ ๊ฒฐ๊ณผ,
ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชจ๋“ˆ์ด ๋‘ ๊ฐœ์˜ ๊ฒฝ๋กœ์—์„œ ๋™์‹œ์— ๋นŒ๋“œ ๋Œ€์ƒ์œผ๋กœ ์žกํžˆ๊ณ  ์žˆ์—ˆ๋‹ค.

๊ตฌ์กฐ ๋‹ค์ด์–ด๊ทธ๋žจ (๋ฌธ์ œ ์ƒํ™ฉ)

[Project Target.cs]
        โ†“
  MySpartaLog (์ง์ ‘ ๋“ฑ๋ก)
        โ†“
-------------------------
        โ†‘
[Plugin .uplugin]
        โ†“
  MySpartaLog (์ž๋™ ๋“ฑ๋ก)

์›์ธ ์ •๋ฆฌ

๊ตฌ๋ถ„์›์ธ์˜ํ–ฅ
Target.csExtraModuleNames.Add("MySpartaLog")ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชจ๋“ˆ์„ ํ”„๋กœ์ ํŠธ ๋ชจ๋“ˆ๋กœ ์ธ์‹
.upluginModules ๋“ฑ๋กํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์—์„œ ์ž๋™ ๋กœ๋”ฉ
์บ์‹œPlugins/Intermediate ์ž”์กด์ด์ „ ๋นŒ๋“œ ์ •๋ณด ์ถฉ๋Œ
๋„ค์ด๋ฐํ”Œ๋Ÿฌ๊ทธ์ธ๋ช…/๋ชจ๋“ˆ๋ช… ํ˜ผ์šฉ์ค‘๋ณต ์ธ์‹ ๊ฐ€๋Šฅ์„ฑ ์ฆ๊ฐ€

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋™์ผ ๋ชจ๋“ˆ์ด ๋‘ ๋ฒˆ ์ปดํŒŒ์ผ ๋Œ€์ƒ์ด ๋˜๋ฉด์„œ ๋™์ผ lib ์ƒ์„ฑ ์ถฉ๋Œ ๋ฐœ์ƒ


ํ•ด๊ฒฐ 1. ๋ชจ๋“ˆ ์ฑ…์ž„ ๋ถ„๋ฆฌ ๋ฐ ๊ตฌ์กฐ ์ •๋ฆฌ

์ˆ˜์ • ๊ตฌ์กฐ ๋‹ค์ด์–ด๊ทธ๋žจ

[Project Target.cs]
        โ†“
  ModuleAndPlugin (ํ”„๋กœ์ ํŠธ ๋ชจ๋“ˆ๋งŒ)
        
[Plugin .uplugin]
        โ†“
  MySpartaLog (ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชจ๋“ˆ)

์ ์šฉ ๋‚ด์šฉ

  • Target.cs์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชจ๋“ˆ ์ œ๊ฑฐ
  • ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชจ๋“ˆ์€ .uplugin์—์„œ๋งŒ ๊ด€๋ฆฌ
  • Plugins ๋‚ด๋ถ€ Intermediate, Binaries ์‚ญ์ œ
  • ๋ชจ๋“ˆ ํด๋” ์ค‘๋ณต ์ œ๊ฑฐ
  • ๋„ค์ด๋ฐ ํ†ต์ผ

์ตœ์ข… ๊ตฌ์กฐ

Plugins/
 โ””โ”€ MySpartaLog/
     โ”œโ”€ MySpartaLog.uplugin
     โ””โ”€ Source/
         โ””โ”€ MySpartaLog/

๋ฌธ์ œ 2. ํ”Œ๋Ÿฌ๊ทธ์ธ ์—์…‹ ๊ด€๋ฆฌ ๊ตฌ์กฐ ๋ถ€์žฌ

ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๊ธฐ๋ณธ ์—์…‹์„ ํฌํ•จ์‹œํ‚ค๋ ค ํ–ˆ์ง€๋งŒ

  • ์—์…‹์„ ์–ด๋””์— ๋‘˜์ง€
  • ์ฝ”๋“œ์—์„œ ์–ด๋–ป๊ฒŒ ์ฐธ์กฐํ• ์ง€
  • ํ”„๋กœ์ ํŠธ๋ณ„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์„ ์–ด๋–ป๊ฒŒ ํ• ์ง€

๋ช…ํ™•ํ•œ ๊ธฐ์ค€์ด ์—†์—ˆ๋‹ค.


๋ถ„์„ 2. ์ž˜๋ชป๋œ ์—์…‹ ์ฐธ์กฐ ๋ฐฉ์‹

์ดˆ๊ธฐ ์ ‘๊ทผ์€ ๊ฒฝ๋กœ ๊ธฐ๋ฐ˜ ํ•˜๋“œ์ฝ”๋”ฉ ๋ฐฉ์‹์ด์—ˆ๋‹ค.

ConstructorHelpers::FObjectFinder<UMaterial>(TEXT("/Plugin/..."));

๋ฌธ์ œ์ 

๋ฌธ์ œ์„ค๋ช…
๊ฐ•ํ•œ ๊ฒฐํ•ฉ์ฝ”๋“œ๊ฐ€ ํŠน์ • ๊ฒฝ๋กœ์— ์˜์กด
์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ค์›€๊ฒฝ๋กœ ๋ณ€๊ฒฝ ์‹œ ์ฝ”๋“œ ์ˆ˜์ • ํ•„์š”
ํ™•์žฅ์„ฑ ๋ถ€์กฑํ”„๋กœ์ ํŠธ๋ณ„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๋ถˆ๊ฐ€
๋กœ๋”ฉ ๋ฌธ์ œ์ดˆ๊ธฐํ™” ํƒ€์ด๋ฐ ์˜์กด์„ฑ ๋ฐœ์ƒ

์ฆ‰, ์ฝ”๋“œ์™€ ์—์…‹์ด ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ๊ตฌ์กฐ์˜€๋‹ค.


ํ•ด๊ฒฐ 2. ์ •์„์ ์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ ์—์…‹ ๊ตฌ์กฐ

์ „์ฒด ๊ตฌ์กฐ ๋‹ค์ด์–ด๊ทธ๋žจ

[Plugin Content]
        โ†“
[PrimaryDataAsset (์—์…‹ ๋ฌถ์Œ)]
        โ†“
[DeveloperSettings (์„ค์ • ์„ ํƒ)]
        โ†“
[Plugin Code (Soft Reference ๋กœ๋”ฉ)]

๊ตฌ์„ฑ ์š”์†Œ ์—ญํ•  ์ •๋ฆฌ

๊ตฌ์„ฑ ์š”์†Œ์—ญํ• 
Plugin Content๊ธฐ๋ณธ ์—์…‹ ์ €์žฅ
PrimaryDataAsset์—์…‹ ๋ฌถ์Œ ๊ด€๋ฆฌ
DeveloperSettingsํ”„๋กœ์ ํŠธ๋ณ„ ์„ค์ •
Plugin Code์‹ค์ œ ๋กœ์ง ์ฒ˜๋ฆฌ

์ ์šฉ ๊ตฌ์กฐ

ํ”Œ๋Ÿฌ๊ทธ์ธ ์ฝ˜ํ…์ธ  ๊ตฌ์กฐ

Plugins/MySpartaLog/Content/
 โ”œโ”€ Data/
 โ”œโ”€ Materials/
 โ”œโ”€ Widgets/

์—์…‹ ๋ฌถ์Œ (PrimaryDataAsset)

UCLASS()
class UMySpartaLogDefaults : public UPrimaryDataAsset
{
    GENERATED_BODY()

public:
    TSoftObjectPtr<UMaterialInterface> DefaultMaterial;
    TSoftClassPtr<UUserWidget> DefaultWidget;
};

์„ค์ • (DeveloperSettings)

UCLASS(Config=Game)
class UMySpartaLogSettings : public UDeveloperSettings
{
    GENERATED_BODY()

public:
    TSoftObjectPtr<UMySpartaLogDefaults> DefaultsAsset;
};

์‚ฌ์šฉ ํ๋ฆ„

Settings โ†’ DefaultsAsset โ†’ ์‹ค์ œ ์—์…‹ ๋กœ๋“œ
auto Settings = GetDefault<UMySpartaLogSettings>();
auto Defaults = Settings->DefaultsAsset.LoadSynchronous();

๊ฐœ์„  ํšจ๊ณผ

Before / After ๋น„๊ต

๊ตฌ๋ถ„BeforeAfter
์—์…‹ ์ฐธ์กฐ๊ฒฝ๋กœ ํ•˜๋“œ์ฝ”๋”ฉDataAsset ๊ธฐ๋ฐ˜
๊ฒฐํ•ฉ๋„๋†’์Œ๋‚ฎ์Œ
ํ™•์žฅ์„ฑ๋‚ฎ์Œ๋†’์Œ
์œ ์ง€๋ณด์ˆ˜์–ด๋ ค์›€์‰ฌ์›€
์ปค์Šคํ„ฐ๋งˆ์ด์ง•๋ถˆ๊ฐ€๋Šฅ๊ฐ€๋Šฅ

์˜ค๋Š˜์˜ ์ •๋ฆฌ

  • ์ด๋ฒˆ ์ž‘์—…์˜ ํ•ต์‹ฌ์€ ๋‹จ์ˆœํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒ์„ฑ์ด ์•„๋‹ˆ๋ผ
    ๋ชจ๋“ˆ ๊ตฌ์กฐ์™€ ์—์…‹ ์˜์กด์„ฑ ๋ถ„๋ฆฌ ์„ค๊ณ„์˜€๋‹ค.
๋ชจ๋“ˆ โ†’ .uplugin ๊ธฐ์ค€ ๊ด€๋ฆฌ
์—์…‹ โ†’ DataAsset์œผ๋กœ ๋ฌถ๊ธฐ
์„ค์ • โ†’ DeveloperSettings๋กœ ๋ถ„๋ฆฌ
๋กœ๋“œ โ†’ Soft Reference ์‚ฌ์šฉ
profile
๊ฐœ๋ฐœํ•ฉ์‹œ๋‹ค!

0๊ฐœ์˜ ๋Œ“๊ธ€