κ°œλ°œν•˜λ‹€κ°€ μ‰¬λ©΄μ„œ, μ‹¬μ‹¬ν•΄μ„œ Docs λ¦¬λ·°ν•˜λŠ” 김에

본인도 λͺ¨λ₯΄λ‹€κ°€ κ³΅λΆ€ν•΄λ‚˜κ°€λ©΄μ„œ μ •λ¦¬ν•˜λŠ” κ²Έ.

μ›λž˜ 본인 λΈ”λ‘œκ·Έμ—λ‹€κ°€ μž‘μ„±ν•œ κΈ€μ΄μ§€λ§Œ. λ§ν¬λŠ” κ±Έμ§€ μ•Šκ³ 

μ € 같은 초보 κ°œλ°œμžλ“€μ΄ 도움이 λ˜λ„λ‘ 글을 μ¨λ΄…λ‹ˆλ‹€.


[Editor]


λ‚˜μ˜¨μ§€ 2년은 λ„˜κ²Œ μ§€λ‚¬μ§€λ§Œ, 아직도 New Input System 으둜 λΆˆλ¦°λ‹€.

μœ λ‹ˆν‹°μ—μ„œλŠ” 기쑴의 Input Managerκ°€ μ—¬λŸ¬ ν”Œλž«νΌκ³Ό 기쒅에 따라 섀정을 달리 ν•΄μ•Όν•˜λŠ” λ°©μ‹μ—μ„œ λ²—μ–΄λ‚˜

μƒˆλ‘­κ²Œ The Input System νŒ¨ν‚€μ§€λ₯Ό λ°°ν¬ν•˜κ³  μžˆλ‹€.


거의 λŒ€λΆ€λΆ„μ˜ 개발 μ„œμ κ³Ό κ°•μ˜λ“€μ€ Input Manager λ₯Ό κΈ°μ€€μœΌλ‘œ

κ°€λ₯΄μ³μ™”κ³ , λ§Žμ€ κ²Œμž„ κ°œλ°œμžλ“€μ€ μ΅μˆ™ν•΄μ§„ Input Managerμ—μ„œ

μƒˆλ‘œμš΄ New Input System으둜 κ΅μ²΄ν•˜κΈ°μ—λŠ” ꡳ이? μ‹œκ°„μ„ λ“€μ—¬μ•Ό ν•˜λ‚˜? 싢을 μˆ˜λ„ μžˆλ‹€.


μ§€κΈˆ μ“°λŠ” ν¬μŠ€νŒ…μ€

New Input System 에 λŒ€ν•΄ μ² μ €νžˆ λΆ„μ„ν•΄μ„œ

λ§Žμ€ 이듀이 λ„μž… ν•  수 μžˆκ²Œλ” λ„μ™€μ£ΌλŠ”κ±Έ λͺ©ν‘œλ‘œ ν•˜κ³  μžˆλ‹€.

λ‚˜ 처럼 μ΅μˆ™ν•˜μ§€ μ•ŠμœΌλ©΄ νž˜λ“€μ–΄ν•˜λŠ” 초보 κ°œλ°œμžλ“€ν•œν…Œ 도움이 λ˜μ—ˆμœΌλ©΄ μ’‹κ² λ‹€.


-


The Input System μ΄λž€?


The Input System 은 μžμ‹ μ˜ κ²Œμž„μ„ 컨트둀 ν•  수 μžˆλŠ” μž…λ ₯ μž₯치λ₯Ό 관리 ν•΄μ£ΌλŠ” νŒ¨ν‚€μ§€μ΄λ‹€.


기쑴의 Input Manager 의 μ‚¬μš©κ³Ό λͺ©μ μ΄ μ •ν™•νžˆ κ°™λ‹€.

κ·Έλ ‡λ‹€λ©΄, κΈ°μ‘΄ (Old One) 이라고 ν‘œν˜„ν•˜λŠ” μ‹œμŠ€ν…œλ³΄λ‹€ 더 μ’‹μ•„μ•Ό μ‚¬λžŒλ“€μ΄ ꡐ체λ₯Ό κ³ λ―Ό ν•  것이닀.


