[Memo-Unity] 23. Ui κ°•μ˜ 1~2

μ—…λ°μ΄νŠΈ:

μΉ΄ν…Œκ³ λ¦¬:

νƒœκ·Έ: ,


Ui

Ui

UI








UIκ°•μ˜

ν”Œλ ˆμ΄μ–΄κ°€ κ²Œμž„μ„ ν•  λ•Œ μ›ν™œν•˜κ²Œ ν”Œλ ˆμ΄ ν•  수 μžˆλ„λ‘ μ„€κ³„ν•˜λŠ” 것
κ²Œμž„UI : λͺ°μž…μ„± , 상황을 λΉ λ₯΄κ²Œ 이해, 화면쀑앙에 μ§‘μ€‘λ˜κ²Œ μ‹¬ν”Œν•œ λ””μžμΈ

UI 체크사항

  • κ²Œμž„μ„ 이해할 수 μžˆλ„λ‘ λ””μžμΈ
  • μ μ ˆν•œ 방법, λͺ…ν™•ν•œ μ•ˆλ‚΄
  • κ°€μ΄λ“œ, νŠœν† λ¦¬μ–Ό μ΄ν•΄μ‰½κ²Œ, κ±΄λ„ˆλ›°κΈ°
  • μ‹œκ°νš¨κ³Όλ₯Ό μ‚¬μš©ν•΄ 보상, 인앱 ꡬ맀 λˆˆμ— λ„κ²Œ
  • UIλŠ” λ‹¨μˆœν•˜κ²Œ 볡작X
  • 계측ꡬ쑰, μ€‘μš”λΆ€λΆ„ ν‘œμ‹œ λͺ…ν™•ν•œ μ•ˆλ‚΄
  • μ‚¬μ΄λ“œλ°” 제곡, 곡간 ν™•μž₯
  • λ°˜μ‘ν˜• UI



Mesh

μž‘λ™μ›λ¦¬
image

image



DrawCall

계속 λ³€ν•˜λŠ” UIλŠ” 맀번 CPUμ—μ„œ μ—°μ‚° ν›„ GPU둜 λ„˜κΈ°λŠ” ꡬ쑰
DRAWCALL = 화면에 그렀쀘~

image

UGUI

  • Grapgics.cs : κ·Έλž˜ν”½μ  μš”μ†Œλ₯Ό 가지고 μžˆλŠ” 클래슀(Image λ“±) 관리
  • Canvas.cpp : κ·Έλž˜ν”½μ  μš”μ†Œλ₯Ό 가지고 μžˆλŠ” 것을 ν•˜λ‚˜μ˜ λ²„νΌλ‘œ λ§Œλ“€μ–΄μ„œ GPU에 ν• λ‹Ή
    Canvas ν•˜μœ„μ— UIμš”μ†Œκ°€ κ°±μ‹ λ˜λ©΄ 전체 Canvasλ₯Ό κ°±μ‹ ν•΄μ•Ό 함




Canvas

ui μƒμ„±μ‹œ Canvas μžλ™μƒμ„±
Canvas(도화지) 3Dμ’Œν‘œμƒμ˜ μœ„μΉ˜κ°€ μ•„λ‹Œ μœ μ €μ—κ²Œ λ³΄μ—¬μ§€λŠ” μŠ€ν¬λ¦°μ— λŒ€μ‘ν•˜λŠ”

image


Rect TransForm

TransForm을 상속받은(λΆˆλ³€) (RENDER MODE - WORLD λ©΄ μˆ˜μ •κ°€λŠ₯)

Anchors

UI Elemnet 원점을 μ„ΈνŒ…ν•˜λŠ” κΈ°μ€€

image

액컀값 κΈ°μ€€μœΌλ‘œ pos x ,y κ°€ 정해진닀.
image

액컀 min,max λ‹€λ₯Ό λ•Œ
image

Pivot

UI Elemnet λ‚΄λΆ€ 기쀀점을 μ„ΈνŒ…ν•˜λŠ” κΈ°μ€€

image
image



CanvasScale

Render Mode

overlay -> μΊ”λ²„μŠ€κ°€ λͺ¨λ“  μ˜€λΈŒμ νŠΈλ³΄λ‹€ μ•žμ— 그렀진닀 Cmara : 카메라 μ‹œμ μœΌλ‘œ μΊ”λ²„μŠ€κ°€ 보일 수 μžˆλ‹€. world : 였브젝트처럼 배치

Canvas Scaler(λ°˜μ‘ν˜•μœΌλ‘œ)

Scale Mode : Scale With Screen Size
Reference Resolution 1920 1080

Screen Math Mode

Match Width Or Height : 해상도 λ³€ν™” μ‹œ 넓이 λ˜λŠ” 높이λ₯Ό λ³€κ²½x Expand : Reference Resolution 보닀 μž‘κ²Œ μ•ˆλ§Œλ“ λ‹€.






UIκ°•μ˜ 2회차 12/26

UGUI - Event System

canvas의 Graphic Raycaster μ»΄ν¬λ„ŒνŠΈκ°€ UI μš”μ†Œμ—μ„œ κ΄‘μ„ μœΌλ‘œ ν„°μΉ˜ λ“±μ˜ 이벀트λ₯Ό μ•Œλ¦Ό
EventSystem은 μ–΄λ–€ μ΄λ²€νŠΈμΈμ§€λ₯Ό UI μš”μ†Œμ—κ²Œ κ΄‘μ„ μœΌλ‘œ μ•Œλ €μ£Όμ–΄μ„œ λ°˜μ‘ν•˜κ²Œ 함
image

μ‚¬μš©ν•  UIλ“€ ν”„λ¦¬νŒΉμœΌλ‘œ λ§Œλ“€μ–΄μ„œ μ‚¬μš©
image






TMP

TMPμ„€μ •
image

material λ§Œλ“€κ³  μ μš©ν•˜κΈ° Material preset -> outline Red
image






DynamicUI

Layout

Vertical Layout Group
image

ν”„λ‘œνΌν‹° κΈ°λŠ₯
Padding λ ˆμ΄μ•„μ›ƒ κ·Έλ£Ή μ—μ§€μ˜ νŒ¨λ”©μž…λ‹ˆλ‹€.
Spacing λ ˆμ΄μ•„μ›ƒ μš”μ†Œ κ°„μ˜ κ°„κ²©μž…λ‹ˆλ‹€.
Child Alignment μ‚¬μš© κ°€λŠ₯ν•œ 곡간을 λͺ¨λ‘ μ±„μš°μ§€ μ•Šμ„ 경우 μžμ‹ λ ˆμ΄μ•„μ›ƒ μš”μ†Œμ— μ‚¬μš©ν•  μ–ΌλΌμΈλ¨ΌνŠΈμž…λ‹ˆλ‹€.
Child Controls Size λ ˆμ΄μ•„μ›ƒ 그룹이 μžμ‹μ˜ λ„ˆλΉ„μ™€ 높이λ₯Ό μ œμ–΄ν• μ§€ μ—¬λΆ€μž…λ‹ˆλ‹€.
Child Force Expand μΆ”κ°€λ‘œ μ‚¬μš©ν•  수 μžˆλŠ” 곡간을 μ±„μš°κΈ° μœ„ν•΄ μžμ‹ λ ˆμ΄μ•„μ›ƒμ„ κ°•μ œλ‘œ ν™•μž₯할지 μ—¬λΆ€μž…λ‹ˆλ‹€.



Horizomtal Layout Group
image

ν”„λ‘œνΌν‹° κΈ°λŠ₯
Padding λ ˆμ΄μ•„μ›ƒ κ·Έλ£Ή μ—μ§€μ˜ νŒ¨λ”©μž…λ‹ˆλ‹€.
Spacing λ ˆμ΄μ•„μ›ƒ μš”μ†Œ κ°„μ˜ κ°„κ²©μž…λ‹ˆλ‹€.
Child Alignment μ‚¬μš© κ°€λŠ₯ν•œ 곡간을 λͺ¨λ‘ μ±„μš°μ§€ μ•Šμ„ 경우 μžμ‹ λ ˆμ΄μ•„μ›ƒ μš”μ†Œμ— μ‚¬μš©ν•  μ–ΌλΌμΈλ¨ΌνŠΈμž…λ‹ˆλ‹€.
Control Child Size λ ˆμ΄μ•„μ›ƒ 그룹이 μžμ‹ λ ˆμ΄μ•„μ›ƒ μš”μ†Œμ˜ λ„ˆλΉ„μ™€ 높이λ₯Ό μ œμ–΄ν• μ§€ μ—¬λΆ€λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€.
Use Child Scale μš”μ†Œμ˜ 크기λ₯Ό μ§€μ •ν•˜κ±°λ‚˜ μš”μ†Œλ₯Ό λ°°μΉ˜ν•  λ•Œ λ ˆμ΄μ•„μ›ƒ 그룹이 ν•΄λ‹Ή μžμ‹ λ ˆμ΄μ•„μ›ƒ μš”μ†Œμ˜ μŠ€μΌ€μΌμ„ 고렀할지 μ—¬λΆ€λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€. Width 및 HeightλŠ” 각 μžμ‹ λ ˆμ΄μ•„μ›ƒ μš”μ†Œμ˜ Rect Transform μ»΄ν¬λ„ŒνŠΈμ— μžˆλŠ” Scale > X 및 Scale > Y 값에 ν•΄λ‹Ήν•©λ‹ˆλ‹€.
Child Force Expand μΆ”κ°€λ‘œ μ‚¬μš©ν•  수 μžˆλŠ” 곡간을 μ±„μš°κΈ° μœ„ν•΄ μžμ‹ λ ˆμ΄μ•„μ›ƒ μš”μ†Œλ₯Ό κ°•μ œλ‘œ ν™•μž₯할지 μ—¬λΆ€λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€.



Grid Layout Group
image

ν”„λ‘œνΌν‹° κΈ°λŠ₯
Padding λ ˆμ΄μ•„μ›ƒ κ·Έλ£Ή μ—μ§€μ˜ νŒ¨λ”©μž…λ‹ˆλ‹€.
Cell Size 그룹의 각 λ ˆμ΄μ•„μ›ƒ μš”μ†Œκ°€ μ‚¬μš©ν•  ν¬κΈ°μž…λ‹ˆλ‹€.
Spacing λ ˆμ΄μ•„μ›ƒ μš”μ†Œ κ°„μ˜ κ°„κ²©μž…λ‹ˆλ‹€.
Start Corner 첫 μš”μ†Œκ°€ μœ„μΉ˜ν•˜λŠ” μ½”λ„ˆμž…λ‹ˆλ‹€.
Start Axis μš”μ†Œλ₯Ό 따라 λ°°μΉ˜ν•  주좕을 μ§€μ •ν•©λ‹ˆλ‹€. μˆ˜ν‰μΆ•μœΌλ‘œ ν•˜λ©΄ μƒˆ 행을 μ‹œμž‘ν•˜κΈ° 이전 행을 μ „λΆ€ μ±„μ›λ‹ˆλ‹€. μˆ˜μ§μΆ•μœΌλ‘œ ν•˜λ©΄ μƒˆ 열을 μ‹œμž‘ν•˜κΈ° 이전 열을 μ „λΆ€ μ±„μ›λ‹ˆλ‹€.
Child Alignment λ ˆμ΄μ•„μ›ƒ μš”μ†Œκ°€ μ‚¬μš© κ°€λŠ₯ν•œ 곡간을 μ „λΆ€ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 경우, μ‚¬μš©ν•  얼라인먼 λ°©μ‹μž…λ‹ˆλ‹€.
Constraint μžλ™ λ ˆμ΄μ•„μ›ƒ μ‹œμŠ€ν…œμ„ μ§€μ›ν•˜κΈ° μœ„ν•΄ 격자 무늬의 ν–‰λ ¬ 수λ₯Ό μ œν•œν•©λ‹ˆλ‹€.



Size Fillter

Content Size Fillter
image

Horizontal Fit λ„ˆλΉ„ μ œμ–΄ λ°©λ²•μž…λ‹ˆλ‹€.
Vertical Fit 높이 μ œμ–΄ λ°©λ²•μž…λ‹ˆλ‹€.

ν”„λ‘œνΌν‹° κΈ°λŠ₯
Unconstrained λ ˆμ΄μ•„μ›ƒ μš”μ†Œμ— κΈ°λ°˜ν•˜μ—¬ λ„ˆλΉ„λ₯Ό μ‘°μ •ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
Min Size λ ˆμ΄μ•„μ›ƒ μš”μ†Œμ˜ μ΅œμ†Œ λ„ˆλΉ„μ— κΈ°λ°˜ν•˜μ—¬ λ„ˆλΉ„λ₯Ό μ‘°μ •ν•©λ‹ˆλ‹€.
Preferred Size λ ˆμ΄μ•„μ›ƒ μš”μ†Œμ˜ κΈ°λ³Έ λ„ˆλΉ„μ— κΈ°λ°˜ν•˜μ—¬ λ„ˆλΉ„λ₯Ό μ‘°μ •ν•©λ‹ˆλ‹€.



Layout Element
image
Layout Element 체크 -> transform λ‹€μ‹œμ§€μ •

ν”„λ‘œνΌν‹° κΈ°λŠ₯
Ignore Layout ν™œμ„±ν™”ν•˜λ©΄ λ ˆμ΄μ•„μ›ƒ μ‹œμŠ€ν…œμ΄ 이 λ ˆμ΄μ•„μ›ƒ μš”μ†Œλ₯Ό λ¬΄μ‹œν•©λ‹ˆλ‹€.
Min Width 이 λ ˆμ΄μ•„μ›ƒ μš”μ†Œμ˜ μ΅œμ†Œ λ„ˆλΉ„μž…λ‹ˆλ‹€.
Min Height 이 λ ˆμ΄μ•„μ›ƒ μš”μ†Œμ˜ μ΅œμ†Œ λ†’μ΄μž…λ‹ˆλ‹€.
Preferred Width μΆ”κ°€ κ°€μš© λ„ˆλΉ„κ°€ ν• λ‹Ήλ˜κΈ° 전에 이 λ ˆμ΄μ•„μ›ƒ μš”μ†Œμ˜ μ„ ν˜Έ λ„ˆλΉ„μž…λ‹ˆλ‹€.
Preferred Height μΆ”κ°€ κ°€μš© 높이가 ν• λ‹Ήλ˜κΈ° 전에 이 λ ˆμ΄μ•„μ›ƒ μš”μ†Œμ˜ μ„ ν˜Έ λ†’μ΄μž…λ‹ˆλ‹€.
Flexible Width λ ˆμ΄μ•„μ›ƒ μš”μ†Œκ°€ ν˜•μ œ λ ˆμ΄μ•„μ›ƒμ— μƒλŒ€μ μœΌλ‘œ μ±„μ›Œμ•Ό ν•˜λŠ” (μΆ”κ°€ μ‚¬μš© κ°€λŠ₯ν•œ)λ„ˆλΉ„μ˜ μƒλŒ€μ  ν¬κΈ°μž…λ‹ˆλ‹€.
Flexible Height λ ˆμ΄μ•„μ›ƒ μš”μ†Œκ°€ ν˜•μ œ λ ˆμ΄μ•„μ›ƒμ— μƒλŒ€μ μœΌλ‘œ μ±„μ›Œμ•Ό ν•˜λŠ” (μΆ”κ°€ μ‚¬μš© κ°€λŠ₯ν•œ)λ†’μ΄μ˜ μƒλŒ€μ  ν¬κΈ°μž…λ‹ˆλ‹€.
Layout Priority 이 μ»΄ν¬λ„ŒνŠΈμ— λŒ€ν•œ λ ˆμ΄μ•„μ›ƒ μš°μ„  μˆœμœ„μž…λ‹ˆλ‹€.



Layout Priority
κ²Œμž„ μ˜€λΈŒμ νŠΈμ— λ ˆμ΄μ•„μ›ƒ ν”„λ‘œνΌν‹°κ°€ μžˆλŠ” μ»΄ν¬λ„ŒνŠΈκ°€ 두 개 이상(예: Image μ»΄ν¬λ„ŒνŠΈμ™€ LayoutElement| μ»΄ν¬λ„ŒνŠΈ) 있으면 λ ˆμ΄μ•„μ›ƒ μ‹œμŠ€ν…œμ€ Layout Priorityκ°€ κ°€μž₯ 높은 μ»΄ν¬λ„ŒνŠΈμ˜ ν”„λ‘œνΌν‹° 값을 μ‚¬μš©ν•©λ‹ˆλ‹€.
μ»΄ν¬λ„ŒνŠΈμ— λ™μΌν•œ Layout Priorityκ°€ 있으면 λ ˆμ΄μ•„μ›ƒ μ‹œμŠ€ν…œμ€ μ–΄λŠ μ»΄ν¬λ„ŒνŠΈμ—μ„œ μ™”λ“  상관없이 각 ν”„λ‘œνΌν‹°μ— λŒ€ν•œ κ°€μž₯ 높은 값을 μ‚¬μš©ν•©λ‹ˆλ‹€.






μž‘λ‹΄

UI μž˜λ‹€λ£¨κΈ°




[Unity] Ui TOP


πŸ“”

λŒ“κΈ€λ‚¨κΈ°κΈ°