유니티에서 AddComponentMenu 어튜리뷰트 사용하기 AddComponentMenu 어트리뷰트를 사용하여 사용자 스크립트의 컴포넌트 메뉴를 구성할수있다. 1)일반적으로 게임오브젝트에 사용자 스크립트를 추가할때 컴포넌트의 scripts 메뉴에서 검색 및 추가할수있다. 2)클래스위에 AddComponentMenu를 명시한다. [AddComponentMenu("컴포넌트메뉴이름/컴포넌트이름")] 3)컴포넌트를 추가할때 기존에 존재하는 Mesh 메뉴에서 추가 항목을 확인할수있다. 항목을 추가하면 해당 스크립트가 추가된다(NewBehaviourScript1) 4)새로운 사용자 메뉴를 명시할수있다. 5)컴포넌트 메뉴에 어트리뷰트에서 명시한 사용자 메뉴가 추가된것을 확인할수있다. 6)컴포넌트를 선택하면 해당 스..
유니티에서 RequireComponent 어트리뷰트 사용하기 RequireComponent 어트리뷰트를 작성한 스크립트를 게임 오브젝트에 추가하면 자동으로 게임오브젝트에 필요한 구성 요소를 추가한다. 1)클래스 위에 RequireComponent를 명시한다. [RequireComponent(typeof(컴포넌트타입))] 2)게임오브젝트에 이 스크립트를 추가하면 항상 어트리뷰트에 명시한 유형의 컴포넌트를 게임 오브젝트에 추가한다.
유니티에서 애니메이션 반복실행(loop) 설정하기(legacy, generic) legacy animation type 1)모델의 임포트 설정에서 rig 탭의 animation type을 확인한다. 2)animation으로 이동한다. 3)반복실행(loop)을 설정할 클립을 선택하고 wrap mode에서 loop를 선택하고 적용한다. generic animation type 4)애니메이션에서 클립을 선택하고 loop time에 체크한후 적용한다.
유니티에서 애니메이션 이벤트 추가하기(animation event) 타임라인에서 애니메이션의 특정 시간에 이벤트를 설정하여 오브젝트의 스크립트에 있는 함수를 호출할수있다. 1)씬에 큐브 오브젝트를 추가하고 애니메이션을 생성하였다(new animation) 2)애니메이션의 반복실행을 설정한다(loop time) 3)함수를 작성한 스크립트를 큐브 오브젝트에 추가한다. 3)애니메이션 이벤트를 추가하려면 타임라인에서 재생 위치를 선택하고 add event를 클릭한다. 4)이벤트 라인에서 새로 추가한 이벤트를 확인할수있다. 이벤트를 선택하면 마커가 파란색으로 표시된다. 5)inspector 윈도우에서 애니메이션 이벤트의 함수와 파라미터를 설정한다. 애니메이션 이벤트로 호출할 함수는 오브젝트의 스크립트에 존재해야한..
유니티에서 카메라 layerCullDistances를 사용하기(per-layer culling distances) layerCullDistances를 사용하면 특정 레이어의 게임오브젝트가 카메라의 farClipPlane보다 더 가까운 거리에서 컬링되도록 설정할수있다. 작은 오브젝트를 초기에 컬링하는데 유용하다. 1)예에서 씬을 구성하였다. 2)일반적으로 카메라의 farClipPlane보다 가까이 있는 오브젝트를 모두 렌더링한다. 3)tags & layers에서 새로운 레이어를 추가한다. 예에서 2개의 레이어를 추가하였다. cull5 - 컬링거리를 5m로 설정할 게임오브젝트의 레이어 cull30 - 컬링거리를 30m로 설정할 게임오브젝트의 레이어 4)크기가 32인 실수형 배열을 선언하고 컬링거리로 사용할 ..
유니티에서 CombineMeshes 함수를 사용하여 드로우콜 수치 낮추기 CombineMeshes 함수를 이용하여 다중 메시를 단일 메시로 결합할수있다. 1)프로젝트의 동적배칭 및 정적 배칭을 비활성화하고 아래와 같이 씬을 구성하였다. 2)씬을 구성하는 오브젝트들은 같은 재질을 공유하여 오브젝트의 수와 동일한 수치의 batches를 표시하고있다. 3)새로운 게임오브젝트를 생성하고(parent) 개별적으로 존재하는 오브젝트들을 parent의 하위에 위치시킨다(child) 4)parent 게임오브젝트에 mesh filter, mesh renderer 컴포넌트를 추가한다. 결합한 메시와 재질을 할당하는데 사용된다. meshrenderer에 child 게임오브젝트와 같은 재질을 할당한다. 5)스크립트를 작성하여..
유니티에서 동적배칭 사용하기(dynamic batching) dynamic batching은 런타임에서 매 프레임마다 동적 배칭이 가능한 오브젝트들에 대해 일괄처리하여 드로우콜을 줄일수있다. 다이나믹 배칭을 활성화하면 유니티가 자동적으로 같은 재질을 공유하는 오브젝트들(버텍스의 개수가 적은)의 버텍스를 모아서 한번에 처리한다. 정적 배칭은 메모리 오버헤드를 발생시키는데 반해 런타임에서 매 프레임마다 버텍스 연산을 수행하는 동적 배칭은 CPU 오버헤드를 발생시킨다. 동적 배칭은 정적 배칭과 마찬가지로 게임 오브젝트들이 독립적으로 컬링될수있다는 장점을 가진다. docs.unity3d.com/Manual/DrawCallBatching.html 1)유니티에서 다이나믹 배칭은 기본적으로 비활성화되어있다. 이 기능..
유니티에서 정적배칭(static batching) 사용하기 정적배칭을 사용하면 움직이지않고(static) 동일한 재질을 공유하는 오브젝트들을 일괄 처리함으로써 드로우콜을 줄일수있다. 정적배칭을 활성화하면 씬을 시작할때 동일한 재질을 공유하는 정적 오브젝트들(static objects)을 결합하여 하나의 공유된 버텍스와 이를 위한 인덱스 버퍼를 구축한다. 오브젝트들은 공유된 지오메트리와 재질을 사용하기때문에 드로우콜 사이의 상태변경을 거의 일으키지않으며 결과적으로 batches 및 드로우콜의 개수를 줄일수있다. docs.unity3d.com/Manual/DrawCallBatching.html 1)새로운 씬에서 라이트를 제거하고 카메라의 clear flags를 solid color로 변경하였다(batches..
유니티 에셋스토어(asset store)에서 구매한 에셋을 불러오는 방법 (에셋스토어에서 불러오기, 패키지매니저에서 불러오기, 패키지파일 불러오기) 에셋스토어에서 불러오기 1)유니티 상단의 window 메뉴에서 asset store를 선택한다. 2)에디터에 추가된 에셋스토어 창에서 유니티 계정으로 로그인하고 에셋을 다운로드 및 불러오기한다. 패키지매니저에서 불러오기(package manager) 3)상단의 window 메뉴에서 package manager로 이동한다. 4)패키지매니저에서 좌측 상단에서 my assets을 선택하면 에셋스토어에서 구매한 에셋 목록을 표시한다. 5)항목을 선택하고 다운로드 및 불러오기한다. 패키지파일 불러오기 6)에셋스토어에서 다운로드한 에셋은 아래 폴더에서 확인할수있다(경로..
유니티 터레인에 디테일 추가하기(paint details, grass) 1)터레인의 paint details 도구를 선택하고 edit details를 클릭한다. 2)add grass texture를 선택한다. 3)detail texture에 텍스처를 추가한다. 4)디테일을 선택하고 브러쉬의 속성을 설정한후 터레인에 추가한다. 5)터레인 세팅으로 이동한다. 6)mesh resolution의 detail resolution per patch, detail resolution의 수치를 조절해서 단위 면적에 대한 디테일 밀도를 설정할수있다. 7)씬의 draw mode를 shaded wireframe으로 변경한다. 아래에서 detail resolution per patch - 32, detail resolutio..
유니티 터레인의 나무 설정하기(paint tree, speedTree) 1)씬에 터레인을 생성한다. 2)터레인의 paint trees 도구를 선택하고 edit trees를 클릭한다. 3)add tree를 선택하고 나무 프리팹 오브젝트를 할당한다. add를 클릭하면 나무 오브젝트를 추가한다. 4)목록에 tree가 추가된것을 확인할수있다. brush size - 브러쉬의 크기를 설정한다. tree density - 나무의 밀도를 설정한다. tree height, tree width - 나무의 크기를 설정한다 (random - 범위내에서 나무의 크기를 무작위로 설정한다) color variation - 나무에 무작위로 색상 베리에이션을 추가한다. (이 속성을 사용하려면 오브젝트의 쉐이더가 _TreeInstan..
유니티 터레인 텍스쳐 설정(밉맵, base map dis, base texture resolution) 터레인 텍스처 밉맵 활성화하기 1)터레인에서 사용중인 텍스처에 밉맵을 설정한다. 텍스처 파일의 임포트 세팅(import settings)에서 generate mip maps에 체크하고 적용한다. 2)밉맵을 설정한 텍스처는 미리보기에서 원본 해상도의 텍스처와 이것을 축소시킨 비트맵 이미지 집합(밉맵)을 확인할수있다. 3)사물이 멀거나 작게 보이는 경우 축소된 텍스처를 사용하여 렌더링 속도를 향상시킬수있다. 터레인 텍스처 밉맵 미사용 터레인 텍스처 밉맵 사용 4)씬의 draw mode를 밉맵으로 변경한다. 5)아래에서 빨간영역은 텍스처의 크기가 필요 이상으로 크다는 의미이고 만약 텍스처의 밉맵을 활성화하였..