์„œ๋น„์Šค
๊ต์œก ์ฒ ํ•™

Helper Pattern

Abstract

๐Ÿ“Œ
ํ—ฌํผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ์ฝ”๋“œ๋ฅผ ๊ณ ์น˜์ง€ ์•Š๊ณ  ๋™์ž‘์„ ๋ฐ”๊พธ๋Š” ์†์žก์ด์ž…๋‹ˆ๋‹ค. "๋กœ๊ทธ๋ฅผ ํŒŒ์ผ์—๋„ ๋‚จ๊ธฐ๊ณ  ์‹ถ๋‹ค", "์—”ํ‹ฐํ‹ฐ๋ฅผ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ธ์Šคํ„ด์Šคํ™”ํ•˜๊ณ  ์‹ถ๋‹ค" ๊ฐ™์€ ์š”๊ตฌ๊ฐ€ ์ƒ๊ธฐ๋ฉด ํ”„๋ ˆ์ž„์›Œํฌ ์†Œ์Šค๋ฅผ ์—ฌ๋Š” ๋Œ€์‹  ํ—ฌํผ ํด๋ž˜์Šค๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ๊ฐˆ์•„ ๋ผ์›๋‹ˆ๋‹ค.
์–ธ์ œ ์“ฐ๋‚˜
โ€ข
ํ”Œ๋žซํผ๋งˆ๋‹ค ๊ตฌํ˜„์ด ๋‹ฌ๋ผ์•ผ ํ•˜๋Š” ๋ถ€๋ถ„ (๋กœ๊ทธ, ์••์ถ•, JSON)
โ€ข
ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ธฐ๋ณธ ๋™์ž‘์ด ๋‚ด ๊ฒŒ์ž„๊ณผ ๋งž์ง€ ์•Š๋Š” ๋ถ€๋ถ„ (UI ์ •๋ ฌ ๋ฐฉ์‹, ์‚ฌ์šด๋“œ ์—์ด์ „ํŠธ)
โ€ข
ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด๋„ ๋‚ด ์ˆ˜์ •์ด ๋‚ ์•„๊ฐ€์ง€ ์•Š๊ฒŒ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ
์ง์ ‘ ํ•ด ๋ณด๊ธฐ โ€” ๋กœ๊ทธ์— ์‹œ๊ฐ ๋ถ™์ด๊ธฐ
using GameFramework; using UnityEngine; namespace MyGame { public class TimestampLogHelper : GameFrameworkLog.ILogHelper { public void Log(GameFrameworkLogLevel level, object message) { string line = Utility.Text.Format("[{0:F2}] {1}", Time.realtimeSinceStartup, message); switch (level) { case GameFrameworkLogLevel.Warning: Debug.LogWarning(line); break; case GameFrameworkLogLevel.Error: Debug.LogError(line); break; default: Debug.Log(line); break; } } } }
C#
๋ณต์‚ฌ
GameFramework.prefab ๋ฃจํŠธ์˜ BaseComponent ์—์„œ Log Helper Type Name ์„ MyGame.TimestampLogHelper ๋กœ ๋ฐ”๊พธ๋ฉด ๋์ž…๋‹ˆ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊นŒ์ง€ ํฌํ•จํ•œ ์ „์ฒด ํƒ€์ž… ์ด๋ฆ„์„ ์ ์Šต๋‹ˆ๋‹ค. ์ดํ›„ Log.Info(...) ๋ฅผ ๋ถ€๋ฅด๋Š” ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ์ƒˆ ํ—ฌํผ๋ฅผ ๊ฑฐ์นฉ๋‹ˆ๋‹ค.
ToyboxNightmare ์—์„œ ํ—ฌํผ๊ฐ€ ํ•„์š”ํ–ˆ๋˜ ์ง€์ 
๊ธฐ๋ณธ UI ๊ทธ๋ฃน ํ—ฌํผ(DefaultUIGroupHelper)์˜ SetDepth ๋Š” ๋นˆ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ UI ๊ทธ๋ฃน์˜ depth ๊ฐ’์„ ๋ฐ”๊ฟ”๋„ ํ™”๋ฉด ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ๋Š” ๊ฐ ํผ Canvas ์˜ Sorting Order ๋กœ ์ˆœ์„œ๋ฅผ ์ •ํ–ˆ์ง€๋งŒ(HUD 0, ์ผ์‹œ์ •์ง€ 100), ๊ทธ๋ฃน depth ๋กœ ์ œ์–ดํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด UIGroupHelperBase ๋ฅผ ์ƒ์†ํ•ด SetDepth(int depth) ๋ฅผ ๊ตฌํ˜„ํ•œ ํ—ฌํผ๋ฅผ ๋งŒ๋“ค๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ "๊ธฐ๋ณธ๊ฐ’์€ ์ฃผ๋˜ ์ •์ฑ…์€ ๊ฐ•์š”ํ•˜์ง€ ์•Š๋Š”๋‹ค"๋Š” ๊ฒƒ์„ ๋ณด์—ฌ ์ฃผ๋Š” ์˜ˆ์ž…๋‹ˆ๋‹ค.
โš ๏ธ
์ด ์—๋””์…˜์—์„œ ๋‹ค๋ฅธ ์ : ์•„๋ž˜ ๋ณธ๋ฌธ์€ ์ธ์ŠคํŽ™ํ„ฐ์˜ ๋“œ๋กญ๋‹ค์šด์œผ๋กœ ํ—ฌํผ๋ฅผ ๊ณ ๋ฅธ๋‹ค๊ณ  ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค(BaseComponentInspector, HelperInfo). ๊ทธ ์—๋””ํ„ฐ ํ™•์žฅ์€ ์ด ์—๋””์…˜์— ๋“ค์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ธ์ŠคํŽ™ํ„ฐ์— ๋ณด์ด๋Š” ... Helper Type Name ๋ฌธ์ž์—ด ํ•„๋“œ์— ํƒ€์ž… ์ด๋ฆ„์„ ์ง์ ‘ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋™์ž‘์€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ณธ๋ฌธ์—์„œ "Diagram: ..." ์ด๋ผ๊ณ ๋งŒ ์ ํžˆ๊ณ  ๊ทธ๋ฆผ์ด ์—†๋Š” ๊ณณ์€ ์›๋ณธ ๋‹ค์ด์–ด๊ทธ๋žจ์ด ๋ˆ„๋ฝ๋œ ์ž๋ฆฌ์ž…๋‹ˆ๋‹ค.

