Canvas - TeamCrazyPerformance/Game_study GitHub Wiki

์บ”๋ฒ„์Šค(Canvas)

๋ชจ๋“  UI ์š”์†Œ๋Š” Canvas ์•ˆ์— ์œ„์น˜ํ•ด์•ผ ํ•œ๋‹ค. ์บ”๋ฒ„์Šค๋Š” Canvas ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์ด๋ฉฐ ๋ชจ๋“  UI ์š”์†Œ๋Š” ๋ฐ˜๋“œ์‹œ ์–ด๋–ค ์บ”๋ฒ„์Šค์˜ ์ž์‹์ด์–ด์•ผ ํ•œ๋‹ค. Canvas๋Š” UI ์š”์†Œ ์ค‘ ๋ฌด์—‡์ด๋“  ์ƒ์„ฑํ•  ๋•Œ ๊ฐ™์ด ์ƒ์„ฑ๋œ๋‹ค.(์ค‘๋ณต ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ) ์˜ˆ๋ฅผ ๋“ค์–ด, GameObject > UI > Image ๋ฉ”๋‰ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋ฉด (์”ฌ์— ์•„์ง ์บ”๋ฒ„์Šค๊ฐ€ ์—†์„ ๊ฒฝ์šฐ)์ž๋™์œผ๋กœ ์บ”๋ฒ„์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด ๋•Œ ์ด UI ์š”์†Œ๋Š” ์ด ์บ”๋ฒ„์Šค์˜ ์ž์‹์œผ๋กœ์„œ ์ƒ์„ฑ๋œ๋‹ค. ์บ”๋ฒ„์Šค ์˜์—ญ์€ ์”ฌ ๋ทฐ์—์„œ ์‚ฌ๊ฐํ˜•์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋ฏ€๋กœ ๋งค๋ฒˆ ๊ฒŒ์ž„ ๋ทฐ๊ฐ€ ๋ณด์ด๊ฒŒ ํ•˜์ง€ ์•Š๊ณ ๋„ UI ์š”์†Œ๋ฅผ ๋ฐฐ์น˜ํ•˜๊ธฐ ์šฉ์ดํ•˜๋‹ค. Canvas ๋Š” ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์„ ๋•๊ธฐ ์œ„ํ•ด EventSystem ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์š”์†Œ ๊ทธ๋ฆฌ๊ธฐ ์ˆœ์„œ

์บ”๋ฒ„์Šค์— ์žˆ๋Š” UI ์š”์†Œ๋Š” ๊ณ„์ธต ๊ตฌ์กฐ์— ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ๊ณผ ๋™์ผ ์ˆœ์„œ๋กœ ๊ทธ๋ ค์ง„๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ž์‹์ด ์ฒ˜์Œ์œผ๋กœ ๊ทธ๋ ค์ง€๊ณ , ๋‘ ๋ฒˆ์งธ ์ž์‹์ด ๊ทธ ๋‹ค์Œ์œผ๋กœ ๊ทธ๋ ค์ง„๋‹ค. ๋‘ UI ์š”์†Œ๊ฐ€ ๊ฒน์ณ์ง€๋ฉด ๋‚˜์ค‘์— ๊ทธ๋ ค์ง€๋Š” ๊ฒƒ์ด ๋จผ์ € ๊ทธ๋ ค์ง„ ๊ฒƒ์˜ ์œ„์— ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋œ๋‹ค. ์–ด๋–ค ์š”์†Œ๊ฐ€ ๋‹ค๋ฅธ ์š”์†Œ์˜ ์œ„์— ๊ฒน์ณ์ง€๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์œผ๋ฉด ๊ฐ„๋‹จํžˆ ๋“œ๋ž˜๊ทธํ•˜์—ฌ ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ์š”์†Œ์˜ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค. ์ด ์ˆœ์„œ๋Š” Transform ์ปดํฌ๋„ŒํŠธ์—์„œ SetAsFirstSibling, SetAsLastSibling, SetSiblingIndex ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํฌ๋ฆฝํŒ…์„ ํ†ตํ•ด ์ œ์–ดํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

