[Unity] 에셋 λŸ°νƒ€μž„ λ‘œλ“œ(λ¦¬μ†ŒμŠ€ 폴더, 에셋 λ²ˆλ“€, μ–΄λ“œλ ˆμ„œλΈ” 에셋)

2022. 6. 26. 16:21Β·πŸ“ Game/✏ Unity
μœ λ‹ˆν‹° λ‚΄ 에셋 λŸ°νƒ€μž„ λ‘œλ“œλŠ” λ¦¬μ†ŒμŠ€ 폴더 μ‚¬μš©μ—μ„œ 에셋 λ²ˆλ“€, μ–΄λ“œλ ˆμ„œλΈ” μ—μ…‹ λ°©μ‹μœΌλ‘œ λ°œμ „ν•΄κ°€κ³  μžˆλ‹€.

 

λ¦¬μ†ŒμŠ€ 폴더

λ¦¬μ†ŒμŠ€ ν΄λ”λŠ” μœ λ‹ˆν‹°μ—μ„œ μ œκ³΅ν•˜λŠ” λ¦¬μ†ŒμŠ€ λ‘œλ“œ ν΄λ”λ‘œ λ¦¬μ†ŒμŠ€ 폴더 μ•ˆ 파일의 경둜둜 μ ‘κ·Όν•˜μ—¬ μ‚¬μš©ν•˜λŠ” 방식이닀.

Resources.Load<GameObject>("파일 경둜")

 

μ‚¬μš©ν•˜κΈ°μ— νŽΈλ¦¬ν•˜λ‹€λŠ” μž₯점이 μžˆμ§€λ§Œ, 그만큼 단점도 λ§Žμ•„ μœ λ‹ˆν‹°μ—μ„œλ„ ꢌμž₯ν•˜μ§€ μ•ŠλŠ” 방법이닀.

  • λΉŒλ“œ μ‹œ ν•¨κ»˜ λ¬Άμ΄λ―€λ‘œ λΉŒλ“œ μ‚¬μ΄μ¦ˆκ°€ 컀져 μ•± μ‹œμž‘ μ‹œκ°„μ΄ κΈΈμ–΄μ§„λ‹€.
  • 에셋 이름을 톡해 λ‘œλ“œν•˜λ―€λ‘œ 에셋 이름 변경이 μ–΄λ ΅λ‹€.

 

에셋 λ²ˆλ“€(Asset Bundle)

에셋 λ²ˆλ“€μ€ μ—μ…‹λ“€μ„ ν•˜λ‚˜λ‘œ λ¬Άμ–΄ μ••μΆ• νŒŒμΌμ„ μƒμ„±ν•˜λŠ” κ°œλ…μœΌλ‘œ μƒμ„±λœ 에셋 λ²ˆλ“€μ€ λ„€νŠΈμ›Œν¬λ₯Ό 톡해 λ°°ν¬ν•˜κ³  λŸ°νƒ€μž„μ— λ‘œλ“œν•˜μ—¬ μ‚¬μš©λœλ‹€.

 

  • λΉŒλ“œμ— ν¬ν•¨λ˜μ§€ μ•ŠμœΌλ―€λ‘œ 초기 μΈμŠ€ν†¨ μ‚¬μ΄μ¦ˆλ₯Ό 쀄여 μ•± μ‹œμž‘ μ‹œκ°„μ„ λ‹¨μΆ•μ‹œν‚¬ 수 μžˆλ‹€.
  • μ•± μ„€μΉ˜ μ‹œ μ½˜ν…μΈ λ₯Ό 뢄리할 수 μžˆμ–΄ 라이브 앱에 정기적인 μ½˜ν…μΈ  μ—…λ°μ΄νŠΈ(DLC, 패치 λ“±)λ₯Ό μ œκ³΅ν•  λ•Œ μ‚¬μš©ν•œλ‹€.

 

에셋 λ²ˆλ“€

 

