[UE5] ๐Ÿ“œ Custom ComboBox

Singery00ยท2024๋…„ 8์›” 1์ผ
0

UE5

๋ชฉ๋ก ๋ณด๊ธฐ
32/37
post-thumbnail

๊ฐœ์š”

๐Ÿ“œ ์ฝค๋ณด๋ฐ•์Šค๋ฅผ ์ปค์Šคํ…€ํ•ด๋ณด์ž.

์ฝค๋ณด๋ฐ•์Šค๋Š” UI๋ฅผ ํ†ตํ•ด ํŠน์ •ํ•œ ๊ฐ’์„ ์„ค์ •ํ•˜๋Š”๋ฐ ๋งค์šฐ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ํ•œ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ธฐ๋ณธ ๋””์ž์ธ์ด ๋ชป์ƒ๊ฒผ๋‹ค๋Š” ๊ฒ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋””์ž์ธ๋œ ์œ„์ ฏ์„ ์ฝค๋ณด ๋ฐ•์Šค์˜ Content์™€ Item์— ์ ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ์œ ํŠœ๋ธŒ ์˜์ƒ


๋ณธ๋ก 


๐Ÿ“œ ์ปค์Šคํ…€ ์ฝค๋ณด ๋ฐ•์Šค

ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ณด์ž. ๐Ÿ‘


์œ„์ ฏ ๋””์ž์ธ

์šฐ์„  ์ปค์Šคํ…€ ๋””์ž์ธ์„ ํ•œ ์œ„์ ฏ์ด 2๊ฐ€์ง€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ฝค๋ณด๋ฐ•์Šค ์ž์ฒด๊ฐ€ ๋  Content์™€ ์ฝค๋ณด๋ฐ•์Šค๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ณด์ผ Item์— ์‚ฌ์šฉ๋  ์œ„์ ฏ์ž…๋‹ˆ๋‹ค.
์ €๋Š” ํ˜„์žฌ ์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ์˜ˆ์‹œ๋กœ ์„ค๋ช…์„ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋กœ๋น„์—์„œ ์ƒ‰์ƒ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์ ฏ์„ ์ œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

Content ์œ„์ ฏ

๋‹จ์ˆœํžˆ ํ˜„์žฌ ์–ด๋–ค ์ƒ‰์ƒ์„ ๊ณจ๋ž๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ์œ„์ ฏ์ž…๋‹ˆ๋‹ค.

์ƒ‰์ƒ ์ด๋ฏธ์ง€
์ƒ‰์ƒ ํ…์ŠคํŠธ


๊ทธ๋ฆฌ๊ณ  ๊ฐ’์„ ๋„ฃ์–ด์ค„ ์ˆ˜ ์žˆ๋Š” ์ปค์Šคํ…€ ์ด๋ฒคํŠธ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.

Item ์œ„์ ฏ

Item ์œ„์ ฏ๋„ ์˜ต์…˜๊ฐ’์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ์ด๋ฏธ์ง€์™€ ํ…์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์ปค์Šคํ…€ ์ฝค๋ณด ์•„์ดํ…œ์„ ํด๋ฆญํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์œ„ํ•ด์„œ Item์œ„์ ฏ์—๋Š” ๋ฒ„ํŠผ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์œ„์ ฏ ์–ด๋””๋ฅผ ๋ˆ„๋ฅด๋”๋ผ๋„ ํด๋ฆญ์ด ๋˜๋„๋ก ๋ฒ„ํŠผ์„ ์ตœ๋Œ€ํฌ๊ธฐ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

Item์œ„์ ฏ์€ ์ƒ์„ฑ๋˜๋ฉด์„œ ์ฝค๋ณด๋ฐ•์Šค์˜ ์–ด๋–ค ์˜ต์…˜๊ฐ’์ธ์ง€๋ฅผ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์ €๋Š” ์ƒ‰์ƒ๊ฐ’์€ Integer๋กœ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ Expose On Spawn์œผ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ‚ค๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฒคํŠธ ๋””์ŠคํŒจ์ณ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ์ฃผ์„ธ์š”.

๋ฒ„ํŠผ์˜ OnClicked์—์„œ Call๋กœ ๋ฐ›์•„์ฃผ์„ธ์š”.

์ด์ œ ์ฝค๋ณด๋ฐ•์Šค๋ฅผ ์‚ฌ์šฉํ•  ์œ„์ ฏ์œผ๋กœ ์ด๋™ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


์ปค์Šคํ…€ ์ฝค๋ณด ๋ฐ•์Šค ์„ค์ •

์„ค์ • ์ž์ฒด๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

์ฝค๋ณด๋ฐ•์Šค ์ถ”๊ฐ€