Helper Pattern

๊ด€๋ จ ์†Œ์Šค ํŒŒ์ผ
โ€ข
Scripts/Editor/Inspector/BaseComponentInspector.cs
โ€ข
Scripts/Editor/Inspector/ProcedureComponentInspector.cs
โ€ข
Scripts/Editor/Misc/HelperInfo.cs
โ€ข
Scripts/Editor/Misc/Type.cs
โ€ข
Scripts/Runtime/Sound/DefaultSoundAgentHelper.cs
โ€ข
Scripts/Runtime/Sound/SoundAgentHelperBase.cs
โ€ข
Scripts/Runtime/Utility/DefaultJsonHelper.cs
โ€ข
Scripts/Runtime/Utility/DefaultJsonHelper.cs.meta
โ€ข
Scripts/Runtime/Utility/DefaultLogHelper.cs.meta
โ€ข
Scripts/Runtime/Utility/DefaultVersionHelper.cs
โ€ข
Scripts/Runtime/Utility/Log.cs.meta
Unity Game Framework ์ „๋ฐ˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” Helper Pattern์€ ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ ๋™์ž‘์˜ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•๊ณผ ํ™•์žฅ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ํ•ต์‹ฌ ์•„ํ‚คํ…์ฒ˜์  ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด ํŒจํ„ด์€ ๊ธฐ๋Šฅ์„ ์ •์˜ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ทธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ตฌ์ฒด์  ๊ตฌํ˜„ ์‚ฌ์ด์— ๋ช…ํ™•ํ•œ ๋ถ„๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ํŒจํ„ด์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํ•ฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ ๊ตฌํ˜„์„ ์ œ๊ณตํ•˜๋ฉด์„œ๋„ ์œ ์—ฐ์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด์—์„œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋“ฑ๋ก๋˜๊ณ  ๊ด€๋ฆฌ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋Š” GameEntry and Component Management๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Pattern Overview