ν•˜μ§€λ§Œ μ΄λŸ¬ν•œ 이점에도 λΆˆκ΅¬ν•˜κ³  μ‹€μ œλ‘œ 에셋 λ²ˆλ“€μ„ ν™œμš©ν•˜λŠ” 것은 κ°„λ‹¨ν•˜μ§€ μ•Šλ‹€.

  • λ²ˆλ“€μ˜ 쒅속성 λ¬Έμ œκ°€ μ‘΄μž¬ν•œλ‹€: 같은 이미지λ₯Ό Asset A와 Asset B에 λ¬Άμ—¬μžˆλ‹€λ©΄ 같은 이미지 1개둜 처리될 것 κ°™μ§€λ§Œ 2개의 μ΄λ―Έμ§€λ‘œ μΈμ‹λ˜λŠ” 것을 λ§ν•œλ‹€.
  • 쒅속성 문제둜 μ€‘λ³΅λœ 에셋이 λ°œμƒν•˜μ—¬ λ©”λͺ¨λ¦¬ 관리가 μ–΄λ €μ›Œμ§ˆ 수 μžˆλ‹€.
  • μ½”λ“œλ₯Ό μž‘μ„±ν•˜κΈ°κ°€ μ–΄λ ΅λ‹€.

 

쒅속성 문제

 

 

κ·Έλž˜μ„œ μ—μ…‹μ˜ μœ„μΉ˜ μ§€μ •, λΉŒλ“œ λ° λ‘œλ“œμ™€ κ΄€λ ¨ν•˜μ—¬ μΌλ°˜μ μœΌλ‘œ λ°œμƒν•˜λŠ” λͺ‡ κ°€μ§€ λ¬Έμ œλ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ ν”„λ ˆμž„μ›Œν¬λ₯Ό κ΅¬μΆ•ν•˜κΈ° μœ„ν•΄ μ–΄λ“œλ ˆμ„œλΈ”이 νƒ„μƒν•˜κ²Œ λ˜μ—ˆλ‹€.

 

μ–΄λ“œλ ˆμ„œλΈ” 에셋(Addressable Asset)

μ–΄λ“œλ ˆμ„œλΈ” 에셋은 μ—μ…‹μ— μ£Όμ†Œλ₯Ό μ§€μ •ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ£Όμ†Œ(address)둜 에셋을 μ‰½κ²Œ λ‘œλ“œν•  수 μžˆλŠ” 방법을 μ œκ³΅ν•œλ‹€.

 

에셋 μœ„μΉ˜μ— 상관없이 μ°Έμ‘°κ°€ κ°€λŠ₯ν•˜λ‹€. 즉, λ‘œλ“œν•  λŒ€μƒμ΄ λ˜λŠ” 에셋과 에셋이 λ‘œλ“œλ˜λŠ” μœ„μΉ˜ 및 방식을 λΆ„λ¦¬ν•˜λŠ” 것이닀. κ·Έλž˜μ„œ 에셋을 λ‘œλ“œν•˜λŠ” μΈ‘μ—μ„œλŠ” μ—μ…‹μ˜ μ–΄λ“œλ ˆμŠ€λ§Œ μ•Œλ©΄ 되고 μ—μ…‹μ˜ μ‹€μ œ μœ„μΉ˜κ°€ λ³€κ²½λ˜μ–΄λ„ 상관없닀.

 

  • 에셋 λΉŒλ“œμ™€ 배포의 λ‹¨μˆœν™”: 직접 레퍼런슀, λ¦¬μ†ŒμŠ€ 폴더, 에셋 λ²ˆλ“€ 뢄리가 λ‹¨μˆœν™”λ˜κ³  νŽΈλ¦¬ν•΄μ§„λ‹€.
  • 효율적인 에셋 관리: 쒅속성 νŒŒμ•… 및 λ©”λͺ¨λ¦¬ λ‘œλ“œ 및 μ–Έλ‘œλ“œ ν˜„ν™©μ„ λ³Ό 수 μžˆλ‹€.
  • 에셋 λ²ˆλ“€μ²˜λŸΌ μΉ΄ν…Œκ³ λ¦¬λ‘œ λΆ„λ₯˜ν•  수 있으며 ν•΄λ‹Ή μΉ΄ν…Œκ³ λ¦¬λŠ” ν•˜λ‚˜μ˜ 그룹으둜 묢이게 λœλ‹€. μ΄λ•Œ κ·Έλ£Ή λ‚΄ ν•˜λ‚˜μ˜ λ¦¬μ†ŒμŠ€λ§Œ μ‚¬μš©ν•˜λ € 해도 ν•΄λ‹Ή κ·Έλ£Ή λ‚΄ λ²ˆλ“€μ„ μ „λΆ€ λ‹€μš΄λ‘œλ“œν•˜μ—¬μ•Ό μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.
  • μ‚¬μš©λ²•μ΄ λ³΅μž‘ν•˜μ§€ μ•ŠμœΌλ©° μ½”λ“œλ„ κ°„λ‹¨ν•˜λ‹€.
  • λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œ λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 κ΄€λ¦¬ν•˜κ³  싢을 λ•Œλ‚˜ μ„œλ²„μ—μ„œ μΆ”κ°€ 에셋 λ‹€μš΄λ‘œλ“œκ°€ ν•„μš”ν•  λ•Œ μœ μš©ν•˜λ‹€.

 

1. μ–΄λ“œλ ˆμ„œλΈ” μ°½

μ–΄λ“œλ ˆμŠ€λ₯Ό λΆ€μ—¬ν•œ 에셋듀을 관리할 수 μžˆλŠ” 창이닀. μ–΄λ“œλ ˆμ„œλΈ” 에셋을 ν•¨κ»˜ κ·Έλ£Ήν™”ν•˜μ—¬ 빌트인 μ½˜ν…μΈ λ‘œ λΉŒλ“œν•˜κ³  λ‘œλ“œν•˜κ±°λ‚˜ λŸ°νƒ€μž„ μ‹œ λ™μ μœΌλ‘œ λ‘œλ“œν•˜κΈ° μœ„ν•œ λ²ˆλ“€λ‘œ 톡합할 수 μžˆλ‹€. μ΄λŸ¬ν•œ 뢄리λ₯Ό 톡해, κ²Œμž„ μ½”λ“œλ₯Ό λ³€κ²½ν•˜μ§€ μ•Šκ³ λ„ μ œμž‘ μ΅œμ’… 단계에 μ½˜ν…μΈ  νŒ¨ν‚€μ§•κ³Ό 배포에 λŒ€ν•œ μ˜μ‚¬ 결정을 ν•  수 μžˆλ‹€.

 

μ–΄λ“œλ ˆμ„œλΈ” μ°½

 

2. λŸ°νƒ€μž„ λ©”λͺ¨λ¦¬ 관리

에셋 λ²ˆλ“€μ—μ„œλŠ” ν•„μš”ν•˜μ§€ μ•Šμ€ μ½˜ν…μΈ λ₯Ό λ©”λͺ¨λ¦¬μ—μ„œ 효율적으둜 μ–Έλ‘œλ“œ ν•  수 μžˆμ—ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ‘œλ“œν•œ 것과 μ•ˆμ „ν•˜κ²Œ μ–Έλ‘œλ“œ ν•  수 μžˆλŠ” 것을 효과적으둜 μΆ”μ ν•˜κΈ° μœ„ν•΄ κ°œλ°œμžκ°€ λ³΅μž‘ν•œ μ½”λ”© μž‘μ—…μ„ μˆ˜ν–‰ν•΄μ•Ό ν–ˆλ‹€.

 