์šฐ์„  ์ฝค๋ณด ๋ฐ•์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.
๊ทธ๋ฆฌ๊ณ  Events๋ฅผ ๋ณด์‹œ๋ฉด On Generate Content Widget๊ณผ On Generate Item Widget์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Content Widget ์ ์šฉ

On Generate Content Widget๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.
Create Binding ๋ˆŒ๋Ÿฌ ์ฃผ์„ธ์š”.

๊ทธ๋Ÿผ ์•„๋ž˜์™€ ๊ฐ™์€ ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ต์ˆ™ํ•œ ์œ„์ ฏ ๋ฐ”์ธ๋”ฉ์ด์ฃ ?

์—ฌ๊ธฐ์„œ Create Widget์œผ๋กœ ์ ์šฉํ•  ์ปค์Šคํ…€ ์œ„์ ฏ์„ ๋„ฃ์–ด ์ฃผ๋ฉด ๋์ž…๋‹ˆ๋‹ค.
์•„๋ž˜ ๊ณผ์ •์œผ๋กœ ๋„ฃ์–ด ์ฃผ์„ธ์š”.

์‹คํ–‰ํ•ด๋ณด๋ฉด ์ฝค๋ณด๋ฐ•์Šค์˜ ๊ธฐ๋ณธ ์ƒํƒœ๊ฐ€ ์ œ์ž‘ํ•œ ์ปค์Šคํ…€ ์œ„์ ฏ์œผ๋กœ ๋ณ€๊ฒฝ๋œ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ Item์„ ๋ณด๋ฉด ๊ธฐ๋ณธ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ด์ œ Item๋„ ์ปค์Šคํ…€ ์œ„์ ฏ์„ ๋„ฃ์–ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

Item Widget ์ ์šฉ

๋™์ผํ•˜๊ฒŒ On Generate Item Widget๋„ ๋ฐ”์ธ๋”ฉ ํ•จ์ˆ˜ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  Create Widget์œผ๋กœ ์ปค์Šคํ…€ ์•„์ดํ…œ ์œ„์ ฏ์„ ๋„ฃ์–ด ์ฃผ์„ธ์š”.

์—ฌ๊ธฐ์„œ ๋ฐ”์ธ๋”ฉํ•จ์ˆ˜์—์„œ Item ์•„์›ƒํ’‹๊ฐ’์ด ์ฝค๋ณด๋ฐ•์Šค์—์„œ ์„ค์ •ํ•œ ์˜ต์…˜๊ฐ’์ด ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด์˜ต๋‹ˆ๋‹ค.
ํ•ด๋‹น ๊ฐ’์„ ์˜ต์…˜ ์ €์žฅ๊ฐ’์— ํ• ๋‹นํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ €์˜ ๊ฒฝ์šฐ Color Key๊ฐ’์„ Integer๋กœ ์„ค์ •ํ•ด์„œ ๋ณ€ํ™˜ํ•ด์„œ ๋„ฃ์–ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ํ•ด๋ณด๋ฉด ์•„์ดํ…œ๊นŒ์ง€ ์„ค์ •ํ•œ ์ปค์Šคํ…€ ์œ„์ ฏ์œผ๋กœ ๋‚˜์˜ค๊ณ , ์˜ต์…˜์— ๋”ฐ๋ฅธ ๊ฐ’์ด ์ž˜ ์ถœ๋ ฅ๋˜๋Š”๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ต์…˜์— ๋”ฐ๋ฅธ ์œ„์ ฏ๊ฐ’์€ ์ปค์Šคํ…€ ์•„์ดํ…œ ์œ„์ ฏ์˜ Construct์—์„œ ๋กœ์ง์„ ์ž‘์„ฑํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์•„์ดํ…œ ํด๋ฆญ ๋ฐ”์ธ๋”ฉ

ํ•˜์ง€๋งŒ ์•„์ดํ…œ์„ ํด๋ฆญํ•ด๋„ ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ปค์Šคํ…€ ์œ„์ ฏ์ด๊ธฐ ๋•Œ๋ฌธ์— ํด๋ฆญ ์‹œ ๋™์ž‘๋˜ํ•œ ์ž‘์„ฑํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ผ๊ฐ€์•ผํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ฐ”์ธ๋”ฉํ•  ์ปค์Šคํ…€ ์ด๋ฒคํŠธ ์ƒ์„ฑ
  2. ์ปค์Šคํ…€ Item ์œ„์ ฏ์˜ ์ด๋ฒคํŠธ ๋””์ŠคํŒจ์ฒ˜ ๋ฐ”์ธ๋”ฉ
  3. ์˜ต์…˜๊ฐ’ ํ• ๋‹น

์–ด๋–ค ๋ฒ„ํŠผ์ด ํด๋ฆญ๋˜์—ˆ๋Š”์ง€๋ฅผ ์•Œ์•„์•ผ ํ•˜๋‹ˆ ์ปค์Šคํ…€ Item ์œ„์ ฏ์„ Input์œผ๋กœ ๊ฐ€์ง€๋„๋ก ์ปค์Šคํ…€ ์ด๋ฒคํŠธ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  On Generate Item Widget ๋ฐ”์ธ๋”ฉ ํ•จ์ˆ˜๋กœ ๊ฐ€์„œ ์ปค์Šคํ…€ ์ด๋ฒคํŠธ์— ๋ฐ”์ธ๋”ฉํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.
Item์€ ์œ„์ ฏ์„ ๋ณ€์ˆ˜๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๋ฐ”์ธ๋”ฉํ•ด์ฃผ์„ธ์š”.

๋‹ค์‹œ ์ปค์Šคํ…€ ์ด๋ฒคํŠธ๋กœ ๋Œ์•„์™€์„œ ์ปค์Šคํ…€ Item ์œ„์ ฏ์˜ ์ด๋ฒคํŠธ ๋””์ŠคํŒจ์ฒ˜๋ฅผ ๋ฐ”์ธ๋”ฉํ•ด์ฃผ์„ธ์š”.

์ด ์ด๋ฒคํŠธ์—์„œ๋Š” 2๊ฐ€์ง€๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

  1. ์‹ค์ œ ์ฝค๋ณด ๋ฐ•์Šค์˜ ์˜ต์…˜๊ฐ’ ๋ณ€๊ฒฝ
  2. ์ปค์Šคํ…€ Content ์œ„์ ฏ์˜ ๊ฐ’ ๋ณ€๊ฒฝ

์ฝค๋ณด๋ฐ•์Šค ๊ฐ’์ด ๋ณ€ํ•œ๋‹ค๊ณ  ์ปค์Šคํ…€ ์œ„์ ฏ์ด ๋ณ€ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋”ฐ๋กœ๋”ฐ๋กœ ํ• ๋‹นํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฝค๋ณด๋ฐ•์Šค๋ฅผ ๋Œ์–ด์„œ Set Selected Option์œผ๋กœ ์‹ค์ œ ๊ฐ’ ๋ณ€๊ฒฝํ•ด์ฃผ์‹œ๊ณ ,
๋ณ€์ˆ˜๋กœ ๋งŒ๋“ค์–ด ๋’€๋˜ ์ปค์Šคํ…€ Content ์œ„์ ฏ์—์„œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ด๋ฒคํŠธ ํ˜ธ์ถœํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ํ•ด์„œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ž˜ ๋™์ž‘ํ•˜์ฃ ?

๊ธฐ๋ณธ ์Šคํƒ€์ผ ๋ณ€๊ฒฝ

๊ทผ๋ฐ ์•„์ง ๊ธฐ๋ณธ ์Šคํƒ€์ผ์ด ๋‚จ์•„ ์žˆ์–ด ๋ชป์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.
๊ฐ„๋‹จํ•˜๊ฒŒ ์ฝค๋ณด๋ฐ•์Šค ์Šคํƒ€์ผ์˜ Tint์˜ ํˆฌ๋ช…๋„๊ฐ’์„ 0์œผ๋กœ ๋ณ€๊ฒฝํ•ด์„œ ์•ˆ๋ณด์ด๊ฒŒ ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ์„  ๋ฐ•์Šค์˜ ์•„๋ž˜ 3๊ฐ€์ง€๋ฅผ ํˆฌ๋ช…๋„ 0์œผ๋กœ ํ•ด์ฃผ์„ธ์š”.

์ €๋Š” ํ™”์‚ดํ‘œ๋„ ์•ˆ๋ณด์ด๊ฒŒ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ์ปค์Šคํ…€ ๋””์ž์ธ๋งŒ ๋ณด์—ฌ์„œ ๊น”๋”ํ•˜์ฃ .

์ตœ์ข… ์ €์˜ ๊ฒฐ๊ณผ๋ฌผ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ข…์กฑ๊ณผ ์ƒ‰์„ ์„ ํƒํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.


๋งˆ๋ฌด๋ฆฌ

์ด์ƒ์œผ๋กœ ์ฝค๋ณด๋ฐ•์Šค๋ฅผ ์ปค์Šคํ…€ ์œ„์ ฏ์œผ๋กœ ๋””์ž์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

profile
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์ž

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