Unity Game Framework์—์„œ ๊ตฌํ˜„๋œ Helper Pattern์€ ์ผ๊ด€๋œ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:
โ€ข
์ธํ„ฐํŽ˜์ด์Šค ๋˜๋Š” ์ถ”์ƒ ๊ธฐ๋ณธ ํด๋ž˜์Šค๊ฐ€ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ •์˜ํ•œ๋‹ค.
โ€ข
๊ณตํ†ต ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋ณธ ๊ตฌํ˜„์ด ์ œ๊ณต๋œ๋‹ค.
โ€ข
์‹œ์Šคํ…œ์€ ํ•„์š”ํ•  ๋•Œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ปค์Šคํ…€ ๊ตฌํ˜„์œผ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
์ด ํŒจํ„ด์€ ํ”Œ๋žซํผ๋ณ„ ๊ตฌํ˜„์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‚˜, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ปค์Šคํ…€ ๋™์ž‘์œผ๋กœ ํ™•์žฅํ•˜๊ณ  ์‹ถ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์— ํŠนํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
Diagram: Helper Pattern Class Structure
์ถœ์ฒ˜:
Scripts/Runtime/Sound/SoundAgentHelperBase.cs 1-189
Scripts/Runtime/Sound/DefaultSoundAgentHelper.cs 1-435

Helper Registration and Management

ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ปดํฌ๋„ŒํŠธ ์ธ์ŠคํŽ™ํ„ฐ๋ฅผ ํ†ตํ•ด ํ—ฌํผ๋ฅผ ๊ด€๋ฆฌํ•˜์—ฌ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ธฐ๋ณธ ๊ตฌํ˜„๊ณผ ์ปค์Šคํ…€ ๊ตฌํ˜„ ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค์ •์€ ์ผ๋ฐ˜์ ์œผ๋กœ Unity ์—๋””ํ„ฐ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
Diagram: Helper Selection and Registration Flow
์ถœ์ฒ˜:
Scripts/Editor/Inspector/BaseComponentInspector.cs 46-170

Global Helpers

BaseComponent๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ์ „๋ฐ˜์—์„œ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์—ฌ๋Ÿฌ ์ฝ”์–ด ํ—ฌํผ๋“ค์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค:
โ€ข
Text Helper โ€“ ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ€ข
Version Helper โ€“ ๋ฒ„์ „ ์ •๋ณด์™€ ๋น„๊ต
โ€ข
Log Helper โ€“ ๋กœ๊น… ๊ธฐ๋Šฅ
โ€ข
Compression Helper โ€“ ๋ฐ์ดํ„ฐ ์••์ถ• ๋ฐ ํ•ด์ œ
โ€ข
JSON Helper โ€“ JSON ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™”
์ด ํ—ฌํผ๋“ค์€ BaseComponent ์ธ์ŠคํŽ™ํ„ฐ์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐœ๋ฐœ์ž๋Š” ๊ธฐ๋ณธ ๊ตฌํ˜„์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์ปค์Šคํ…€ ๊ตฌํ˜„์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Diagram: Global Helpers in BaseComponent
์ถœ์ฒ˜:
Scripts/Editor/Inspector/BaseComponentInspector.cs 64-103
Scripts/Runtime/Utility/DefaultVersionHelper.cs 1-41
Scripts/Runtime/Utility/DefaultJsonHelper.cs 1-52

Helper Selection in Inspector

Unity ์—๋””ํ„ฐ๋Š” ๊ฐ ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•œ ํ—ฌํผ๋ฅผ ์„ ํƒํ•˜๊ณ  ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ปค์Šคํ…€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๊ธฐ๋ณธ ๊ตฌํ˜„์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์ง์ ‘ ๋งŒ๋“  ์ปค์Šคํ…€ ํ—ฌํผ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
BaseComponentInspector๋Š” ๊ธ€๋กœ๋ฒŒ ํ—ฌํผ๋ฅผ ์œ„ํ•œ ์ด UI๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค:
1.
TextHelper ์„ ํƒ ๋“œ๋กญ๋‹ค์šด
2.
VersionHelper ์„ ํƒ ๋“œ๋กญ๋‹ค์šด
3.
LogHelper ์„ ํƒ ๋“œ๋กญ๋‹ค์šด
4.
CompressionHelper ์„ ํƒ ๋“œ๋กญ๋‹ค์šด
5.
JsonHelper ์„ ํƒ ๋“œ๋กญ๋‹ค์šด
๊ฐ ๋“œ๋กญ๋‹ค์šด์€ ํ”„๋กœ์ ํŠธ ์–ด์…ˆ๋ธ”๋ฆฌ์—์„œ ๋ฐœ๊ฒฌ๋œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ—ฌํผ ๊ตฌํ˜„๋“ค๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.
์ถœ์ฒ˜:
Scripts/Editor/Inspector/BaseComponentInspector.cs 64-103

