공부/Unity

24.05.29

월러비 2024. 6. 10. 16:36

예비군으로 수업 못들음

이론

  • 스택의 길이는 추가와 제거로 바뀔 수 있지만 추가된 저장 공간의 크기는 ‘절대’ 바뀔 수 없다.
  • Null : 그냥 키워드 일뿐 ‘자료형이 아니다.’ ⇒ Value 타입은 값이 있는 상태이기 때문에 ‘없다’라는 말이 들어올 수 없다. ⇒ Nullable을 붙이면 가능해진다. (다만, Value 타입이 Reference 타입으로 바뀐다.)
  • 저장된 공간의 크기는 바꿀 수 없지만, Null로 초기화를 한 다음 새로운 저장을 하는것은 가능하다.

Enemy - FireBall FixedUpdate 정리

  1. 공격 받는 중이면 감지도, 워프도, 공격도 하지 않는다.
  2. 플레이어를 감지했는지 확인한다.
    1. 플레이어가 감지되지 않았다면 아무것도 실행하지 않는다. (대기상태)
    2. 플레이어를 감지했다면 워프든 공격이든 실행해라
  3. 플레이어와의 거리를 확인해서 감지영역 안에는 들어왔고 회피 영역보다 밖에 있다면 ⇒ 공격해라
    1. 감지 영역에 들어온 플레이어를 계속 바라본다.
    2. WaitMode가 아닌 경우 ⇒ 장착 중일 경우, 공격 중일 경우, 피격 중일 경우
      1. 워프든 공격이든 실행하지 않는다.
    3. 파이어볼 보드가 아닌 경우
      1. 워프를 실행하지 않았으니 워프 쿨타임 초기화
      2. 파이어볼을 장착한다.
    4. 파이어볼을 장착했을 경우
      1. 파이어볼 발사한다.
  4. 회피 영역에 들어왔다면
    1. 파이어볼을 장착한 경우일때
      1. 상태 대기 상태가 아니고 공격중일 경우
        1. 공격을 캔슬시킨다. (공격을 중지하고 도망가야하기 때문이다)
    2. 상태 대기 상태가 아닐 경우 ⇒ 장착중이거나, 액션 중일 것이다.
      1. 실행하지 않는다.
    3. 워프를 장착하지 않았다면
      1. 워프를 장착한다.
    4. 워프를 장착했다면
      1. 플레이어의 위치를 받아서 워프를 실행해라
  5. 워프를 실행할때 플레이어의 위치를 받는다.
  6. 워프 회피를 할 위치를 지정한다. - 플레이어의 위치를 받아 플레이어의 위치를 기준으로 워프한다.

UGUI

  • 히에라르키 창에 배치된 오브젝트의 순서는 랜더링 되는 순서다.
  • Canvas - Panel - RawImage 순서로 배치하면 패널 메뉴가 먼저 출력되고 배경화면이 출력되기에 순서를 바꿔줘야한다.
    • Canvas - RawImage - Panel 순서로 배치해야한다.

Canvas

  • 실제 게임 화면에 1 : 1 비율로 생성되는 화면
    • 캔버스 위에 여러장의 캔버스를 생성할 수 있다.
    • 하지만, EventSystem은 하나로 동작한다. → EventSystem에서 이벤트를 받아 캔버스 위에 배치한 UI로 전달한다.
  • Canvas → EventSystem : 캔버스에서 버튼같은 객체를 상호작용하여 이벤트가 발생하면 EventSystem으로 이벤트가 발생한것을 알린다.
  • EventSystem → Canvas : 발생한 이벤트에 대한 처리를 캔버스 위에 콜해준다.

Rect Transform (컴포넌트)

  • Anchors : 캔버스의 시작 위치를 어느 지점에서 시작할지 고르는 속성이다.
  • Pivot (중심점) : 처음부터 끝까지를 0 ~ 1로 놓았을때 0.5를 한다면 한 줄의 가운데를 의미한다.

Canvas (컴포넌트)

  • Render Mode
    • Screen Space (화면공간) - Overlay : 화면공간위에 겹쳐서 그린다는 속성이다.
    • Screen Space (화면공간) - Camera : 화면공간위에 카메라 공간에 그린다는 속성이다.
    • World Space : 3D UI를 사용할때 그리는 속성이다.
      • ex. 3D 화면상에서 계속 정면만 보이게 하는 UI가 아니라, 볼 때 틀어지게 만들때 사용하는 속성이다.
  • Sort Order : 숫자가 낮을 수록 가장 앞에 출력되는 캔버스 순서를 의미하는 속성이다.

Camera

  • Target Display : UI 디자인할때 디스플레이를 여러개 놓는데(게임화면 탭 아래에 매뉴바에 있다), 게임화면에 랜더링(화면출력)을 어느 디스플레이에 할지 정하는 속성이다.
    • 카메라를 여러개 두고 디스플레이 랜더링을 여러개하여 시점을 다르게 할때 사용한다.
    • 주로 관전 카메라를 만들때 사용한다.
    • 또는, 시네마틱 연출(문을 열떄 극적인 연출을 할떄)에 사용한다.

EventSystem

  • Event System (컴포넌트) - First Selected : 게임오브젝트를 이곳에 넣으면 게임을 실행할때 자동으로 선택되있는 속성이다.
    • ex. 웹에서 창을 열때 검색창이 먼저 선택되어 깜빡이는 것 같은 효과를 준다.
  • Send Navigation Events : 태그된 객체로 이동을 시킬것이냐를 허용하는 속성
    • ex. tab키를 눌렀을때 선택된 객체가 바뀌는 것을 허용할 것이냐를 묻는 속성이다.
  • Drag Threshold : 드래그 간격(Delay) / 10이라면 1000분의 10초마다 드래그 된다는 것이다.

Standalone Input Module (컴포넌트)

  • Submit / Cancel Button : 버튼 이름을 무엇으로 할거냐를 작성하는 속성이다.
  • Repeat Delay : 누르고 있을때 몇초마다 콜 될것이냐를 정하는 속성이다.

Canvas에 UI 올리기

  1. 다른 오브젝트를 자기 위에 올리는 UI
  2. 입력만 받는 UI
  • 다른 오브젝트를 그룹으로 묶을때 사용하는 오브젝트 : Panel (패널)

UI를 디자인하는 순서

  1. Canvas를 생성한다.
  2. 그 위에 Panel을 생성한다.
  3. 그 위에 ‘컨트롤’들을 올린다.
  • 우리는 전문적인 디자이너가 아니기 때문에 편의상으로 배치한다,.
  • 일단 앵커를 먼저 잡은 다음에 수치로 조절한다. (앵커 클릭으로 조절해도 좋다)

Panel

  • UI 작업은 손 도구(씬 화면 왼쪽에 위치조정하고 회전하는 도구) 중에서 ‘Rect Tool’(객체 크기 조절 도구)를 주로 사용한다.
  • 눌렀을때 4개의 꼭짓점에 ‘청색 동그라미’와 ‘흰색 삼각형’ 도형이 그려져있다.
    • 청색 동그라미 : 객체의 실제 크기 조절하는 점 ⇒ 게임 화면과 1 : 1 사이즈다.
      • Alt 키를 누르고 조정하면 중심점을 기준으로 4 꼭짓점이 다 같이 조절된다.
    • 흰색 삼각형 : 화면을 출력하는 화면영역 앵커의 크기를 조절하는 점 ⇒ 게임 실행시 출력화면 옆에 검은 배경이 앵커 영역이다. (화면 출력 영역은 청색 동그라미다)
  • Anchor
    • 빨간선 : 고정
    • 파란선 : 가변
    • 화면 크기를 조정할때 앵커를 기준으로 화면의 크기가 변한다.
      • 우 하단 꼭짓점을 기준으로 한다면 화면을 줄였을때 우 하단 꼭짓점을 기준으로 화면의 출력되는 크기가 변한다.

Image (컴포넌트)

  • image Type
    • Simple : 한장으로 출력
    • Sliced : 포토샵 같이 가져온 이미지가 조각나있을때 조각난 이미지를 사용할때 쓴다.
      • 사용 이유 : 위 아래에만 무늬가 있고 가운데는 실선일 경우 위 아래는 고정시키고 가운데 부분을 늘려서 그림의 크기를 늘릴때 사용한다.
    • Tile : 반복
    • Filled : 꽉 채움

RawImage

  • 이미지 자채를 출력하는 오브젝트다.
  • 주로 ‘배경화면’을 띄울 때 사용한다.
  • 게임화면에 알맞게 채우고 싶다면 캔버스의 크기를 확인한다.
    • 캔버스의 크기 = 로우 이미지 크기다.

RawImage (컴포넌트)

  • SetNative Size : 실제 그림 크기로 출력한다.

Button

  • 버튼 오브젝트

Button (컴포넌트)

  • Interactable : 클릭 활성화 여부 확인 체크박스
  • Transition
    • Color Tint : 버튼 상호작용시 색상으로 보여줄 때 사용한다.
    • Sprite Swap : 버튼 상호작용시 이미지로 보여줄 때 사용한다. (디자이너가 주로 사용한다.)
    • Animation : 버튼 상호작용시 애니메이션으로 보여줄 때 사용한다.
  • Nomal Color : 기본 색상
  • Hightlighted Color : 커서를 버튼에 올렸을때 색상
  • Pressed Color : 버튼 눌렀을때 색상
  • Selected Color : 버튼이 선택됬을때 색상
  • Disabled Color : 비활성화 됬을때 색상
  • Color Multiplier : 얼마만큼 버튼에 색상을 곱할지 비율을 결정하는 슬라이드 바
  • Fade Duration : 버튼이 상호작용되어 색상이 바뀌는 시간 (숫자가 클수록 바뀌는 시간이 오래 걸린다)

간단한 포토샵 웹 (포토피아)

  • 새 프로젝트
  • 너비 : 32 / 높이 : 32
  • DPI : 72 (기본적으로 72를 많이 사용한다) / 픽셀 - Inch ⇒ 1inch당 72 DPI를 사용한다는 의미이다.
  • 왼쪽 도구 중 색상 선택기 클릭
    • 255, 0, 0
  • 오른쪽 도구 중 레이어 선택
    • Background 더블클릭 - 확인
    • 자물쇠 클릭하여 해제
    • 우클릭 - 혼합 옵션 - 불투명도 60% ⇒ 배경이 반투명하게 보이게 된다.
  • 파일 - 내보내기 형식 : PNG - UI_BG(파일 이름) - 품질 100 - 저장

틴트 컬러

  • 지금까지 Color의 색을 바꾸는 것을 전부 ‘흰색’에서 ‘지정한 색’을 곱하여 나온 색을 보여주는 것이었다.
  • 이런식으로 나오는 색을 ‘틴트 컬러’라고 한다.
  • 주로, ‘조준선’에서 사용한다.
    • 기본적으로 흰색이었다가 적에게 조준하면 빨간색으로 변하도록 하는것처럼 사용한다.

'공부 > Unity' 카테고리의 다른 글

24.05.31  (1) 2024.06.10
24.05.30  (0) 2024.06.10
24.05.27  (0) 2024.06.09
24.05.24  (0) 2024.06.09
24.05.23  (0) 2024.06.09