카테고리 없음

모바일게임 노치(Notch) 처리, UI 정렬 , 물리 힘

rxo2 2025. 3. 7. 21:01

모바일 게임 UI에서 노치(Notch) 처리 방법

스마트폰마다 화면 디자인이 다르고, 특히 노치(Notch)나 펀치홀(Punch-Hole) 같은 요소가 UI를 가리는 경우가 많음.
따라서, 게임 UI가 노치 영역을 침범하지 않도록 적절히 배치하는 것이 중요.

Canvas 설정 변경 (UI 자동 조정)

Canvas → UI Scale Mode를 "Scale With Screen Size"로 설정

 

Canvas 설정:

  • Render Mode → Screen Space - Overlay
  • UI Scale Mode → Scale With Screen Size
  • Reference Resolution → 일반적인 해상도 (예: 1080x1920)

Anchor(앵커)를 조정하여 UI가 안전 영역 안에 위치하도록 설정

  • 상단 UI 요소(예: 체력바, 메뉴 버튼) → 하단 또는 측면으로 이동 가능하게 설정
  • SafeAreaHandler를 이용해 자동으로 UI 위치 조정

 

UI 이미지 정렬 

Horizontal Layout Group - 가로 정렬을 자동으로 해주는 레이아웃

Vertical Layout Group - 세로 정렬을 자동으로 해주는 레이아웃

 

  • UI → Panel을 생성하고 Horizontal(Vertical) Layout Group 컴포넌트 추가
  • Child Alignment → 정렬 방식 설정 (Middle Center 등)
  • Spacing → 아이템 간격 조정
  • Padding → 레이아웃 내부 여백 조정
  • Control Child Size → Width, Height 체크하면 크기 자동 조정

 

Grid Layout Group - 가로+세로 정렬

 

  • UI → Panel을 만들고 Grid Layout Group 추가
  • Cell Size → 한 칸의 크기 설정
  • Spacing → 칸과 칸 사이 간격
  • Start Axis → 채우는 방향 (Horizontal 또는 Vertical)
  • Constraint → 고정 행/열 개수 지정
    • Flexible (유동적 배치)
    • Fixed Column Count (고정 열 개수)
    • Fixed Row Count (고정 행 개수)

 

 

이벤트 트리거 컴포넌트를 활용하면 코드를 줄일수 있다

오늘 강의를 보며 문득 생각이 났다

왜 게임을 여러가지 해봐야하며 그게임에 어떠한 기능에 대해  분석과 생각을 해봐야한다는 말이 이해되었다

 

움직이는 물체에 리지드바디와 콜라이더, 정지한 물체에 콜라이더만 있을시 충돌할때 멈춘다

정지한 물체에 리지드바디와 콜라이더, 움직이는 물체에 콜라이더만 있을시 충돌할때 통과한다

 

AddForce는 Rigidbody에 힘을 가하는 함수이며, 힘을 가하는 방식은 ForceMode. 을 사용하여 조잘가능

<힘이 질량의 영향을 받음>

지속적인 힘을 가하기 (ForceMode.Force) 프레임마다 작은 힘을 지속적으로 가함 물체가 점점 가속됨 

순간적인 힘 가하기 (ForceMode.Impulse) 즉시 강한 힘을 가함,,  점프, 폭발 같은 효과에 사용,  질량이 클수록 덜 움직임

<힘이 질량의 영향을 받지않음>

질량 무시하고 가속도 적용 (ForceMode.Acceleration) 질량과 관계없이 동일한 효과

즉각적인 속도 변경 (ForceMode.VelocityChange) 질량과 관계없이 속도를 즉시 변경,  플레이어 대시, 순간적인 속도 변화에 유용

 

 

유니티 생명주기 함수 - 작동 순서

Reset > Awake > OnEnable > Start > Update > LateUpdate > OnDisable > OnDestroy

Awake 와 OnEnable 와 Start 가 여러 스크립트에 다중으로 있을시 Awake 와 OnEnable 가 먼저 다 실행된후 Start 가 실행된다. 또한 스크립트간의 순서는 나중에 추가된 스크립트가 먼저 작동된다.

a의  Awake, OnEnable 싸이클과

b의  Awake, OnEnable 싸이클이 있을때

b가 나중에 추가가 되었고

a의 Awake 에 있는정보를

b의 OnEnable 에 가져오려고 하였을때 가져오지 못한다 주의

 

예외적으로 FixedUpdate, Ontrigger , Oncollision 은 물리적인 업데이트 물리적인 계산을 처리할때 사용하는 이 3가지는 따로 계산식이 굴러가고 있다. 물리적인 버그를 감소시키기 위해 Update 에서 하지않고 FixedUpdate 사용.