Helper Implementation Discovery

ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋Ÿฐํƒ€์ž„์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ—ฌํผ ๊ตฌํ˜„์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Type.GetRuntimeTypeNames() ๋ฉ”์„œ๋“œ๋Š” ํŠน์ • ํ—ฌํผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์ง€์ •๋œ ์–ด์…ˆ๋ธ”๋ฆฌ์—์„œ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
Diagram: Helper Implementation Discovery Process
์ถœ์ฒ˜:
Scripts/Editor/Misc/Type.cs 78-91
Scripts/Editor/Misc/Type.cs 93-125

Example: Sound Agent Helper

ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ Helper Pattern์˜ ๊ตฌ์ฒด์ ์ธ ์˜ˆ์‹œ๋Š” ์˜ค๋””์˜ค ์žฌ์ƒ์„ ๋‹ค๋ฃจ๋Š” Sound Agent Helper ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.
Diagram: Sound Agent Helper Class Hierarchy
์ถœ์ฒ˜:
Scripts/Runtime/Sound/SoundAgentHelperBase.cs 1-189
Scripts/Runtime/Sound/DefaultSoundAgentHelper.cs 1-435

Creating Custom Helpers

์ปค์Šคํ…€ ํ—ฌํผ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด:
1.
์ ์ ˆํ•œ ํ—ฌํผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ํ—ฌํผ ๊ธฐ๋ณธ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•œ๋‹ค.
2.
๊ตฌํ˜„์„ ์ ์ ˆํ•œ Unity ์–ด์…ˆ๋ธ”๋ฆฌ์— ์ถ”๊ฐ€ํ•œ๋‹ค.
3.
์ธ์ŠคํŽ™ํ„ฐ๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ปค์Šคํ…€ ํ—ฌํผ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
์˜ˆ: ์ปค์Šคํ…€ JSON ํ—ฌํผ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด:
โ€ข
Utility.Json.IJsonHelper๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ ๋‹ค.
โ€ข
ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ(ToJson, ToObject<T> ๋“ฑ)๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.
โ€ข
BaseComponent ์ธ์ŠคํŽ™ํ„ฐ์—์„œ ์ปค์Šคํ…€ ๊ตฌํ˜„์„ ์„ ํƒํ•œ๋‹ค.

Component-Specific Helpers

BaseComponent๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๊ธ€๋กœ๋ฒŒ ํ—ฌํผ ์™ธ์—๋„, ๋งŽ์€ ํ”„๋ ˆ์ž„์›Œํฌ ์ปดํฌ๋„ŒํŠธ๋“ค์€ ๊ฐ๊ฐ ๊ณ ์œ ํ•œ ํ—ฌํผ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ:
โ€ข
Sound ์ปดํฌ๋„ŒํŠธ๋Š” SoundAgentHelper ์‚ฌ์šฉ
โ€ข
Resource ์ปดํฌ๋„ŒํŠธ๋Š” ResourceHelper์™€ LoadResourceAgentHelper ์‚ฌ์šฉ
โ€ข
Web Request ์ปดํฌ๋„ŒํŠธ๋Š” WebRequestAgentHelper ์‚ฌ์šฉ
โ€ข
File System ์ปดํฌ๋„ŒํŠธ๋Š” FileSystemHelper ์‚ฌ์šฉ
๊ฐ๊ฐ์€ ๊ธฐ๋ณธ ๊ตฌํ˜„์„ ์ œ๊ณตํ•˜๋ฉด์„œ ์ปค์Šคํ…€ ๊ต์ฒด๋„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋™์ผํ•œ ํŒจํ„ด์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