ν•˜μ§€λ§Œ μ–΄λ“œλ ˆμ„œλΈ”μ„ 톡해 λ‘œλ“œν•˜λ©΄ λ‘œλ“œλœ 에셋과 μ΄λ“€μ˜ 쒅속성에 λŒ€ν•΄ 개랡적인 μ°Έμ‘° νšŸμˆ˜κ°€ μžλ™μœΌλ‘œ κ³„μ‚°λ˜λ―€λ‘œ 더 이상 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ²ˆλ“€κ³Ό κ΄€λ ¨ 에셋을 μžλ™μœΌλ‘œ μ–Έλ‘œλ“œ ν•  수 μžˆλ‹€. λ˜ν•œ μ–΄λ“œλ ˆμ„œλΈ”μ€ λ‘œλ“œλœ 에셋과 에셋 λ²ˆλ“€ μ°Έμ‘° 횟수λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ λ””λ²„κΉ…ν•˜κΈ° μœ„ν•œ μ‹œκ°μ  ν”„λ‘œνŒŒμΌλŸ¬λ„ μ œκ³΅ν•˜κ³  μžˆλ‹€.

 

μ–΄λ“œλ ˆμ„œλΈ” ν”„λ‘œνŒŒμΌλŸ¬

 

3. μ–΄λ“œλ ˆμ„œλΈ” 에셋 μ‚¬μš©

1) ν•΄λ‹Ή 에셋에 μ–΄λ“œλ ˆμŠ€ λΆ€μ—¬ν•˜κΈ°

μ–΄λ“œλ ˆμ„œλΈ” μ²΄ν¬λ°•μŠ€λ₯Ό ν™œμ„±ν™”ν•˜κ³  μ–΄λ“œλ ˆμŠ€λ₯Ό λΆ€μ—¬ν•˜λ©΄ λœλ‹€. μ΄λ•Œ μ–΄λ“œλ ˆμŠ€λŠ” λ””ν΄νŠΈλ‘œ ν˜„μž¬ μ—μ…‹μ˜ pathκ°€ μ£Όμ†Œλ‘œ μ„€μ •λ˜λŠ”λ° μˆ˜μ •μ΄ κ°€λŠ₯ν•˜λ‹€.

 

μ–΄λ“œλ ˆμŠ€ λΆ€μ—¬

 

2) 에셋 λ‘œλ“œν•˜κΈ°

μ½”λ“œλ₯Ό 톡해 λ‘œλ“œν•  수 μžˆλ‹€.

// Lables μ‚¬μš©
Addressables.LoadAssetsAsync(type.ToString(), (Object obj) = >
{
	if (!m_dicObject.ContainsKey(type))
		m_dicObject.Add(type, new Dictionary<string, Object>());

	m_dicObject[type].Add(obj.name, obj);

});

// 이름 μ‚¬μš©
public void LoadAsset(string strAddressableName)
{
    Addressables.InstantiateAsync(strAddressableName);
}

 

μΈμŠ€νŽ™ν„°μ—μ„œ 레퍼런슀λ₯Ό μ§€μ •ν•˜μ—¬ λ‘œλ“œν•  수 μžˆλ‹€.

 

μΈμŠ€νŽ™ν„° μ‚¬μš©

 

μ°Έκ³ 

μ–΄λ“œλ ˆμ„œλΈ”μ„ μ™œ 써야해? μ–΄λ“œλ ˆμ„œλΈ”κ³Ό μ—μ…‹λ²ˆλ“€μ˜ μ°¨μ΄λŠ”? (썸넀일...;;)
μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)
'πŸ“ Game/✏ Unity' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [Unity] 2D κ²Œμž„μ—μ„œ Sprite μ‚¬μš©
  • [Unity] Find Reference 2
  • [Unity] μŠ€ν¬λ¦½ν„°λΈ” 였브젝트(Scriptable Object)
  • [Unity] Layer와 Tag μ‚¬μš© 및 차이
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
[Unity] 에셋 λŸ°νƒ€μž„ λ‘œλ“œ(λ¦¬μ†ŒμŠ€ 폴더, 에셋 λ²ˆλ“€, μ–΄λ“œλ ˆμ„œλΈ” 에셋)
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”