๋ Œ๋” ๋ชจ๋“œ(Render Mode)

  • ์Šคํฌ๋ฆฐ ๊ณต๊ฐ„ - ์˜ค๋ฒ„๋ ˆ์ด(Screen Space - Overlay): ์ด ๋ Œ๋” ๋ชจ๋“œ์—์„œ๋Š” UI ์š”์†Œ๊ฐ€ ํ™”๋ฉด์—์„œ ์”ฌ์˜ ์œ„์— ๋ Œ๋”๋ง๋œ๋‹ค. ์Šคํฌ๋ฆฐ์˜ ํฌ๊ธฐ๊ฐ€ ์กฐ์ ˆ๋˜๊ฑฐ๋‚˜ ํ•ด์ƒ๋„๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์บ”๋ฒ„์Šค๋Š” ์—ฌ๊ธฐ์— ๋งž์ถฐ ์ž๋™์œผ๋กœ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.

  • ์Šคํฌ๋ฆฐ ๊ณต๊ฐ„ - ์นด๋ฉ”๋ผ(Screen Space - Camera): ์ด๋Š” ํ™”๋ฉด ๊ณต๊ฐ„ - ์˜ค๋ฒ„๋ ˆ์ด์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ด ๋ Œ๋”๋ง ๋ชจ๋“œ์—์„œ ์บ”๋ฒ„์Šค๋Š” ์ง€์ •๋œ ์นด๋ฉ”๋ผ ์•ž์— ์ง€์ •๋œ ๊ฑฐ๋ฆฌ์— ๋ฐฐ์น˜๋œ๋‹ค. UI ์š”์†Œ๋Š” ์ด ์นด๋ฉ”๋ผ์— ์˜ํ•ด ๋ Œ๋”๋ง๋œ๋‹ค. ์ฆ‰, ์นด๋ฉ”๋ผ ์„ค์ •์ด UI ๋ชจ์–‘์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ์นด๋ฉ”๋ผ๊ฐ€ ์›๊ทผ์œผ๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ UI ์š”์†Œ๋Š” ์›๊ทผ๊ฐ์œผ๋กœ ๋ Œ๋”๋ง๋˜๋ฉฐ ์›๊ทผ ์™œ๊ณก์˜ ์–‘์€ ์นด๋ฉ”๋ผ ์‹œ์•ผ๊ฐ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค. ํ™”๋ฉด ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜๊ฑฐ๋‚˜ ํ•ด์ƒ๋„๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ์นด๋ฉ”๋ผ ํ”„๋Ÿฌ์ŠคํŠธ๋Ÿผ์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์บ”๋ฒ„์Šค๋„ ํฌ๊ธฐ์— ๋งž๊ฒŒ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.

-์›”๋“œ ๊ณต๊ฐ„(World Space): ์ด ๋ Œ๋” ๋ชจ๋“œ์—์„œ๋Š” ์บ”๋ฒ„์Šค๋Š” ์”ฌ์— ์žˆ๋Š” ๋‹ค๋ฅธ ์˜ค๋ธŒ์ ํŠธ์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค. ์บ”๋ฒ„์Šค์˜ ํฌ๊ธฐ๋Š” ์‚ฌ๊ฐ ํŠธ๋žœ์Šคํผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ UI ์š”์†Œ๋Š” 3D ๋ฐฐ์น˜์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์”ฌ์˜ ๋‹ค๋ฅธ ์˜ค๋ธŒ์ ํŠธ์˜ ์•ž ๋˜๋Š” ๋’ค์— ๋ Œ๋”๋ง๋œ๋‹ค. ์ด ๋ฐฉ์‹์€ ์›”๋“œ์˜ ์ผ๋ถ€๋ฅผ ์ด๋ฃจ๋„๋ก ์˜๋„๋œ UI์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ โ€œ์„œ์‚ฌ์  ์ธํ„ฐํŽ˜์ด์Šคโ€๋ผ๊ณ ๋„ ํ•œ๋‹ค.

์ผ„๋ฒ„์Šค ์Šค์ผ€์ผ๋Ÿฌ

