1. Unity Basics - 유니티 기초

Unity3D 2012. 6. 19. 11:38
반응형

Learning the Interface

유니티의 인터페이스를 배워보자.

Project View => 프로젝트 뷰.

모든 유니티 프로젝트는 Assets 폴더를 포함한다. 이 폴더안에 있는 컨텐츠들은 프로젝트 뷰 안에 보여질 것이다. 이것은 당신의 게임을 만들기 위한 모든 자원(장면, 스크립트, 3D 모델, 텍스처, 오디오 파일, 프리팹(Prefabs))을 저장하는 곳이다. 만약 어떤 에셋위에서 오른쪽 버튼을 클릭한다면 Show In Explorer 를 선택하여 탐색기로 해당 파일을 살펴볼 수 있다.

중요 노트 : 당신은 OS를 이용하여 프로젝트 내의 에셋들을 이동해선 결코 안된다. 오로지 프로젝트 뷰안에서 작업해야만 한다.

당신의 프로젝트에 에셋을 추가하기 위해서는, OS로부터 파일을 프로젝트 뷰 안으로 드래그하거나, Assets > Import New Asset 을 이용하라.

장면(Scene) 또한 프로젝트 뷰 안에 저장이 된다. 이것들을 각각의 레벨처럼 생각하라.

몇몇 게임 에셋들은 유니티 안에서 생성이 되어진다. 이것을 위해서 프로젝트 뷰 안의 Create 드롭 다운을 사용하거나 오른쪽 버튼 클릭 후 Create 메뉴를 사용하라. 또는 메인 메뉴의 Assets > Create 메뉴를 사용하라.

Create 드롭 다운.

당신은 F2키를 이용해서 에셋이나 폴더의 이름을 변경할 수 있다.

폴더를 열거나 닫을 때 Alt 키를 누르고 있으면 모든 하위 폴더를 열거나 닫을 수 있다.

Hierarchy => 하이어라키 (계층구조).

Hierarchy 는 현재 장면에 존재하는 모든 게임오브젝트를 포함한다.

이것들의 일부는 3D 모델과 같은 에셋파일의 직접적인 인스턴스들이고 다른 것들은 프리팹(Prefabs - 게임을 만들기 위한 사용자 정의 오브젝트)의 인스턴스들이다.

Hierarchy 에서 이것들을 선택할 수 있고 계층 관계를 만들수도 있다.

장면에서 오브젝트를 추가하거나 제거하게 되면 Hierarcy 에서도 나타나거나 사라질 것이다.

Parenting => 육아 (계층관계 - 부모자식관계)

유니티에서는 Parenting이라는 개념을 사용한다. 어떤 게임오브젝트를 다른 오브젝트의 자식으로 만들기 위해서는 Hierarcy 창에서 원하는 부모에게 드래그하기만 하면 된다.

Scene View => 장면 뷰.

장면 뷰는 당신과 상호작용하는 공간이다. 당신은 환경요소, 플레이어, 카메라, 적 그리고 모든 다른 것들을 선택하고 위치시키기 위해 장면 뷰를 사용할 것이다. 장면 뷰 안에서 오브젝트를 다루는 것은 유니티에서 가장 중요한 기능이다.

Scene View Navigation => 장면 뷰 탐험하기.

오른쪽 버튼을 누르고 있으면 비행모드로 진입한다. 이 모드에서는 WASDQE(앞뒤좌우상하)키로 이동하고 마우스로 회전할 수 있다.

게임오브젝트를 선택한 후 장면 뷰에서 F키를 눌러 포커스를 이동할 수 있다.

화살표키를 이용하여 X/Z 평면방향으로 이동할 수 있다.

Alt + 왼쪽 버튼 드래그 - 회전

Alt + 가운데 버튼 드래그 - 이동

Alt + 오른쪽 버튼 드래그 - 확대/축소

    이동 툴 - 단축키 “W”            회전 툴 - 단축키 “E”        확대/축소 툴 - 단축키 “R”

Game View => 게임 뷰(화면).

게임 뷰는 게임을 발매한 후 실행하였을 때 카메라에 의해 나타나는 최종적인 화면이다.

Play Mode

발매된 게임이 어떻게 플레이되는지 보기 위해서는 위의 Play Mode 버튼을 사용하라. Play Mode 중에는 어떠한 변화도 임시적으로만 적용될 뿐고 Play Mode 를 종료하면 원상태로 돌아간다.

Free Aspect - 버튼을 눌러 화면 비율을 고정시킬 수 있다.

Maximize on Play - 선택하면, Play Mode 시 Game View가 유니티 에디터를 가득채우게 한다.

Gizmos - 선택하면, Scene View에 나오는 모든 것들이 Game View에도 나오게 한다.

Stats - 선택하면, 그래픽 성능을 최적화하는데 쓸모있는 렌더링 상태 창을 화면에 띄워준다.

Inspector

유니티에서 게임은 메쉬, 스크립트, 사운드, 빛과 같은 그래픽 요소를 포함한 다양한 게임오브젝트로 만들어진다. Inspector 창은 당신이 현재 선택한 게임오브젝트에 대한 상세한 정보와 포함하고 있는 컴포넌트 및 그 속성을 보여준다. 여기서, 당신은 게임오브젝트의 기능들을 수정할 수 있다.

Inspector 창에 보여지는 어떠한 속성들이라도 바로 수정이 가능하다. 심지어 스크립트에 사용된 변수들 마저도 스크립트를 수정하지 않고 그 값을 변경할 수 있다. 당신은 Play Mode중에 Inspector창의 값을 변경하여 당신의 게임에 가장 알맞은 값을 찾아낼 수도 있다. 스크립트에서 오브젝트 타입의 공개 변수를 정의하면 그것을 할당하기 위해 게임오브젝트나 프리팹을 드래그하여 넣을 수 있다.

당신은 컴포넌트의 이름을 오른쪽 버튼을 클릭하거나 그 옆의 작은 기어모양 아이콘을 클릭함으로써 컨텍스트 메뉴를 불러올 수 있다.

게임오브젝트에 태그를 할당하기 위해 Tag 드롭다운 버튼을 사용하라.

게임오브젝트에 렌더링 레이어를 할당하기 위해 Layer 드롭다운 버튼을 사용하라.

Prefabs

당신이 프리팹을 선택하면, 프리팹에 대한 많은 정보를 위해 Inspector 창에 추가적인 버튼이 나타난다.

Asset Workflow

여기서 우리는 유니티에서 하나의 에셋파일을 사용하는 단계를 설명할 것이다.

Import => 불러오기.

프로젝트 폴더안의 Assets 폴더안에 에셋을 저장하라. 그러면 유니티에서 그것을 감지하고 자동으로 프로젝트 뷰 안으로 불러올 것이다. 당신의 모델링 패키지를 불러오기 원할 경우, FBX exporter를 사용하여 당신의 모델을 FBX 파일로 변환한 후 저장하라.

Import Settings => 불러오기 설정.

프로젝트 뷰에서 에셋을 선택하면 Inspector 창에 선택된 에셋의 타입에 기반한 불러오기 설정이 나타날 것이다.

Adding Asset to the Scene => 장면에 에셋 추가하기.

장면에 에셋을 넣기 위해서는 간단히 프로젝트 뷰로부터 Hierarchy 또는 Scenet View 로 드래그하기만 하면 된다. 드래그하는 순간, Mesh Renderer 컴포넌트를 가진 게임오브젝트가 생성된다. 만약 당신이 텍스처나 사운드파일로 작업하고 있다면, 장면이나 프로젝트에 이미 존재하는 게임오브젝트에 그것을 추가해야 한다.

Putting Different Assets Together => 다른 에셋파일과 함께 집어넣기.

여기 대부분의 공통 에셋들 사이의 관계를 설명한 내용이 있다.

        텍스처(Texture)는 재질(Material)에 적용이 된다.

        재질은 Mesh Renderer 컴포넌트를 가진 게임오브젝트에 적용이 된다.

        애니메이션은 Animation 컴포넌트를 가진 게임오브젝트에 적용이 된다.

        사운드 파일은 Audio Source 컴포넌트를 가진 게임오브젝트에 적용이 된다.

Create a Prefab => 프리팹 만들기.

프리팹(Prefabs)은 당신의 장면에서 재사용할 수 있는 게임오브젝트와 컴포넌트의 모음이다. 하나의 프리팹으로부터 인스터스라고 불리우는 여러개의 똑같은 오브젝트를 생성할 수 있다. 나무를 예로 들면, 프리팹은 여러개의 똑같은 나무를 당신의 장면(Scene)에 생성하는 것을 허용한다. 그 나무들은 모두 프리팹과 연결되어 있기 때문에 프리팹에 주는 어떠한 변화라도 장면에 있는 모든 나무 인스턴스에 적용이 될 것이다. 또한, 하나의 인스턴스에 먼저 변화를 준 후 메인 메뉴의 GameObject > Apply Changes to Prefab을 선택하여 프리팹과 그와 연결된 모든 인스턴스에 변화를 줄 수도 있다.

당신의 장면에 있는 게임오브젝트로부터 프리팹을 생성하기 위해서는, 먼저 프로젝트 뷰안에 새로운 프리팹을 생성하고 당신이 원하는 이름으로 변경하라. 장면에서 당신이 원하는 게임오브젝트를 선택한 후 새로 만든 프리팹으로 드래그하라. 그러면, Hierarchy창에서 게임오브젝트의 이름이 푸른색으로 변하는 것을 보게 될 것이다.

Updating Assets => 에셋 업데이트하기.

당신의 원본 에셋을 수정하기를 원할 때, 프로젝트 뷰안에서 그것을 더블클릭하라. 그러면 적당한 어플리케이션이 실행되고 수정을 할 수 있을 것이다. 수정이 끝나면 그냥 그것을 저장하라. 당신이 다시 유니티의 화면으로 돌아오면, 수정된 사항이 감지되고 해당 에셋은 다시 불러와질 것이다. 프리팹에 연결된 에셋도 마찬가지로 유지될 것이다. 당신이 에셋을 수정하기 위해서 알아야 할 것은, 단지 그것을 열고 저장하는 것 뿐이다.

Adding Labels to the Assets (Optional) -=> 에셋에 레이블 추가하기 (옵션)

당신의 모든 에셋들이 조직적으로 유지되기를 원한다면 당신의 에셋들에게 레이블을 추가하는 것은 언제나 좋은 생각이다. 이것은 프로젝트 뷰 안에서 또는 오브젝트 선택기(Object selector)에서 각각의 에셋에 관련된 레이블을 검색할 수 있게 한다.

레이블을 추가하기위한 단계는 아래와 같다.

        프로젝트 뷰에서 원하는 에셋을 선택하라.

        Inspector 창에서 “Add Label” 아이콘()을 클릭하라.(해당 에셋에 레이블이 없을 경우,)

                만약 에셋이 레이블을 가지고 있다면, 그냥 해당 레이블을 클릭하라.

        당신의 레이블을 적기 시작하라.

Notes => 알림.

        당신은 하나 이상의 레이블을 가질 수 있다.

        레이블을 분리/생성하기 위해서는, 단지 스페이스바 또는 엔터키를 누르시오.

Create Scenes

장면들(Scenes)은 당신의 게임의 오브젝트들을 포함하고 있다. 그들은 메인메뉴, 각각의 레벨 그리고 다른 어떠한 것들을 생성하기 위해 사용되어질 수 있다. 각각의 유니크한 장면 파일을 하나의 유니크한 레벨처럼 생각하라. 각각의 장면에서, 당신은 당신의 환경요소, 장애물, 장식물, 본질적으로 당신의 게임을 건설하고 디자인하는 것들을 놓을 수 있다.

Instancing Prefabs => 프리팹 인스턴스 만들기.

