{TIL} Unity 입문 교육 2일차 정리

Kwaksang·2024년 5월 9일

TIL

목록 보기
15/37
post-thumbnail

Unity 입문 강의 2일차

모르는 점

Chapter .1 Unity 입문 강의

Content .1 프리팹(Prefab)

  • 게임 오브젝트를 재사용이 가능하고 관리하기 쉽게 만들기 위한 템플릿 프리셋
  • 컴포넌트 및 설정을 미리 정의하고 여러 장면이나 게임에서 재사용 가능
  • 인스턴스화를 통해 실제 게임 오브젝트로 변환 가능
  • 모든 프로퍼티와 컴포넌트 설정이 복사됨
  • 변경사항이 모든 인스턴스에 즉시 반영
  • 일관성을 유지하고 일괄적으로 변경
  • 레벨 디자인, 재사용 가능한 게임 요소(캐릭터, 아이템, 장애물 등)의 생성, 프로토타이핑 등에 사용

Content .2 Instantiate 함수

  • 복사해서 만들어 내는 것
  • 원본의 복사본을 새로 생성하고 반환

Content .3 열거형 (Enum)

  • 상수형 값에 의미를 부여하기 위해 사용
  • 기본 타입은 int
  • ex> if(ItemType == 0) 보다 if(ItemType == ItemType.Weapon) 으로 작성할 때 이해가 쉬움

Content .4 스크립터블 오브젝트(Scriptable Object)

  • 데이터를 저장하고 관리하는 데이터 컨테이너
  • 재사용 가능한 데이터 또는 설정을 저장하는데 사용
  • 코드와 데이터를 분리
  • 하나의 스크립터블 오브젝트를 여러 게임 오브젝트에서 재사용 가능

Content .5 비트 연산자

  • 레이어는 최대 32개까지 추가 가능 (int는 32bit / 4 bytes)
  • AND(&), OR(|), XOR(^), NOT(~)
  1. AND(&)
  • ex> 1000 & 0101 = 0000 (동일한 자릿값 둘 모두 1 == 1, != 0)
  1. OR(|)
  • ex> 1000 | 0101 = 1101 (동일한 자릿값 둘 중 하나라도 1 == 1, != 0)
  1. XOR(^, exclusive OR)
  • ex> 1000 ^ 0101 = 1101 (동일한 자릿값 둘이 다르다 == 1, != 0)
  1. NOT(~)
  • ex> 1000 ~= 0111 (1과 0을 반전시킴)

Content .6 비트 시프트 연산자

  1. 사용방법
  • 1 << n : 1을 n번째 비트 위치로 시프트
  1. 사용 목적
  • 충돌검사 : 비트마스킹을 사용하여 특정 레이어에 속한 오브젝트만을 대상으로 충돌 검사
  • 레이캐스팅 제어 : 레이캐스트가 특정 레이어의 오브젝트에만 반응하도록 비트마스크를 설정
  • 카메라 렌더링 설정 : 카메라가 특정 레이어의 오브젝트만을 렌저링하도록 설정

Content .7 쿼터니언과 벡터의 곱셈

  • 쿼터니언을 활용하여 벡터를 회전시킴
  • Quaternion * Vector3 (순서가 중요함)

Chapter .2 모르겠는 점

1_1. [SerializeField] 가 무엇인지?

  • 스크립트에서 private 필드를 직렬화 하기 위해 사용
  • 기존 스크립트에서는 public만 직렬화가 가능
  • 직렬화 : 개체의 상태를 나중에 저장, 전송 또는 재구성할 수 있는 형식으로 변환하는 프로세스

1_2. [SerializeField] 를 사용하는 이유는?

  • 다른 스크립트의 접근은 차단하나, Unity 인스펙터를 통해서 입력은 가능해짐
  • 직렬화를 커스터마이징할 수 있음
  • 새로운 스크립트 작성 시 직렬화된 데이터가 적어져 업데이트 시간 절약 가능
  1. 코드 참조
private bool IsLayerMatched(int value, int layer)
{
    return value == (value | 1 << layer);
}

// 논리 연산자와 비트 시프트 연산자를 합쳐서 만든 기능임을 알려주기 위함
// 추후 레이어 관리에 있어 간편하고 유용한 기능
  1. 코드 참조
float minAngle = -(numberOfProjectilesPerShot / 2f) * projectilesAngleSpace + 0.5f * rangedAttackSO.multipleProjectilesAngle;

// numberOfProjectilesPerShot / 2f : 중간 나누기
// projectilesAngleSpace : 얼마나 간격을 조절할지
// 0.5f : 중심선 보정치
// rangedAttackSO.multipleProjectilesAngle : 무기 기준 위아래로 절반씩

Chapter .3 팀원들의 TIL

  1. 델리게이트를 사용하는 이유 (편의성)
  • 델리게이트 안에 함수를 저장할 수 있음
  • 자잘한 함수를 여러가지 넣어 깔끔하게 정리할 수 있음
profile
게임은 재미와 기능!

0개의 댓글