์บ”๋ฒ„์Šค ์Šค์ผ€์ผ๋Ÿฌ(Canvas Scaler) ์ปดํฌ๋„ŒํŠธ๋Š” ์บ”๋ฒ„์Šค ๋‚ด UI ์š”์†Œ์˜ ์ „์ฒด์ ์ธ ์Šค์ผ€์ผ๊ณผ ํ”ฝ์…€ ๋ฐ€๋„๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์Šค์ผ€์ผ์€ ๊ธ€๊ผด ํฌ๊ธฐ์™€ ์ด๋ฏธ์ง€ ๊ฒฝ๊ณ„ ๋“ฑ ์บ”๋ฒ„์Šค ์•„๋ž˜์˜ ๋ชจ๋“  ์š”์†Œ์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.
  • UI Scale Mode: ์บ”๋ฒ„์Šค์—์„œ UI ์š”์†Œ๊ฐ€ ์Šค์ผ€์ผ๋˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•œ๋‹ค.
    • Constant Pixel Size: UI ์š”์†Œ๊ฐ€ ํ™”๋ฉด ํฌ๊ธฐ์— ๊ด€๊ณ„์—†์ด ๋™์ผํ•œ ํ”ฝ์…€ ํฌ๊ธฐ๋กœ ์œ ์ง€๋œ๋‹ค.(UI ์š”์†Œ์˜ ํฌ์ง€์…˜๊ณผ ํฌ๊ธฐ๊ฐ€ ํ™”๋ฉด์—์„œ ํ”ฝ์…€๋กœ ์ง€์ •ํ•˜์—ฌ ์ผ์ •ํ•œ ์Šค์ผ€์ผ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.)
    • Scale With Screen Size: ํ™”๋ฉด์ด ์ปค์งˆ์ˆ˜๋ก UI ์š”์†Œ๋„ ์ปค์ง„๋‹ค.(๋ ˆํผ๋Ÿฐ์Šค ํ•ด์ƒ๋„์˜ ํ”ฝ์…€ ์ˆ˜์— ๋”ฐ๋ผ ํฌ์ง€์…˜๊ณผ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.)
    • Constant Physical Size: ํ™”๋ฉด ํฌ๊ธฐ์™€ ํ•ด์ƒ๋„์— ๊ด€๊ณ„์—†์ด UI ์š”์†Œ๊ฐ€ ๋™์ผํ•œ ๋ฌผ๋ฆฌ์ ์ธ ํฌ๊ธฐ๋กœ ์œ ์ง€๋œ๋‹ค.(DPI ๋ณด๊ณ  ํ•„์ˆ˜, ๋ณด๊ณ ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ fallback DPI๋ฅผ ์‚ฌ์šฉ)

๊ทธ๋ž˜ํ”ฝ ๋ ˆ์ด์บ์Šคํ„ฐ(Graphic Raycaster)

๊ทธ๋ž˜ํ”ฝ์Šค ๋ ˆ์ด์บ์Šคํ„ฐ๋Š” ์บ”๋ฒ„์Šค์— ๋ ˆ์ด์บ์ŠคํŠธ๋ฅผ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค. ๋ ˆ์ด์บ์Šคํ„ฐ๋Š” ์บ”๋ฒ„์Šค์˜ ๋ชจ๋“  ๊ทธ๋ž˜ํ”ฝ์Šค๋ฅผ ๊ฐ์‹œํ•˜์—ฌ ๊ทธ ์ค‘ ํ•˜๋‚˜์— ์ถฉ๋Œํ•˜์˜€๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ๊ทธ๋ž˜ํ”ฝ ๋ ˆ์ด์บ์Šคํ„ฐ๋ฅผ ์„ค์ •ํ•˜์—ฌ ํ›„๋ฉด ๊ทธ๋ž˜ํ”ฝ์Šค๋ฅผ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ๊ทธ ์•ž์— ์žˆ๋Š” 2D ๋˜๋Š” 3D ์˜ค๋ธŒ์ ํŠธ์— ์˜ํ•ด ๊ฐ€๋ ค์ง€๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ์š”์†Œ์˜ ์ฒ˜๋ฆฌ ์ˆœ์„œ๋ฅผ ๋ ˆ์ด์บ์ŠคํŒ…์˜ ์•ž์ด๋‚˜ ๋’ค๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ, ์ˆ˜๋™์œผ๋กœ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

19 ์˜ค์„ฑํ˜

[์ฐธ๊ณ ]