Helper Selection Implementation

ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ธ์ŠคํŽ™ํ„ฐ์—์„œ ํ—ฌํผ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์„ ํƒํ•˜๋Š” ๊ณผ์ •์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
Diagram: Helper Info Class Used in Inspectors
์ถœ์ฒ˜:
Scripts/Editor/Misc/HelperInfo.cs 1-98
HelperInfo<T> ํด๋ž˜์Šค๋Š” ์ธ์ŠคํŽ™ํ„ฐ UI๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ, ํ—ฌํผ ๊ตฌํ˜„๋“ค ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์™€ ํ•„์š”ํ•  ๊ฒฝ์šฐ ์ปค์Šคํ…€ ํ—ฌํผ ํ•„๋“œ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

Default Helper Implementations

ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํ•„์š”ํ•œ ๋ชจ๋“  ํ—ฌํผ์˜ ๊ธฐ๋ณธ ๊ตฌํ˜„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌํ˜„๋“ค์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ณตํ†ต ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Default Version Helper

DefaultVersionHelper๋Š” Unity Application์˜ ๋ฒ„์ „์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฒ„์ „ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:
โ€ข
๊ฒŒ์ž„ ๋ฒ„์ „์€ Application.version ๋ฐ˜ํ™˜
โ€ข
๋‚ด๋ถ€ ๊ฒŒ์ž„ ๋ฒ„์ „์€ 0 ๋ฐ˜ํ™˜
์ถœ์ฒ˜:
Scripts/Runtime/Utility/DefaultVersionHelper.cs 1-41

Default JSON Helper

DefaultJsonHelper๋Š” Unity์˜ ๋‚ด์žฅ JsonUtility๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JSON ์ง๋ ฌํ™”/์—ญ์ง๋ ฌํ™”๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:
โ€ข
์ง๋ ฌํ™”์—๋Š” JsonUtility.ToJson ์‚ฌ์šฉ
โ€ข
์—ญ์ง๋ ฌํ™”์—๋Š” JsonUtility.FromJson ์‚ฌ์šฉ
์ถœ์ฒ˜:
Scripts/Runtime/Utility/DefaultJsonHelper.cs 1-52

Summary

Helper Pattern์€ Unity Game Framework์—์„œ ์‹œ์Šคํ…œ ๋™์ž‘์˜ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•๊ณผ ํ™•์žฅ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ทผ๋ณธ์ ์ธ ์•„ํ‚คํ…์ฒ˜ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์„ ๋ถ„๋ฆฌํ•˜๊ณ , ๊ธฐ๋ณธ ๋ฐ ์ปค์Šคํ…€ ์˜ต์…˜ ๋ชจ๋‘๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์‚ฌ์šฉ์˜ ์šฉ์ด์„ฑ๊ณผ ์œ ์—ฐ์„ฑ ์‚ฌ์ด์˜ ๊ท ํ˜•์„ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
Helper Pattern์˜ ์ฃผ์š” ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
โ€ข
์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์œ„ํ•œ ํ•ฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ๊ฐ’ ์ œ๊ณต
โ€ข
ํ”Œ๋žซํผ๋ณ„ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ—ˆ์šฉ
โ€ข
ํŠน์ˆ˜ ๊ธฐ๋Šฅ์œผ๋กœ์˜ ํ™•์žฅ ๊ฐ€๋Šฅ
โ€ข
์˜์กด์„ฑ ์ฃผ์ž…์„ ํ†ตํ•œ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ ์ œ๊ณต
โ€ข
๊ด€์‹ฌ์‚ฌ์˜ ๋ช…ํ™•ํ•œ ๋ถ„๋ฆฌ ์ƒ์„ฑ
์ด ํŒจํ„ด์€ ํ”„๋ ˆ์ž„์›Œํฌ ์ „๋ฐ˜์—์„œ ์ผ๊ด€๋˜๊ฒŒ ์‚ฌ์šฉ๋˜๋ฉฐ, ์‹œ์Šคํ…œ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์„ ์œ„ํ•œ ํ†ต์ผ๋œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค.