유니티 단축키/쿼터니언,오일러/데이터 직렬화/레이어 마스크
유니티단축키 q,w,e,r,t,y,f,z,x,v
Q - View,
W - Move,
E - Rotate,
R - Scale,
T - 이동,크기조절,회전
y - QWERT기능 전부활성화
F - 선택된 오브젝트 바로이동
Z - 오브젝트의 중심점을 바꿔준다Center는 메쉬중심 Pivot은 제작자가 임의로 정해놓은 기준점을 중심으로한다. 주로 Pivot을 많이사용한다.
X - 좌표계전환 글로벌좌표계는 0,0,0을 기준으로, 로컬좌표계는 부모오브젝트를 기준으로 하는 좌표계이다. 주로 로컬좌표계를 많이쓴다.
V - 오브젝트 접점끼리 붙혀주는단축키
오브젝트 선택 후 컨트롤 드래그 - 일정값씩 좌표이동(위에 눈금아이콘Snap Incremet에서 값을 정해줄수있다.)
쿼터니언,오일러
쿼터니언이 생기게 된 이유
짐벌락이라는 문제가 있어서 인데 짐벌락이란
xyz중 두 회전축이 겹치는 현상으로, 두축이 한축으로 합쳐지면서 한축에 대한 계산이 불가능해지는 현상을 말한다.
쿼터니언은 각 축을 한꺼번에 계산하기때문에 짐벌락 문제가 발생하지 않는다고 한다.
기존 오일러와는 다르게 x,y,z,w,를 쓰며, 여기서 w는 스칼라를 의미한다고한다.
강의에서 나왔던 Quaterinion.Euler는 오일러를 쿼터니언으로 변경시켜 사용하는방식이다.
기본 사용방법은 이렇다.
public static Quaternion Euler(float x, float y, float z);
//트렌스폼에 회전값을 = x120,y60,z100의값으로 세팅
transform.roation = Quaternion.Euler(new Vector3(120,60,100));
float x;
void Update ()
{
//x값에 시간*10의값을넣는다.(업데이트라 프레임마다 호출됨)
x += Time.deltaTime * 10;
//트랜스폼에 회전값을 x만큼 적용시킨다.(회전하는것처럼 보임)
transform.rotation = Quaternion.Euler(x,0,0);
}
데이터 직렬화(Serialization)
힙메모리를 참조하는 참조형식의 데이터는 실제 데이터값이 아닌
힙에 할당되어있는 메모리 번지수를 갖고있기때문에 저장하거나 통신에 사용 할 수 없다.
이것을 실질적인 데이터 형식으로 바꿔주는것을 데이터 직렬화 라고한다.
또한 규칙이있는데 이건 유니티 매뉴얼이다.
규칙
공용이거나 SerializeField 속성이 있어야 함 [SerializeField]로 선언이 가능하다.
정적이 아님
상수가 아님
읽기 전용이 아님
다음과 같이 직렬화 가능한 필드 타입이 있어야 함
기본 데이터 형식(int, float, double, bool, string 등)
열거형 타입(32 바이트 이하)
고정 크기 버퍼
Unity 빌트인 타입(예: Vector2, Vector3, Rect, Matrix4x4, Color, AnimationCurve)
Serializable 속성이 있는 커스텀 구조체
UnityEngine.Object에서 파생된 오브젝트에 대한 레퍼런스
Serializable 속성이 있는 커스텀 클래스(커스텀 클래스 직렬화 참조)
위에서 언급한 필드 타입의 배열
위에서 언급한 필드 타입의 List
레이어 마스크
쉽게 말하면 Layer로 이름을 주고 그 이름을 가진 객체를 만나면 감지를 해 리턴을 줍니다.
(태그랑 다른게 뭐지? 내일물어봐야겠다.)
물어본 결과 태그와 레이어는 비슷한 기능을 하나,
레이어에 세부기능이 있어 랜더링같은것을 할때는 레이어를 많이 사용한다고한다.
예시)
//몬스터 레이어를 가진 오브젝트를 만나면 이름을 리턴해줌.
LayerMask.NameToLayer("Monster");
직렬화를 더욱 이해하려면 값,참조형식 데이터를 알아보고, 구분하는 방법도 알아볼것이다.
더불어 힙메모리가 뭔지도 알아야할것같다.