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(~)
- AND(&)
- ex> 1000 & 0101 = 0000 (동일한 자릿값 둘 모두 1 == 1, != 0)
- OR(|)
- ex> 1000 | 0101 = 1101 (동일한 자릿값 둘 중 하나라도 1 == 1, != 0)
- XOR(^, exclusive OR)
- ex> 1000 ^ 0101 = 1101 (동일한 자릿값 둘이 다르다 == 1, != 0)
- NOT(~)
- ex> 1000 ~= 0111 (1과 0을 반전시킴)
Content .6 비트 시프트 연산자
- 사용방법
- 1 << n : 1을 n번째 비트 위치로 시프트
- 사용 목적
- 충돌검사 : 비트마스킹을 사용하여 특정 레이어에 속한 오브젝트만을 대상으로 충돌 검사
- 레이캐스팅 제어 : 레이캐스트가 특정 레이어의 오브젝트에만 반응하도록 비트마스크를 설정
- 카메라 렌더링 설정 : 카메라가 특정 레이어의 오브젝트만을 렌저링하도록 설정
Content .7 쿼터니언과 벡터의 곱셈
- 쿼터니언을 활용하여 벡터를 회전시킴
- Quaternion * Vector3 (순서가 중요함)
Chapter .2 모르겠는 점
1_1. [SerializeField] 가 무엇인지?
- 스크립트에서 private 필드를 직렬화 하기 위해 사용
- 기존 스크립트에서는 public만 직렬화가 가능
- 직렬화 : 개체의 상태를 나중에 저장, 전송 또는 재구성할 수 있는 형식으로 변환하는 프로세스
1_2. [SerializeField] 를 사용하는 이유는?
- 다른 스크립트의 접근은 차단하나, Unity 인스펙터를 통해서 입력은 가능해짐
- 직렬화를 커스터마이징할 수 있음
- 새로운 스크립트 작성 시 직렬화된 데이터가 적어져 업데이트 시간 절약 가능
- 코드 참조
private bool IsLayerMatched(int value, int layer)
{
return value == (value | 1 << layer);
}
- 코드 참조
float minAngle = -(numberOfProjectilesPerShot / 2f) * projectilesAngleSpace + 0.5f * rangedAttackSO.multipleProjectilesAngle;
Chapter .3 팀원들의 TIL
- 델리게이트를 사용하는 이유 (편의성)
- 델리게이트 안에 함수를 저장할 수 있음
- 자잘한 함수를 여러가지 넣어 깔끔하게 정리할 수 있음