프리팹을 생성하는 방법은 이전에 설명한 내용대로 하라. 여기서 프리팹에 대한 더 많은 상세정보를 얻을 수 있다. 프리팹을 생성하면, 당신은 인스턴스라 불리우는 프리팹의 복사본들을 빠르고 쉽게 만들 수 있다. 인스턴스를 만들기 위해서, 프로젝트 뷰로부터 Hierarchy 또는 Scene View로 프리팹을 드래그 하라. 이제 당신은 당신이 원하는대로 위치하고 변경된 프리팹의 유니크한 인스턴스를 가지게 된다.

Adding Component & Scripts => 컴포넌트와 스크립트 추가.

당신이 강조표시된 프리팹 또는 게임오브젝트를 가지고 있을 때, 당신은 컴포넌트를 사용함으로써 추가적인 기능들을 추가할 수 있다. 모든 다른 컴포넌트에 대한 상세한 정보는 여기를 보라. 스크립트는 컴포넌트의 한 종류이다.

컴포넌트를 추가함으로써 프리팹과의 연결이 끊어질 경우, GameObject > Apply Changes to Prefab을 이용하여 연결을 복구할 수 있다.

Placing GameObjects => 게임오브젝트 놓기.

게임오브젝트가 장면에 있을 경우, 변형 툴(Transform Tools)을 이용하거나 Inspector 창의 변형 값(Transform Values)을 이용하여 위치, 회전, 확대/축소를 할 수 있다.

Working with Cameras => 카메라와 함께 작업하기.

카메라는 당신의 게임의 눈이다. 플레이어는 하나 이상의 카메라를 통해서 모든 것을 보게 될 것이다. 당신은 카메라를 다른 게임오브젝트처럼 위치시키고, 회전하고, 계층구조로 만들 수 있다. 카메라는 단순히 카메라 컴포넌트를 부착시킨 게임오브젝트에 불과하다. 그러므로 카메라는 일반 게임오브젝트가 하는 어떤 것이라도 할 수 있다. 표준 에셋 패키지(Standard Assets Package)와 함께 설치된 쓸모있는 카메라 스크립트가 있다. 당신은 그것을 메인 메뉴의 Components > Camera-Control에서 찾을 수 있다. 카메라에 대한 자세한 내용은 여기를 보라.

Lights => 빛

몇몇 매우 적은 경우를 제외하고, 당신은 언제나 장면에 빛을 추가해야 필요가 있다. 빛에는 서로 다른 세가지 타입이 존재한다. 중요한 것은 그들은 당신의 게임에 분위기와 기운을 추가한다는 것이다. 빛에 대한 상세한 내용은 여기를 보라.

Publishing Builds

유니티 3D 에디터가 아닌 외부 또는 웹플레이어에서 독립적으로 실행되는 모습을 보고자 할 경우에는 게임을 만드는 도중 언제라도 빌드(Builds)하고 실행(run)해 볼 수 있다.

빌드 설정 윈도웨 접근하기 위해서는 File > Build Settings... 메뉴를 선택하라.

빌드 설정 윈도우

처음 실행하였을 경우에는 비어있는 상태로 나타날 것이다. 리스트가 비어있는 상태에서 빌드할 경우, 현재 열려있는 장면만이 빌드될 것이다.

여러장면을 빌드하기 위해서 리스트에 장면을 추가하는 2가지 방법이 있다. 첫번째 방법은 Add Current 버튼을 클릭하는 것이다. 두번째 방법은 프로젝트 뷰에서 리스트로 드래그하는 것이다.

이 시점에서, 장면들이 각각 서로 다른 인덱스 번호를 가진다는 것을 알아야한다. Scene 0는 게임을 빌드할 때 첫번째로 불러오는 장면이다. 만약 당신이 새로운 장면을 부르기 위해서는 스크립트에서 Application.LoadLevel()을 이용해야 한다.

리스트에서 장면들간의 순서를 바꾸기 위해서는 단순히 원하는 위치로 드래그하기만 하면 된다.

리스트에서 장면을 제거하기 위해서는 선택 후 Delete키를 누르면 된다.