(1) Old One, κΈ°μ‘΄ Input Managerμ—μ„œλŠ”..


Docsμ—μ„œλŠ” κΈ°μ‘΄ 인풋 λ§€λ‹ˆμ € (Input Manager) λŠ” 각각의 κΈ°μ’…κ³Ό ν‚€λ³΄λ“œμ— κ΅¬ν˜„ν•œ κΈ°λŠ₯을

"직접" 바인딩 (binding) ν•΄μ•Ό ν•˜λŠ” μž‘μ—…μ΄ ν•„μš”ν•˜λ‹€.


λ‚˜λŠ” 점프 (Jump)λ₯Ό ν•˜κ³  μ‹Άμ–΄μ„œ, Jump Function() 을 κ΅¬ν˜„ν–ˆλ‹€.

λ‚˜λŠ” μžμ‹ μ˜ κ²Œμž„μ΄ ν”Œλ ˆμ΄μŠ€ν…Œμ΄μ…˜ λ“€μ–Ό 쇼크 νŒ¨λ“œ, μ—‘μŠ€λ°•μŠ€ 원 μ—˜λ¦¬λ“œ 컨트둀러 심지어 ν•Έλ“œν° 컨트둀러 앱을 ν†΅ν•΄μ„œλ„ μž‘λ™λ˜κΈΈ λ°”λž€λ‹€.

그러면, λͺ¨λ“  κΈ°κΈ°λ“€μ˜ ν‚€ 바인딩에 맞게 Jump Function 을 등둝 ν•΄μ€˜μ•Ό ν•œλ‹€.


이 ν¬μŠ€νŒ…μ˜ λͺ©μ μ€ κΈ°μ‘΄ μ‹œμŠ€ν…œκ³Ό 비ꡐ가 μ•„λ‹ˆλΌ

μƒˆλ‘œμš΄ μ‹œμŠ€ν…œμ— λŒ€ν•œ νŠΉμ§•μ„ μ§‘μ€‘μ μœΌλ‘œ μ„€λͺ…ν•  μ˜ˆμ •μ΄λ‹€.


(2) λ‹Ήμ—°νžˆ, μœ„μ˜ λΆˆνŽΈν•¨μ„ ν•΄κ²°ν•΄μ£Όκ³ μš”. λ™μ‹œμ— 직관적인 UI 제곡, κ°„νŽΈν•˜κ²Œ Action 섀정도 κ°€λŠ₯ν•©λ‹ˆλ‹€.


Input System 은 λŒ€λΆ€λΆ„ ν”Œλž«νΌμ„ μ§€μ›ν•˜κ³ , ν”Œλž«νΌ λ³„κ°„μ˜ Action μ²˜λ¦¬λ„ κ°€λŠ₯ν•˜λ©° ( μž…λ ₯, ν™€λ“œ, 릴리즈 λ“±)

κ½€λ‚˜ 자유둭게 μΉ΄ν…Œκ³ λ¦¬ν™”κ°€ κ°€λŠ₯ν•˜λ‹€.



7cf3c028e2f206a26d81f6e64f84776b



Action듀을 μ›ν•˜λŠ” ν‚€λ‘œ 바인딩 ν•  수 있고, Action을 μ§€μ •ν•  수 μžˆλ‹€.

μ‚¬μš© 방법과 μŠ€ν¬λ¦½νŠΈν™” λ“±, μžμ„Έν•œ μ‚¬μš© 방법 μ„€λͺ…은 계속 될 ν¬μŠ€νŒ…μ—μ„œ ν•˜κ² λ‹€.


The Input System Basic Concept

Docs λ¦¬λ·°μ—μ„œ 제일 μ€‘μš”ν•œ 건,

ν•΄λ‹Ή APIλ‚˜ νŒ¨ν‚€μ§€μ˜ 개발 μ˜λ„μ™€ 철학을 μ΄ν•΄ν•˜λŠ” 것이닀.

Input System에 λ‹΄κΈ΄ 철학은 무엇인지 κ°„λ‹¨ν•˜κ²Œ μ•Œμ•„λ³΄μž.

(사싀 거의 κ·Έλƒ₯ Input ν”Œλ‘œμš° 에 λŒ€ν•œ 이야기닀.. )


7ff3c028e2f206a26d81f6e24e827c6e



μ‚¬μš©μž ( User ) : κ²Œμž„μ„ ν”Œλ ˆμ΄ν•˜κΈ° μœ„ν•΄ 샷건을 μΉ˜κ±°λ‚˜ λ²„νŠΌμ„ 마ꡬ νœ˜μ “κ±°λ‚˜, λˆŒλ €λ‹€ λ–Όμ—ˆλ‹€ ν•˜λŠ” 동물이닀.


μž…λ ₯ κΈ°κΈ° ( Input Device ) : HCI (Human Computer Interaction) μ΄λ‘ μ—μ„œ λ§ν•˜κΈΈ, κ°€μž₯ μ€‘μš”ν•œ μ‚¬μš©μžμ™€ μ»΄ν“¨ν„°κ°„μ˜ μƒν˜Έ μž‘μš© 맀체이닀. 즉, ν‚€λ³΄λ“œλ‹€.


μ•‘μ…˜ (Action) : μ‚¬μš©μžκ°€ μž…λ ₯ κΈ°κΈ°λ₯Ό 톡해 컨트둀 (Control) 을 ν–ˆμ„ λ•Œ, μ˜λ„ν•˜λŠ” λ™μž‘μ„ λ§ν•œλ‹€. μ„€λͺ…은 μ–΄λ ΅κ²Œ λ§ν•˜μ§€λ§Œ,

μ ν”„λ‚˜ 달리기 λ²„νŠΌ, λŒ€ν™”μ°½ μŠ€ν‚΅ λ“±. μ–΄λ–€ 일을 ν•˜κΈ° μœ„ν•œ ν–‰μœ„λ₯Ό λ§ν•œλ‹€.


μ•‘μ…˜ λ§΅ (Action Map) : μ•‘μ…˜λ“€μ„ μ–΄λ–€ νŠΉμ • 그룹으둜 묢어주도둝 ν•œλ‹€. ν•΄λ‹Ή μ•‘μ…˜λ“€μ„ λ™μ‹œμ— μ œμ–΄ ν•˜λŠ” 역할을 λ§‘λŠ”λ‹€.

ν”Œλ ˆμ΄μ–΄λ₯Ό μ œμ–΄ν•˜κ±°λ‚˜, κ²Œμž„μ— λ“±μž₯ν•˜λŠ” UI λ₯Ό μ œμ–΄ν•˜κΈ° μœ„ν•œ μ•‘μ…˜λ“€μ„ 컨트둀 ν•œλ‹€.


바인딩 (Binding) : "λ¬Άλ‹€" λΌλŠ” 사전 μ •μ˜ κ·ΈλŒ€λ‘œ, μž…λ ₯ 기기의 λ²„νŠΌ μ‘°μž‘ ( Control ) κ³Ό ν–‰μœ„ ( Action ) 을 λ¬Άμ–΄μ£ΌλŠ” μš©μ–΄μ΄λ‹€. X λ²„νŠΌμ„ 눌러 쑰이 μ•‘μ…˜μ„ ν•œλ‹€κ³  μƒκ°ν•˜μž.


슀크립트 ( Action Code ) : μ‹€μ œλ‘œ μ•‘μ…˜μ— μ˜ν•΄ μ–΄λ–€ λ™μž‘μ„ ν•˜λŠ”μ§€λ₯Ό μ •μ˜ν•œλ‹€. 점프 λ²„νŠΌμ„ λˆŒλ €λ‹€λ©΄, 캐릭터λ₯Ό 점프 μ‹œμΌœμ•Ό ν•œλ‹€. 캐릭터λ₯Ό 점프 μ‹œν‚€λŠ” κ΅¬ν˜„ μžμ²΄λŠ” 슀크립트 μƒμ—μ„œ κ΅¬ν˜„ λ˜μ–΄μ•Ό ν•œλ‹€. μ•‘μ…˜λ“€μ€ Vector, Bool ν˜Ήμ€ Callback ν˜•νƒœλ‘œ μ‚¬μš© λœλ‹€.


