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 ์ค๋ธ์ ํธ์ ์ํด ๊ฐ๋ ค์ง๋๋ก ์ค์ ํ ์ ์๋ค. ์ด ์์์ ์ฒ๋ฆฌ ์์๋ฅผ ๋ ์ด์บ์คํ
์ ์์ด๋ ๋ค๋ก ๋ณ๊ฒฝํ๊ณ ์ถ์ ๊ฒฝ์ฐ, ์๋์ผ๋ก ์ฐ์ ์์๋ฅผ ์ง์ ํ ์๋ ์๋ค.