오늘 학습 키워드

유니티 팀 프로젝트

오늘 학습 한 내용을 나만의 언어로 정리하기

유니티 팀플

자석 아이템용 Trigger Field 만들기

  • 일단 플레이어 밑에 빈 GameObject 생성
  • 그리고 Circle Collider를 붙임
  • IsTrigger 체크
  • 파티클 시스템으로 이펙트 보이기

  • 만든 방법 : Shape를 Circle로 하고, Velocity over Lifetime에서 Radial을 음수로 함

Input Action을 더 구체적으로 쓰기

  • 지금은 키가 눌렸을 때에만 반응하게 되어있는데, 우리 팀 요청 사항으로 누르고 있을 때 계속 작동되길 원하셨음
  • 따라서 Input Action을 좀 더 구체적으로 나눠서 쓰는 방법을 찾아봤음.
[SerializeField] private InputActionReference slideAction;
 
private void OnEnable()
{
    slideAction.action.performed += StartSliding;
    slideAction.action.canceled += StopSliding;
    slideAction.action.Enable();
}
 
private void OnDisable()
{
    slideAction.action.performed -= StartSliding;
    slideAction.action.canceled -= StopSliding;
    slideAction.action.Disable();
}
  • action.started : 처음 한 번 눌렸을 때

  • action.performed : 누르고 있을 때

  • action.canceled : 뗐을 때

  • 다만 Button으로 값을 받아오는 경우 performed가 started 이후 한 번만 불러지기 때문에, 다른 방법을 사용하기로 함

void Update()
{
    if (slideAction.action.IsPressed())
    {
        // 여기다가 입력
    }
}
  • IsPressed()를 통해 확인 가능함!

스탠다드 반 강의

  • 신입이 하는 일은 UI 제작일 것임.
  • UI 부분은 무조건 Canvas의 자식으로 두어야 함
  • 이벤트 시스템이 있어야 상호작용을 할 수 있다!
  • UI는 Transform 말고 Rect Transform을 가지고 있음.

Canvas Render Mode

  • Screen Space - Overlay : 무조건 UI가 맨 위로 올라옴.
  • Screen Space - Camera : 지정한 특정 카메라의 위에 필름이 붙은 것 처럼 작동
  • World Space : 월드 좌표로 바꿈

Canvas Scaler

  • UI를 만들면서 가장 중요한건 해상도 대응이다.
  • Constant Pixel Size : 화면 크기가 바뀌어도 크기가 바뀌지 않는 상태. (쓸 일이 없다!)
  • Scale With Screen Size : 특정 스크린 사이즈를 기준으로 맞춤.
    • Screen Match Mode
      • Match Width Or Height : 너비 우선 or 높이 우선. 보통 Match를 0.5로 둔다.
      • Expand : 레퍼런스가 캔버스가 작아지지 않도록. 가로에 맞춤
      • Shrink : 레퍼런스가 캔버스보다 커지지 않도록. 세로에 맞춤
  • 팀플 작업할때는 꼭 해상도 먼저 맞춰놓고 하기!!!!

Rect Transform

  • 일반적인 오브젝트는 Transform을 가지지만, UI는 Rect Transform을 가짐
  • Pivot : 중심점! 파란색 으로 보임. 0~1 사이의 값을 가짐.
  • Anchor : 기준점! 화살표 처럼 보임. 0~1 사이의 값을 가짐.
    • Anchor Full Stretch일 때, Left, Right 등등은 각 위치에서부터 멀어진 거리를 의미함

이미지

  • 이미지 색깔은 흰색 부분이 알아서 바뀌니까 UI팀한테 가능하면 흰색으로 달라고 해라
  • Raycast Target : 말 그대로 레이캐스트를 허용하냐 아니냐
  • Image Type
    • Sliced : 스프라이트의 border를 설정하면 자연스럽게 늘어남. boarder 내부만 늘어남
    • Tiled : 늘어나면 타일맵처럼 알아서 채워지면서 늘어남
    • Filled : 채워지는걸 표현할 수 있음. (horizontal : 체력바, Radial 360 : 쿨타임 등등)
  • Pixel Per Unit : 1 유닛 당 들어가는 픽셀의 갯수.(ex. 256 가로 256 픽셀, 세로 256픽셀 들어감)

Scroll View

  • Scroll Rect
    • Movement Type
      • Unrestricted : 무한 스크롤링
      • Elastic : 부드러움
      • Clamped : 딱딱 떨어짐
  • Vertical Layout Group
    • 이거 넣으면 그 밑에 있는 아이템들 직접 조정하려하지 마셈 오류남
    • Control Child Size : 밑에 있는 아이템들 크기 알아서 조절하도록
  • Layout Element
    • Ignore Layout : 오와 열 사이에 빠질 수 있음

Layer / Sorting Layer

  • Layer는 오브젝트 처리용. 나중에 Project Settings에 Physics에 가면 충돌 처리할 수 있음
  • Sorting Layer : 클 수록 앞으로 옴

학습하며 겪었던 문제점 & 에러

  • 문제&에러에 대한 정의

메모리가 터졌어요…

  • 내가 한 시도

디버그 로그때문인가? 싶기도 하고 invoke 때문같아서 죄다 조건식 걸고 돌려봄

  • 해결 방법

그게 문제가 아님 내가 지금 재귀호출을 하고있었음!!!!!!!!!!!!! (미치겠다진짜)

  • 이 문제&에러를 다시 만나게 되었다면?

별거 안했는데 메모리 터지면 무조건 재귀호출 있나부터 보자;;;

내일 학습 할 것은 무엇인지

오디오 매니저 만들기 + invincible 프로퍼티 만들기