당신이 당신의 빌드를 배포할 준비가 되었다면, 플랫폼을 선택하고 그 옆에 있는 로고를 확인하라. 그리고 Switch Platform 버튼을 눌러 유니티에게 당신이 원하는 빌드 플랫폼을 알게하라. 마지막으로 빌드(Build) 버튼을 눌러라. 당신은 이름과 위치를 선택할 수 있을 것이다. 당신이 Save를 클릭했을 때, 유니티는 조속히 당신의 게임을 빌드한다. 간단하다. 어디에 저장할지 확실하지 않다면, 프로젝트의 루트 폴더에 저장하는 것을 고려봐라. 하지만, Assets 폴더안에는 저장할 수 없다.

Debug build 체크박스가 선택된다면, 프로파일러 기능을 활성화할 것이다. 추가적으로 플레이어는 디버그 심볼을 내장할 것이다. 그러면 당신은 서드 파티의 프로파일링 또는 디버그 툴을 사용할 수 있다.

Desktop => PC 환경

Web Player Streaming => 웹 환경에서의 스트리밍 빌드.

스트리밍 웹 플레이어는 첫번째 장면의 로딩이 끝나면 게임을 시작하고, 다른 장면들은 그 후에 로딩이 된다.

당신이 걱정해야 할 유일한 것은 다음 레벨(장면)을 로드하기 전에 현재 스트리밍하는 것이 끝나는 것이다.

일반적으로 스트리밍 환경이 아닐 경우에는 다음 코드를 이용하여 레벨을 불러올 수 있다.

Application.LoadLevel(“levelName”);

스트리밍 웹 플레이어에서, 당신은 반드시 레벨의 스트리밍이 완료되었는지를 먼저 체크해야 한다. 이것은 아래와 같이 수행할 수 있다.

var levelToLoad = 1;

function LoadNewLevel () {
        if (Application.CanStreamedLevelBeLoaded (levelToLoad)) {
                Application.LoadLevel (levelToLoad);
        }
}

Building Standalone Players => 독립 실행형 빌드.

유니티에서 윈도우 또는 매킨토시를 위한 독립형 프로그램을 빌드하는 것은 단순히 빌드 설정에서 타겟을 지정하는 것 뿐이다. 윈도우에서 빌드의 결과물은 실행파일(.exe)과 게임에 필요한 모든 자원을 포함하고 있는 데이터 폴더가 될 것이다. 매킨토시에서는 app bundle이 내장되고 모든 자원들과 같은 게임을 실행하기 위해 필요한 파일들을 포함할 것이다.

매킨토시에서 배포할 경우에는 단순히 app bundle(모든 것이 패키지 되어있다.)를 제공하라. 윈도에서는 실행파일(.exe)과 데이터 폴더를 제공할 필요가 있다.

Inside the build process => 빌드 과정 들여다보기.

장면에 있는 어떤 게임오브젝트라도 “EditorOnly” 태그가 있을 경우에는 빌드에 포함되지 않을 것이다. 이것은 최종 게임에는 포함하지 않으면서 스크립트를 디버깅하기 위해 유용하다.

새로운 레벨이 로드되면, 이전 레벨에 있던 모든 오브젝트는 파괴된다. 이것을 방지하기 위해, 파괴되지 않기를 원하는 오브젝트에 DontDestroyOnLoad()를 사용하라. 이것은 레벨을 로드하는 동안 음악을 재생하거나 게임 상태와 과정을 유지하기 위한 게임 컨트롤러 스크립트를 위해 가장 많이 사용된다.

새로운 레벨의 로딩이 끝나면, OnLevelWasLoaded() 메시지가 모든 게임오브젝트에게 보내진다.

You’re ready to build games => 당신은 게임을 빌드할 준비가 되었다.

유니티를 사용하는 더 자세한 방법을 얻기 위해서는 매뉴얼을 계속 읽기 또는 튜토리얼을 따라하라.

컴포넌트에 대해서 더 자세한 공부를 하기 위해서는 컴포넌트 참고서를 읽어라.

스크립트에 대해서 더 자세한 공부를 하기 위해서는 스크립트 참고서를 읽어라.

예술적인 에셋을 만드는 것에 대한 더 많은 정보는 매뉴얼의 에셋 섹션을 읽어라.

유니티 사용자 및 개발자들과 커뮤니티를 위해 유니티 포럼을 방문하라.

반응형
: