πŸ“„

Enumeration - E

Mark as Draft

μ •μ˜

Unreal Engine λ‚΄λΆ€μ—μ„œ μ—°κ΄€λœ μ—¬λŸ¬ 개의 μƒμˆ˜ 값을 이름이 μžˆλŠ” λͺ©λ‘μœΌλ‘œ μ •μ˜ν•˜μ—¬ 가독성을 높이고 νŠΉμ • 데이터 νƒ€μž…μ„ μ—„κ²©ν•˜κ²Œ μ œν•œν•˜λŠ” μ‚¬μš©μž μ •μ˜ 데이터 ν˜•μ‹μ΄λ‹€.

μ„€λͺ…

초기 ν”„λ‘œκ·Έλž˜λ° ν™˜κ²½μ—μ„œλŠ” νŠΉμ • μƒνƒœλ‚˜ μœ ν˜•μ„ κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ 0 ν˜Ήμ€ 1κ³Ό 같은 μ •μˆ˜ν˜• 숫자λ₯Ό λ³€μˆ˜μ— 직접 ν• λ‹Ήν•˜μ—¬ κ΄€λ¦¬ν–ˆλ‹€. ν•˜μ§€λ§Œ ν”„λ‘œμ νŠΈ 규λͺ¨κ°€ 컀짐에 따라 ν•΄λ‹Ή μˆ«μžκ°€ 무엇을 μ˜λ―Έν•˜λŠ”μ§€ νŒŒμ•…ν•˜κΈ° μ–΄λ €μš΄ Magic Number λ¬Έμ œκ°€ λ°œμƒν•˜μ—¬ μ½”λ“œ μœ μ§€λ³΄μˆ˜μ— 큰 μž₯μ• κ°€ λ˜μ—ˆλ‹€. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ •μˆ˜ 값에 인간이 이해할 수 μžˆλŠ” κ³ μœ ν•œ 이름을 λΆ€μ—¬ν•˜λŠ” Enumeration κ°œλ…μ΄ ν˜„λŒ€ ν”„λ‘œκ·Έλž˜λ°μ˜ ν•΅μ‹¬μœΌλ‘œ 자리 μž‘μ•˜λ‹€. Unreal Engineμ—μ„œλŠ” C++ μ†ŒμŠ€ μ½”λ“œλ₯Ό ν†΅ν•œ μ •μ˜λΏλ§Œ μ•„λ‹ˆλΌ 에디터 μžμ²΄μ—μ„œ 독립적인 μ—μ…‹μœΌλ‘œ μƒμ„±ν•˜μ—¬
πŸ“„
Blueprint - BP
Systemκ³Ό μœ μ—°ν•˜κ²Œ 연동할 수 μžˆλ„λ‘ κ³ λ„ν™”λœ Interfaceλ₯Ό μ§€μ›ν•œλ‹€. μ΄λŠ” 개발 κ³Όμ •μ—μ„œ λ°œμƒν•  수 μžˆλŠ” Data μž…λ ₯ 였λ₯˜λ₯Ό Compiling λ‹¨κ³„μ—μ„œ 사전에 μ°¨λ‹¨ν•˜κ³  μ „λ°˜μ μΈ μ†Œν”„νŠΈμ›¨μ–΄ Logic ꡬ쑰λ₯Ό λͺ…ν™•ν•˜κ²Œ μ „λ‹¬ν•˜λŠ” ν•„μˆ˜μ μΈ Data 관리 μˆ˜λ‹¨μœΌλ‘œ μž‘λ™ν•œλ‹€.

원리

  1. λͺ…λͺ…λœ μƒμˆ˜μ˜ 논리적 κ·Έλ£Ήν™”
    1. 의미λ₯Ό μ•Œ 수 μ—†λŠ” μ •μˆ˜ν˜• μˆ«μžμ— μœ μ˜λ―Έν•œ 이름을 λΆ€μ—¬ν•˜μ—¬ μ†ŒμŠ€ μ½”λ“œμ™€ 에셋 λ‚΄λΆ€μ—μ„œ Dataκ°€ κ°€μ§„ 상징성을 κ°•ν™”ν•˜κ³  Logic의 μ˜λ„λ₯Ό λͺ…ν™•ν•˜κ²Œ ν‘œν˜„ν•œλ‹€.
  1. 데이터 νƒ€μž…μ˜ μ—„κ²©ν•œ μœ νš¨μ„± 검사
    1. μ •μ˜λœ λͺ©λ‘ μ΄μ™Έμ˜ 값이 λ³€μˆ˜μ— κ°•μ œλ‘œ ν• λ‹Ήλ˜λŠ” 것을 System적으둜 μ°¨λ‹¨ν•˜μ—¬ 예기치 μ•Šμ€ μƒνƒœ μ§„μž…μœΌλ‘œ μΈν•œ μ†Œν”„νŠΈμ›¨μ–΄ μΆ©λŒμ„ λ°©μ§€ν•˜κ³  System μ•ˆμ •μ„±μ„ ν™•λ³΄ν•œλ‹€.
  1. Blueprint μ‹œκ°ν™” 및 μžλ™ν™” 지원
    1. μ—μ…‹μœΌλ‘œ μƒμ„±λœ Enumeration은 Editor λ‚΄λΆ€μ˜ λ“œλ‘­λ‹€μš΄ 메뉴 ν˜•νƒœλ‘œ μžλ™ μ‹œκ°ν™”λ˜μ–΄ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ•„λ‹Œ κΈ°νšμžλ‚˜ μ•„ν‹°μŠ€νŠΈλ„ 논리적 였λ₯˜ 없이 μ•ˆμ „ν•˜κ²Œ μƒνƒœλ₯Ό μ„ νƒν•˜κ³  κ΄€λ¦¬ν•˜λ„λ‘ λ•λŠ”λ‹€.
  1. 효율적인 λΆ„κΈ° 처리λ₯Ό μœ„ν•œ μŠ€μœ„μΉ˜ ꡬ쑰
    1. Enumeration λ³€μˆ˜λ₯Ό μž…λ ₯κ°’μœΌλ‘œ λ°›λŠ” μ „μš© λΆ„κΈ° λ…Έλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μˆ˜λ§Žμ€ 쑰건문을 μž‘μ„±ν•˜μ§€ μ•Šκ³ λ„ 각 μƒνƒœμ— λ§žλŠ” μ‹€ν–‰ 경둜λ₯Ό μ§κ΄€μ μœΌλ‘œ 섀계할 수 μžˆλŠ” μ΅œμ ν™”λœ μ œμ–΄ ꡬ쑰λ₯Ό μ œκ³΅ν•œλ‹€.

ꡬ쑰

enum class EMovementState : uint8 { Idle, Walking, Running, Jumping };

μ˜ˆμ‹œ

인곡지λŠ₯ 행동 μƒνƒœ 기ꡬ 섀계

적 μΊλ¦­ν„°μ˜ 행동 νŒ¨ν„΄μ„ λŒ€κΈ° 좔적 곡격 도망 λ“±μœΌλ‘œ μ„ΈλΆ„ν™”ν•˜μ—¬ Enumeration으둜 μ •μ˜ν•œλ‹€. ν˜„μž¬ μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ³€μˆ˜μ— Enumeration을 μ μš©ν•˜λ©΄ AI System이 ν˜„μž¬ μ–΄λ–€ 행동을 μˆ˜ν–‰ν•΄μ•Ό ν•˜λŠ”μ§€ λͺ…ν™•ν•˜κ²Œ νŒλ³„ν•  수 μžˆλ‹€. μƒνƒœκ°€ λ³€ν™”ν•  λ•Œλ§ˆλ‹€ μ§€μ •λœ μ΄λ¦„μœΌλ‘œ 값을 λ³€κ²½ν•¨μœΌλ‘œμ¨ Logic 전이 과정을 μ‹œκ°μ μœΌλ‘œ μΆ”μ ν•˜κΈ° μš©μ΄ν•˜λ©° μƒνƒœ κ°„μ˜ 논리적 μΆ©λŒμ„ μ΅œμ†Œν™”ν•˜λŠ” μ•ˆμ •μ μΈ μ§€λŠ₯ν˜• System을 κ΅¬μΆ•ν•œλ‹€.

μ•„μ΄ν…œ μΉ΄ν…Œκ³ λ¦¬ λΆ„λ₯˜ 및 필터링 μ‹œμŠ€ν…œ

κ²Œμž„ λ‚΄ μ‘΄μž¬ν•˜λŠ” μˆ˜λ§Žμ€ μ•„μ΄ν…œ 에셋을 무기 방어ꡬ μ†Œλͺ¨ν’ˆ 재료 λ“±μœΌλ‘œ λΆ„λ₯˜ν•  λ•Œ ν™œμš©ν•œλ‹€. Enumeration을 톡해 Categoryλ₯Ό 섀정해두면 인벀토리 Systemμ—μ„œ νŠΉμ • μœ ν˜•μ˜ μ•„μ΄ν…œλ§Œ ν•„ν„°λ§ν•˜κ±°λ‚˜ μΊλ¦­ν„°μ˜ μž₯μ°© κ°€λŠ₯ μ—¬λΆ€λ₯Ό 검사할 λ•Œ λ³΅μž‘ν•œ λ¬Έμžμ—΄ 비ꡐ 없이 μ •ν™•ν•œ λΆ„λ₯˜ Dataλ₯Ό μ œκ³΅ν•œλ‹€. μ΄λŠ” λŒ€κ·œλͺ¨ Dataλ₯Ό μ²˜λ¦¬ν•˜λŠ” 물리적 μ—°μ‚° 속도λ₯Ό 높이고 Data 관리 νš¨μœ¨μ„±μ„ κ·ΉλŒ€ν™”ν•œλ‹€.

μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€ ν™”λ©΄ 흐름 및 μƒνƒœ μ œμ–΄

메인 메뉴 ν™˜κ²½ μ„€μ • κ²Œμž„ ν”Œλ ˆμ΄ κ²°κ³Ό ν™”λ©΄ λ“± User Interface μœ„μ ―μ˜ ν˜„μž¬ λ…ΈμΆœ μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μ •μ˜ν•œλ‹€. Enumeration λ³€μˆ˜μ˜ 값에 따라 ν˜„μž¬ 화면에 λ Œλ”λ§λ˜μ–΄μ•Ό ν•  μ΅œμƒμœ„ UI μš”μ†Œλ₯Ό κ²°μ •ν•˜κ³  μž…λ ₯ μž₯치의 초점 이동 κ·œμΉ™μ„ 절차적으둜 μ •μ˜ν•œλ‹€. 이λ₯Ό 톡해 ν™”λ©΄ μ „ν™˜ μ‹œ λ°œμƒν•˜λŠ” 비논리적인 쀑첩 ν˜„μƒμ„ λ°©μ§€ν•˜κ³  μ‚¬μš©μž κ²½ν—˜μ˜ 흐름을 단일 λ³€μˆ˜ μ²΄κ³„λ‘œ λͺ…ν™•ν•˜κ²Œ ν†΅μ œν•˜λŠ” ꡬ쑰λ₯Ό μ™„μ„±ν•œλ‹€.
Mark as Published
Β