μ•‘μ…˜ 에셋 ( Action Asset ) : 인풋 μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•˜λŠ” 데에 μžˆμ–΄μ„œ, ν•΄λ‹Ή 컨셉을 이해해야 ν•œλ‹€.

μ‚¬μš©μžκ°€ μž…λ ₯ κΈ°κΈ°λ₯Ό μ§€μ •ν•˜κ³ , μ•‘μ…˜μ„ μ •μ˜ν•˜κ³ , μž…λ ₯ 기기와 μ•‘μ…˜μ„ 바인딩 ν•œ λͺ¨λ“  섀정듀을 μΌμ’…μ˜ 에셋 (Asset)으둜 λ°°ν¬ν•œλ‹€. 이 에셋듀은 project-wide actions 라고 ν•˜λ©° ν”„λ‘œμ νŠΈ μƒμ—μ„œ μ‰½κ²Œ μ°Έμ‘° ν•  수 μžˆλ‹€.


μ•‘μ…˜ 에셋에 λŒ€ν•΄ μ„€λͺ…이 μ• λ§€ν•˜λ‹€κ³  μ‹ΆμœΌλ©΄, μ½”λ“œλ₯Ό 보자.

κ·Έλƒ₯.. μž…λ ₯에 λŒ€ν•œ Configuration 듀이 λ‹΄κΈ΄ 클래슀λ₯Ό ν•˜λ‚˜ μ„ μ–Έν•œλ‹€. 라고 μ΄ν•΄ν•˜λ©΄ νŽΈν•˜λ‹€~


78f3c028e2f206a26d81f6ec45857d



μ„€μΉ˜ 방법, 마우슀 클릭 μ •ν™•νžˆ 5λ²ˆμ— 끝.

μœ λ‹ˆν‹° μƒλ‹¨μ˜ Window -> Package Manager λ₯Ό λˆ„λ₯΄κ³ ,

ν•΄λ‹Ή 창의 Packages:Unity Registry νƒ­μœΌλ‘œ λ³€κ²½

λͺ©λ‘μ—μ„œ Input System 을 μ°Ύμ•„ "Install"


7ef3c028e2f206a26d81f6ec4181716f



그러면 μœ λ‹ˆν‹° μž¬μ‹œμž‘κ³Ό ν•¨κ»˜ νŒ¨ν‚€μ§€ μ„€μΉ˜κ°€ μ™„λ£Œλœλ‹€.

μ΄μ œλŠ” μ–΄λ–»κ²Œ ν•΄λ‹Ή νŒ¨ν‚€μ§€λ₯Ό μ‚¬μš© ν•  것인가?



79f3c028e2f206a26d81f6e44486736d0f



Project Setting μ—μ„œ Player μ—μ„œ μ•„λž˜ λͺ©λ‘λ“€μ„ 잘 살쳐보면 Configuration μͺ½μ—

Active Input Handling 토글창이 μ‘΄μž¬ν•œλ‹€.

ν•΄λ‹Ή ν† κΈ€μ—μ„œ Both 둜 λ³€κ²½ν•œλ‹€.

*new one 으둜 ν•˜λ©΄ μƒˆλ‘œμš΄ 인풋 μ‹œμŠ€ν…œλ§Œ μ‚¬μš©ν•˜μ§€λ§Œ, λ­”κ°€ λΆˆμ•ˆμ •ν•œκ²Œ μžˆλŠ”μ§€ λ™μ‹œμ— μ‚¬μš©μ„ ꢌμž₯ν•˜κ³  μžˆλ‹€.