language:unity:1-overview
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
language:unity:1-overview [2013/01/19 19:06] – 바깥 편집 127.0.0.1 | language:unity:1-overview [2024/04/23 22:44] (현재) – 바깥 편집 127.0.0.1 | ||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | ====== 특징 ====== | ||
+ | |||
+ | * 통합 인터페이스 | ||
+ | * 통합 에셋 시스템 : 게임 제작에 사용되는 파일을 에셋이라고 함 | ||
+ | * 모델링 : 3dxMax, Maya, Cheetah3D, Cinema4D, Blender, Modo, Lightware, Softimage xsi, FBX, collada | ||
+ | * 텍스쳐 : psd, png, gif, bmp, tga, pict | ||
+ | * 오디오 : wav, mp3, ogg, aiff, mod, it, s3m, xm | ||
+ | * 비디오 : mpeg, mov 3D 화면 안에서 재생 가능 | ||
+ | * 렌더링 | ||
+ | * 디퍼드라이팅 시스템 | ||
+ | * SSAO, Bloom, DOF 외 26가지 PostEffect 제공 | ||
+ | * Halo, Flare, Cookie, Projector | ||
+ | * 쉐이더 | ||
+ | * Cg --> GLSL로 자동 변환 지원 | ||
+ | * 나머지는 이해 안되니 패스.(2012-11-15) | ||
+ | * 애니메이션 기능 | ||
+ | * 모핑 애니메이션이라..? | ||
+ | * 파티클 시스템 | ||
+ | * 물리 엔진 기능 | ||
+ | * 물리 재질을 통한 충돌 효과 | ||
+ | * 캐릭터 컨트롤러 | ||
+ | * 프로그램 기능 | ||
+ | * C-Sharp, JavaScript | ||
+ | * 코드 디버깅 | ||
+ | * 비주얼스튜디어와 연동(이 된단 말인가?? | ||
+ | * 2D 게임 제작 | ||
+ | * 직교투영(? | ||
+ | * GUI 제작을 위한 컨트롤 제공 | ||
+ | * 자동 길찾기 시스템 | ||
+ | |||
+ | ====== Asset Store ====== | ||
+ | |||
+ | * 무료도 있고, 유료더라도 모델링, 텍스쳐를 구할 수 있다는건 유용해보인다. | ||
+ | |||
+ | Asset Store - 설치 | ||
+ | |||
+ | * SmartStudioFree | ||
+ | * Detonator Explosion Framework v1.04 | ||
+ | * Free ArtskillZ texture Pack 01 v1.0 | ||
+ | * Spawner - Free v1.7 | ||
+ | * Stone v2.0 | ||
+ | |||
+ | Asset Store - 찜, 쓸 기회가 있다면 좋겠다 싶은 것들 | ||
+ | |||
+ | * Unlimited Mixamo Animation Store | ||
+ | * Ultimate FPS Camera | ||
+ | * NGUI : HUD Text | ||
+ | * Advance Fantasy AI Free Edition ( free ) | ||
+ | |||
+ | ====== 인터페이스 ====== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | 최초 프로젝트를 생성하면 빈 화면에 **Main Camera** 하나만 보이는데, | ||
+ | |||
+ | * 카메라를 선택하면 카메라 preview가 보인다. | ||
+ | |||
+ | 레이아웃을 보기 편하기 2-3 형태에서 약간 변경해서 사용. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | * <color orange> | ||
+ | * 큐브를 이리 저리 움직여보면, | ||
+ | * 계층< | ||
+ | |||
+ | ===== 라이트 추가 ===== | ||
+ | |||
+ | * 메뉴에서 <color orange> | ||
+ | * 빛을 이리 저리 움직여보면 큐브에 그림자가 달라진다. | ||
+ | |||
+ | ===== 뷰와 관련된 기능 ===== | ||
+ | |||
+ | * 특정 뷰에 커서를 가져가서 <color darkorange> | ||
+ | |||
+ | ====== 씬뷰의 조작 ===== | ||
+ | |||
+ | ^ 이동 방식 ^ 사용하는 키(조작법) ^ | ||
+ | | 자유회전 | 마우스 오른쪽 버튼 누름 | | ||
+ | | 가운데를 중심으로 회전 | Alt 누름 상태 + 마우스 왼쪽 버튼 | | ||
+ | | 확대/ | ||
+ | | 이동 | 마우스 가운데 버튼 | | ||
+ | | ::: | 핸드툴이 선택된 상태에서 마우스 왼쪽 | | ||
+ | | ::: | Alt + Ctrl + 마우스 왼쪽 버튼 | | ||
+ | | X, Z 축 이동 | 화살표 | | ||
+ | | 이동 속도 빠르게 | 화면 이동 중에 추가로 Shift 누름 | | ||
+ | | <color orange> | ||
+ | | 선택한 물체에 포커스& | ||
+ | | 퍼스펙티브 뷰 << >> 아이소메트릭뷰 전환 | 씬뷰(Scene)의 오른쪽 위의 기즈모를 **Shift**키를 누른 상태에서 클릭 | | ||
+ | | ::: | 퍼스펙티브 뷰 : 원근감 있는 뷰 | | ||
+ | | ::: | 아이소메트릭 뷰 : 원근감 없는 뷰 (모든 물체가 같은 크기로 보임) | | ||
+ | |||
+ | ===== 트랜스폼툴 ===== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Scene, Game 뷰를 제외한 나머지 뷰에 마우스를 가져가서 | ||
+ | |||
+ | ^ 핸드툴 | ||
+ | | Q | W | E | R | | ||
+ | |||
+ | 핸드/ | ||
+ | |||
+ | * 오브젝트 중심의 회색박스를 선택하며 드래그 하면 전 축에 균등 적용 | ||
+ | * Red/ | ||
+ | |||
+ | 트랜폼 기즈모 | ||
+ | |||
+ | * Pivot or Center : 오브젝트에 설정된 중심(Pivot)으로 할 것인지 or (오브젝트 또는 오브젝트 그룹(부모자식 설정이 있다면) 전체)의 중심으로 뭔가 할 것인가? | ||
+ | * Local or Global : 오브젝트 중심의 좌표 or 현재 뷰 중심의 좌표 | ||
+ | |||
+ | 씬뷰의 렌더모드 | ||
+ | * RGB : 보통 결과 | ||
+ | * Alpha : 알파값을 | ||
+ | * OverDraw : 여러 물체 간에 겹치는 영역이 많을 경우, 이를 오버드로우라고 하는데 현재씬의 오버드로우가 얼마나 되는지 보여줌. (오오오오) | ||
+ | * MipMaps : 카메라와 물체 간의 거리에 따라 밉맵 텍스쳐가 잘 적용 되었는지 보여주는 기능. **빨간색일수록 필요 이상 크기가 사용되었고 파란색일수록 작다는** | ||
+ | |||
+ | 계층뷰 (Hierachy) | ||
+ | * 부모, 자식 관계 설정 가능. 자식이 될 오브젝트를 부모가 될 오브젝트에 Drag And Drop 하면 된다. | ||
+ | |||
+ | 프로젝트뷰(Project) | ||
+ | * 아.. 뭐 중요한게 있나? | ||
+ | |||
+ | ===== 게임뷰(Game) ==== | ||
+ | * 스탯 Stats : 현재 씬의 중요한 정보들, 최적화에 사용된다고 한다. | ||
+ | * 기즈모 Gizmos : 씬Scene뷰에서 설정한 기즈모가 게임뷰에서도 보이게끔. 테스트 용도. | ||
+ | |||
+ | ===== 스내핑 ===== | ||
+ | |||
+ | <color orange> | ||
+ | |||
+ | ==== 정점 스냅 기능 ==== | ||
+ | Move (키 W) 모드에서, | ||
+ | |||
+ | = V : 키를 누르고 있으면 정점 스냅 모드가 되면서 움직을 정점을 선택할 수 있다. | ||
+ | = : 정점 선택후 (v키는 누르고 있고) 마우스를 드래드하면 | ||
+ | = : 붙이고 싶은 오브젝트에 갖다 붙일 수 있다. 한개의 오브젝트가 되는건 아니고, 위치 배열을 딱 붙어 있도록 할 수 있다. | ||
+ | = Shift+V : 키를 누르면 정점 스냅 기능을 on/off 할 수 있다. | ||
+ | |||
+ | ==== 뷰 이동 기능 ==== | ||
+ | |||
+ | = Ctrl+Alt+F : 선택한 오브젝트를 씬(scene)뷰의 중심으로 가져가는 기능 | ||
+ | = : 특정 오브젝트를 선택한 뒤, <color orange> | ||
+ | = Ctrl+Shift+F : **씬 뷰의 회전 정보까지 동일하게 일치하는 화면 중심으로 이동하고 싶을때** \\ 카메라를 선택하고 이 기능을 실행해보면, | ||
+ | = : 메뉴에서 <color orange> | ||
+ | |||
+ | ===== 표면 접점 기능 ===== | ||
+ | |||
+ | 아래의 키를 모두 누른 상태에서 실행 | ||
+ | |||
+ | = Shift + Ctrl : <color orange> | ||
+ | = Shift + Ctrl + V : 특정 버텍스를 중심으로 표면에 스내핑 된다. 오브젝트 표면에 착 붙이고 싶을때 유용하다. | ||
+ | ======= 프로젝트 구조 ======= | ||
+ | |||
+ | 계층 형식으로 이런 형태를 갖는다. | ||
+ | |||
+ | * 프로젝트 | ||
+ | * 씬(Scene) | ||
+ | * 게임오브젝트(GameObject) | ||
+ | * 컴포넌트(Component) : \\ 트랜스폼, | ||
+ | * 에셋(Asset) | ||
+ | * 모델링 데이터 | ||
+ | * 텍스쳐 데이터 | ||
+ | * 오디오 데이터 | ||
+ | |||
+ | 에셋들은 **Edit >> Import New Asset** 메뉴 (또는 프로젝트뷰로 드래그앤드드롭) 불러 오는데, Asserts 폴더에 저장된다. | ||
+ | * 탐색기에서 에셋을 변경 (파일이름변경)등을 하면 깨질 수 있으므로 주의 | ||
+ | |||
+ | ======= 패키지 ======= | ||
+ | |||
+ | * 패키지를 불러올때는 한글이면 잘 안된다고 함. | ||
+ | * 나머지는 필요할때 보지 뭐, 패스. | ||
+ | |||
+ | ======= 프리팹 Prefab ======= | ||
+ | |||
+ | * 프리팹< | ||
+ | * 프리팹 에셋을 제작하고 이미 만들어진 게임 오브젝트를 드래그해서 설정(???) | ||
+ | * 프리팹을 변경하면, | ||
+ | |||
+ | 만드는 방법 | ||
+ | |||
+ | - 계층 구조를 가진 오브젝트 그룹을 만든다. (부모, | ||
+ | - **프로젝트< | ||
+ | - **Prefab**에 이름을 짓는다. <- (B) | ||
+ | - **계층< | ||
+ | - 만들어진 Prefab를 사용한다. | ||
+ | |||
+ | ====== 지형 ====== | ||
+ | ===== 퀵 만들어보기 ===== | ||
+ | * <color darkorange> | ||
+ | |||
+ | 포그< | ||
+ | * 나중에 다시 정리. | ||
+ | 스카이박스< | ||
+ | * 스카이 에셋 로드 | ||
+ | * <color darkorange> | ||
+ | 물효과 | ||
+ | |||
+ | 플레어/ | ||
+ | |||
+ | ===== 프로젝터 ===== | ||
+ | |||
+ | 특정 위치에 카메라 영역을 설정하고, | ||
+ | |||
+ | 간단한 예, | ||
+ | |||
+ | - 프로젝트 뷰에서 <color darkorange> | ||
+ | - 바닥을 바라보도록 조정해보면 바닥에 동그란 그림자가, | ||
+ | - 그림자가 적당해지만, | ||
+ | - <color darkred> | ||
+ | |||
+ | 구체에 그림자가 생기기 않게 하려면, | ||
+ | |||
+ | - **Edit >> Project Settings >> Tags** 메뉴를 쓰거나 인스펙터< | ||
+ | - User Layer 8번 (아무 곳이나) ' | ||
+ | - 프로젝터를 선택하고 인스펙터에서 **Ignore Layers**에서 **noProjector** 선택. | ||
+ | - 구체를 선택하고 인스펙터에서 Layer를 **noProjector**로 선택. | ||
+ | - <color darkred> | ||
+ | |||
+ | 1인칭 컨트롤러 추가 | ||
+ | |||
+ | * 카메라가 2대 이상일 경우, 사용할 것만 acitve. 나머지는 off. | ||
+ | * 바닥에 딱 붙어 있지 않은 경우, 기즈모 툴에서 **이동**선택 >> <color darkorange> | ||
+ | |||
+ | ====== 렌더링 시스템 ====== | ||
+ | 좌측 하단을 기준으로 0과 1사이의 값으로 표시. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | 이거 좀 햇갈린다. | ||
+ | |||
+ | ====== 쉐이더 ====== | ||
+ | |||
+ | * 맥/ | ||
+ | 내장 쉐이더 규칙 | ||
+ | * Transparent Cutout : 재질 일부분을 완전히 없애서 보여줌 | ||
+ | * Vertex-Lit : 메쉬의 정점 단위로 빛을 계산 후 정점간 보간을 통해 물체를 표현.. | ||
+ | * Unlit : 빛을 고려하지 않고 물체를 표현. gui나 2d이미지를 그대로 표현할때 사용 | ||
+ | * Decal : 재질 위에 이미지를 덧 씌운 효과를 낼때 | ||
+ | * Mobile : 모바일용 | ||
+ | |||
+ | ===== 셰이더랩 ===== | ||
+ | * 셰이더이름 / 속성(Property) / 서브셰이더(SubShader) | ||
+ | ==== 서브셰이더 ==== | ||
+ | * 셰이더랩에 선언된 서브셰이더가 실행 되고, 하드웨어 문제로 실행 되지 않으면 다음에 선언된 서브셰이더가 실행 된다. | ||
+ | * 태그(Tag)와 패스(Pass)로 구성. | ||
+ | === 태그 === | ||
+ | 동작방식을 지정하는 설정항목. 키와 값으로 구성 | ||
+ | * Queue : 렌더링 순서 | ||
+ | * IgnoreProjector : 프로젝터의 영향을 받는지? | ||
+ | * RenderType : 셰이더 종류를 분류하는데 사용. 셰이더가 분류 되면, 특정 카메라에 지정한 셰이더 종류만 보이게 하는 셰이더 리플레이스먼트(?? | ||
+ | === 패스 === | ||
+ | 음 복잡해서 다음에 읽어보면서 다시 정리 | ||
+ | |||
+ | ====== 물리엔진 ====== | ||
+ | 물리엔진의 구성 요소 | ||
+ | * 리지드바디(RigidBody) : 질량(mass) / 저항(drag) / 중력(Gravity) | ||
+ | * 충돌체 : 물리재질 --> 마찰(Friction) / 반동(Bounciness) | ||
+ | 충돌체 | ||
+ | * 박스형 / 구형 / 캐슐형(사람이나 나무 같은) | ||
+ | 메쉬충돌체 | ||
+ | * FBX 임포터에서 모델링을 불러들일 때 " | ||
+ | ====== 프로그래밍 ====== | ||
+ | 오브젝트마다 코드를 추가하면 자동을 찾아서 실행하는 함수 | ||
+ | * Awake : 구동준비가 끝나면 | ||
+ | * Start : 첫 프레임을 그리기 **전에** | ||
+ | * Update : 매 프레임마다 호출 | ||
+ | * LateUpdate : Update 다음에 호출 | ||
+ | 이벤트 발생시마다 호출되는 함수 | ||
+ | * OnDestroy : 삭제될때 | ||
+ | * OnEnable : (vs OnDisable) 게임 오브젝트가 활성 또는 비활성 될때 | ||
+ | * OnCollsionEnter / OnCollsionStay / OnCollsionExit : 리지드바디간 충돌발생시 | ||
+ | * OnTriggerEnter / OnTriggerStay / OnTriggerExit : 충돌체에 물체 접근이 감지 될때 | ||
+ | * OnControllerCollideHit : 캐릭터 컨트롤러가 충돌될때 | ||
+ | |||
+ | 유니티 스케일 : 단위 | ||
+ | * 1의 단위는 1m. 이렇게 정해놓으니 편하네. | ||
+ | |||
+ | |||
+ | ====== 나중에 다시 정리 ====== | ||
+ | |||
+ | 3D 모델을 유니티에서 불러올 때 고려할 사항 | ||
+ | |||
+ | 정점 데이터 증가 | ||
+ | * 유니티 : 정점1개 = 노멀1개, 색상1개, UV1개. | ||
+ | * 한 정점에 노말이나 색상 정보가 한개 이상일때, | ||
+ | 권장포맷 | ||
+ | * FBX | ||
+ | * 3dsmax나 maya 모델링을 읽어올 수는 있지만 내부에서 FBX로 변환해서 읽어옴. | ||
+ | 다른 좌표축을 사용하는 모델러들 | ||
+ | * 유니티 : Y축이 위쪽 | ||
+ | * Z축이 위쪽인 sw의 경우 트랜스폼 필요 | ||
+ | 유니티 스케일 | ||
+ | * 1은 1m | ||
+ | |||
+ | 재질 | ||
+ | |||
+ | 쉐이더 | ||
+ | * 미리 만들어진 쉐이더 제공 | ||
+ | * 쉐이더 속성을 변경해서, | ||
+ | |||
+ | 텍스쳐 | ||
+ | * 텍스쳐의 용도에 맞게 항목 선택 | ||
+ | |||
+ | ====== 나중에 다시 정리 2 ====== | ||
+ | * 메쉬를 스크립트에서 만드는 경우, 플레이를 눌러야 제대로 반영이 된다. | ||
+ | |||
+ | 키워드정리 | ||
+ | |||
+ | < | ||
+ | gameObject | ||
+ | Transform | ||
+ | Rotate | ||
+ | Translate | ||
+ | Input | ||
+ | Time | ||
+ | TimeDelta | ||
+ | Space.World | ||
+ | Space.self | ||
+ | eulerAngles | ||
+ | </ |