특징
Asset Store
Asset Store - 설치
Asset Store - 찜, 쓸 기회가 있다면 좋겠다 싶은 것들
인터페이스
최초 프로젝트를 생성하면 빈 화면에 Main Camera 하나만 보이는데,
레이아웃을 보기 편하기 2-3 형태에서 약간 변경해서 사용.
<color orange>GameObject » Create Other » Cube</color> 메뉴를 선택해서 3차원 공간에 큐브 생성.
큐브를 이리 저리 움직여보면, 게임 프리뷰 화면에 까만 물체가 움직이는게 보인다.(까만물체=큐브)
계층Hierarchy뷰에서 Cube나 MainCamera를 선택 & 더블클릭하면 해당 물체가 확대된다.
라이트 추가
뷰와 관련된 기능
씬뷰의 조작
이동 방식 | 사용하는 키(조작법) |
자유회전 | 마우스 오른쪽 버튼 누름 |
가운데를 중심으로 회전 | Alt 누름 상태 + 마우스 왼쪽 버튼 |
확대/축소 | 마우스 휠 또는 Alt 누름 상태 + 마우스 오른쪽 버튼 |
이동 | 마우스 가운데 버튼 |
핸드툴이 선택된 상태에서 마우스 왼쪽 |
Alt + Ctrl + 마우스 왼쪽 버튼 |
X, Z 축 이동 | 화살표 |
이동 속도 빠르게 | 화면 이동 중에 추가로 Shift 누름 |
<color orange>카메라 자유 비행</color> | 마우스 오른쪽 버튼 누름 + WASDQE 키로 FPS 게임처럼 이동 |
선택한 물체에 포커스&중심 확대 | 오브젝트 선택 후 F키, 또는 계층뷰에서 더블클릭 |
퍼스펙티브 뷰 « » 아이소메트릭뷰 전환 | 씬뷰(Scene)의 오른쪽 위의 기즈모를 Shift키를 누른 상태에서 클릭 |
퍼스펙티브 뷰 : 원근감 있는 뷰 |
아이소메트릭 뷰 : 원근감 없는 뷰 (모든 물체가 같은 크기로 보임) |
트랜스폼툴
Scene, Game 뷰를 제외한 나머지 뷰에 마우스를 가져가서
핸드/변환/회전/스케일 툴 선택시 인터페이스
오브젝트 중심의 회색박스를 선택하며 드래그 하면 전 축에 균등 적용
Red/Green/Blue의(x,y,z)축의 박스를 선택하면 해당 축만 적용
트랜폼 기즈모
씬뷰의 렌더모드
RGB : 보통 결과
Alpha : 알파값을 사용하는 물체에 대해서 알파값이 어떻게 적용되어 있는지 흑백을 보여준다.
OverDraw : 여러 물체 간에 겹치는 영역이 많을 경우, 이를 오버드로우라고 하는데 현재씬의 오버드로우가 얼마나 되는지 보여줌. (오오오오)
MipMaps : 카메라와 물체 간의 거리에 따라 밉맵 텍스쳐가 잘 적용 되었는지 보여주는 기능. 빨간색일수록 필요 이상 크기가 사용되었고 파란색일수록 작다는
계층뷰 (Hierachy)
프로젝트뷰(Project)
게임뷰(Game)
스내핑
<color orange>Ctrl</color>키를 누르고 이동/회전/스케일을 하면, 설정에 저장된 스냅 크기만큼 적정 크기만큼 딱딱 끊어지면 움직인다.
정점 스냅 기능
Move (키 W) 모드에서,
= V : 키를 누르고 있으면 정점 스냅 모드가 되면서 움직을 정점을 선택할 수 있다.
= : 정점 선택후 (v키는 누르고 있고) 마우스를 드래드하면
= : 붙이고 싶은 오브젝트에 갖다 붙일 수 있다. 한개의 오브젝트가 되는건 아니고, 위치 배열을 딱 붙어 있도록 할 수 있다.
= Shift+V : 키를 누르면 정점 스냅 기능을 on/off 할 수 있다.
뷰 이동 기능
= Ctrl+Alt+F : 선택한 오브젝트를 씬(scene)뷰의 중심으로 가져가는 기능
= : 특정 오브젝트를 선택한 뒤, <color orange>**Ctrl+Alt+F**</color> 또는 \\ 메뉴에서 <color orange>**GameObject >> Move To View**</color>
= Ctrl+Shift+F : **씬 뷰의 회전 정보까지 동일하게 일치하는 화면 중심으로 이동하고 싶을때** \\ 카메라를 선택하고 이 기능을 실행해보면, \\ 내가 씬 뷰에서 보고 있는 화면 그대로 보여지는 위치로 카메라가 이동된다.
= : 메뉴에서 <color orange>**GameObject >> Align with View**</color>
표면 접점 기능
아래의 키를 모두 누른 상태에서 실행
= Shift + Ctrl : <color orange>Shift + Ctrl</color> 키를 누르면, 표면 스냅 기능이 활성화되어 (계속 이 두개의 키를 누른 상태로) 이동하면 표면에 붙는다.
= Shift + Ctrl + V : 특정 버텍스를 중심으로 표면에 스내핑 된다. 오브젝트 표면에 착 붙이고 싶을때 유용하다.
프로젝트 구조
계층 형식으로 이런 형태를 갖는다.
프로젝트
씬(Scene)
게임오브젝트(GameObject)
컴포넌트(Component) :
트랜스폼, 카메라, 라이트, 메쉬필터, 메쉬렌더러, 스크립트
에셋(Asset)
에셋들은 Edit » Import New Asset 메뉴 (또는 프로젝트뷰로 드래그앤드드롭) 불러 오는데, Asserts 폴더에 저장된다.
패키지
프리팹 Prefab
프리팹Prefab 오브젝트 생성과 관리를 수월하게 해주는 편리한 기능.
프리팹 에셋을 제작하고 이미 만들어진 게임 오브젝트를 드래그해서 설정(???)
프리팹을 변경하면, 프리팹으로 만든 다른 실제 오브젝트들에도 변경된 설정이 동일하게 적용된다. (편리하겠네)
만드는 방법
계층 구조를 가진 오브젝트 그룹을 만든다. (부모,자식 관계겠지) ← (A)
프로젝트Project 뷰에서 Create 버튼을 누르고 Prefab를 선택
Prefab에 이름을 짓는다. ← (B)
계층Hierarchy 뷰에 있는 (A)를 프로젝트Project 뷰의 (B)에 갖다 놓는다. (Drag And Drop)
만들어진 Prefab를 사용한다.
지형
퀵 만들어보기
포그Fog
스카이박스sky
물효과
플레어/헤일로
프로젝터
특정 위치에 카메라 영역을 설정하고, 이 영역과 어떤 물체가 교차하는 표면에 특수효과를 부여하는 컴포넌트…., 바닥에 동그란 그림자를 만들 수 있다
간단한 예,
프로젝트 뷰에서 <color darkorange>Import » Projects</color> 메뉴를 선택해서 프로젝터 샘플을 읽어온다.
바닥을 바라보도록 조정해보면 바닥에 동그란 그림자가, 그림자라고 생각하면 그림자, 보인다.
그림자가 적당해지만, <color darkorange>GameObject » Create Other >. Sphere</color> 메뉴를 사용해서 구를 생성하고 프로젝터 아래쪽에 배치한다.
<color darkred>
결과</color> : 는 새로 만든 구체에도 그림자가 생긴다.
구체에 그림자가 생기기 않게 하려면,
Edit » Project Settings » Tags 메뉴를 쓰거나 인스펙터Inspector의 Layer 버튼을 누르고 Add Layer 메뉴 선택.
User Layer 8번 (아무 곳이나) 'noProjector' 로 레이어 추가
프로젝터를 선택하고 인스펙터에서 Ignore Layers에서 noProjector 선택.
구체를 선택하고 인스펙터에서 Layer를 noProjector로 선택.
<color darkred>
결과</color> : 바닥에는 그림자가 있다. 구체에는 그림자가 생기지 않는다.
1인칭 컨트롤러 추가
카메라가 2대 이상일 경우, 사용할 것만 acitve. 나머지는 off.
바닥에 딱 붙어 있지 않은 경우, 기즈모 툴에서 이동선택 » <color darkorange>Ctrl + Shift</color> 누른 상태에서 가운데 영역을 드래그 하면 딱 바닥에 붙일 수 있다.
렌더링 시스템
좌측 하단을 기준으로 0과 1사이의 값으로 표시.
이거 좀 햇갈린다.
쉐이더
내장 쉐이더 규칙
Transparent Cutout : 재질 일부분을 완전히 없애서 보여줌
Vertex-Lit : 메쉬의 정점 단위로 빛을 계산 후 정점간 보간을 통해 물체를 표현..
Unlit : 빛을 고려하지 않고 물체를 표현. gui나 2d이미지를 그대로 표현할때 사용
Decal : 재질 위에 이미지를 덧 씌운 효과를 낼때
Mobile : 모바일용
셰이더랩
서브셰이더
태그
동작방식을 지정하는 설정항목. 키와 값으로 구성
Queue : 렌더링 순서
IgnoreProjector : 프로젝터의 영향을 받는지?
RenderType : 셰이더 종류를 분류하는데 사용. 셰이더가 분류 되면, 특정 카메라에 지정한 셰이더 종류만 보이게 하는 셰이더 리플레이스먼트(??) 기능이 사용 할 수 있다.
패스
물리엔진
프로그래밍
오브젝트마다 코드를 추가하면 자동을 찾아서 실행하는 함수
이벤트 발생시마다 호출되는 함수
OnDestroy : 삭제될때
OnEnable : (vs OnDisable) 게임 오브젝트가 활성 또는 비활성 될때
OnCollsionEnter / OnCollsionStay / OnCollsionExit : 리지드바디간 충돌발생시
OnTriggerEnter / OnTriggerStay / OnTriggerExit : 충돌체에 물체 접근이 감지 될때
OnControllerCollideHit : 캐릭터 컨트롤러가 충돌될때
유니티 스케일 : 단위
나중에 다시 정리
3D 모델을 유니티에서 불러올 때 고려할 사항
정점 데이터 증가
유니티 : 정점1개 = 노멀1개, 색상1개, UV1개.
한 정점에 노말이나 색상 정보가 한개 이상일때, 추가 정점을 만들어버린다.
권장포맷
다른 좌표축을 사용하는 모델러들
유니티 : Y축이 위쪽
Z축이 위쪽인 sw의 경우 트랜스폼 필요
유니티 스케일
재질
쉐이더
미리 만들어진 쉐이더 제공
쉐이더 속성을 변경해서, … 어쩌라는거지.
텍스쳐
나중에 다시 정리 2
키워드정리
gameObject
Transform
Rotate
Translate
Input
Time
TimeDelta
Space.World
Space.self
eulerAngles