이 영역을 누르면 첫 페이지로 이동
Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

페이지 맨 위로 올라가기

Coding Groot

코딩 블로그

[유니티] Unity 입문하기 2 :: 기본 개념 및 Script 소개

  • 2019.12.25 03:23
  • Game Programming/Unity Tutorial
글 작성자: Coding Groot

이번 글에서는 유니티를 사용하기 위해 알아야 할 기본적인 개념들을 설명하겠습니다.

1. Scene

4개의 Scene을 만들어봤다

Scene은 한국어로 장면입니다. 유니티에서도 똑같이 하나의 레벨 또는 스테이지를 뜻 합니다. 하나하나의 Scene 파일들에 우리가 만들어가는 게임 장면들이 들어갑니다. 그리고 참고로 Scene파일의 확장자는 .unity입니다.

예시로 4개의 Scene을 만들어 봤습니다. 한번 StartScene.unity, Level1.unity, Level2.unity Scene들을 열어볼까요?

StartScene을 열었음
Level1을 열었음
Level2를 열었음

보시다시피 Scene들은 서로 다른 세상(World)입니다.

2. GameObject

Hierarchy창에 있는 모든 애들이 게임 오브젝트

Hierarchy창에 있는 모든 애들이 게임 오브젝트입니다. Main Camera, Directional Light, 제가 방금 추가한 House, Sphere 모두 다 게임 오브젝트입니다.

유니티에서 게임 오브젝트는 한마디로 Box입니다. 기능을 담는 박스입니다.
예를 들어서, 제가 카메라를 만들고 싶으면 빈 게임 오브젝트를 만들고 카메라 기능을 넣으면 됩니다.

유니티에서 기본으로 생성해준 Main Camera 게임 오브젝트를 살펴봅시다.
제가 앞에서 Inspector창은 게임 오브젝트를 클릭하면 기능들을 보여준다고 했었습니다. Main Camera를 클릭하면 우측의 Inspector창에서 Main Camera의 기능들이 다 보입니다.

Main Camera의 기능들

보시면 Main Camera라는 이름의 박스(게임 오브젝트)가 Transform, Camera, GUILayer, Flare Layer, Audio Listener의 기능을 가지고 있다는 것을 Inspecter창에서 확인할 수 있습니다. 아직은 저 많은 기능들이 뭔진 모르겠지만 차근차근히 알게 될 것입니다. 일단은 Main Camera의 역할을 하기 위해 Camera기능을 담고 있다는 것은 이해가 될 겁니다.

마지막으로 게임 오브젝트는 중요한 특징이 있습니다. 모든 게임 오브젝트는 Transform이라는 기능을 가지고 있다는 것입니다. 그 이유는 이 게임 오브젝트는 World( = Scene 안의 세상)에 존재합니다. 그러려면 최소한 자신의 World 상의 위치 또는 자신의 크기를 정보 정도는 가지고 있어야 합니다. Transform이라는 기능은 위치, 회전, 크기와 관련된 것을 조정합니다. 그렇기 때문에 모든 게임 오브젝트는 Transform을 항상 가지도록 되어있습니다.

3. Component

자주 사용할 Component(기능)들의 종류

Component는 한국어로 구성요소라는 뜻입니다. 게임 오브젝트의 구성요소라는 뜻입니다. 제가 위에서 게임 오브젝트는 여러 가지 기능들을 구성요소로 하는 Box라고 말했습니다. 그 각각의 기능들을 유니티에서는 Component라고 부릅니다. 이제부터 기능이라는 단어 대신 유니티의 단어인 Component라고 말하겠습니다. 위에 제가 대표적으로 많이 쓰이는 Component들을 나열해놨습니다. 게임 오브젝트가 충돌할 수 있게 하는 콜라이더, 제가 게임을 실행했을 때의 볼 창을 위한 카메라, 사운드가 들리는 곳을 설정하기 위한 오디오 리스너(위의 사진에 적은 사운드 리스너는 오타입니다 ㅠㅠ 오디오 리스너입니다!!), 위치, 회전, 크기, 등을 위한 트랜스폼, 물리적인 상호작용을 위한 리지드 바디, 내가 정의하는 기능인 스크립트가 있습니다.

Component는 여러 가지의 값(변수)들로 구성되어 있습니다.

Transform Component

위의 Transform Component를 보면 위치나 회전이나 크기를 표현하기 위해 X, Y, Z를 표현하기 위한 값(변수)을 쓰는 것을 확인할 수 있습니다. (이처럼 게임 오브젝트의 컴포넌트를 확인하고 싶으면 그냥 대상 게임 오브젝트를 클릭하면 Inspector창에 뜹니다.)

4. Script

스크립트 생성시 기본 모습

Script는 Component의 설계 도면입니다. 유니티에서 제공해주는 기본 Component가 아니라 우리가 만들어서 쓰는 것입니다.

물론 유니티에서 제공해주는 Component만으로도 많은 것들을 할 수 있습니다. 하지만 우리는 게임을 만들기 위해서 유니티를 사용합니다. 보통 우리가 원하는 게임을 만들려다 보면 유니티에서 제공해주는 기본 Component만으로는 충분하지 않을 때가 대부분입니다. 그래서 우리가 Script로 기능을 구현해서 사용하는 겁니다. 저는 이것이 유니티의 핵심 중의 하나라고 생각합니다. 프로그래밍(Script를 만드는 것)을 통해 수많은 것들을 할 수 있게 됩니다.

Script를 만들면 사용자의 키보드나 조이스틱, 등의 입력에 반응할 수 있고 특정 시간에 이벤트를 발생시킬 수도 있고 정말 많은 것들을 할 수 있습니다. 그런 Script에 대해서 간단하게 설명해보겠습니다.

Script를 생성하면 위에 첨부한 사진처럼 Start()와 Update() 메서드가 자동으로 생성되어 있습니다.

▶ Start() 메서드는 뭘까요?

  • 유니티가 자동으로 호출해주는 메서드 중 하나입니다.
  • 게임이 시작할 때 딱 한 번만 호출됩니다.
  • Update() 메서드가 호출되기 직전에 호출됩니다.
  • 주로, 초기화와 같은 작업을 할 때 많이 쓰게 됩니다.

▶ Update() 메서드는 뭘까요?

  • 유니티가 자동으로 호출해주는 메서드 중 하나입니다.
  • 매 프레임마다 호출됩니다.
    • Frame이란?
    • 혹시 FPS(Frame Per Second)라는 것을 들어보셨나요?
    • N FPS라는 말은 1초마다 N개의 Frame이 일어난다라는 뜻입니다.
    • 예를 들어서, 60 FPS이면 1초에 60번 Update 메서드가 호출됩니다.

Start와 Update 메서드 말고도 유니티가 자동으로 호출해주는 특별한 메서드가 여러 개 있습니다. 우리는 그러한 메서드들을 이용해서 사용자들의 Input에 반응하고 Component들의 값을 조정하며 원하는 게임을 만들게 됩니다.

반응형

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [유니티] Unity 입문하기 5 :: Tag와 Name으로 게임 오브젝트 찾기

    [유니티] Unity 입문하기 5 :: Tag와 Name으로 게임 오브젝트 찾기

    2020.02.22
  • [유니티] Unity 입문하기 4 :: Transform, Rigidbody로 게임 오브젝트 이동시키기

    [유니티] Unity 입문하기 4 :: Transform, Rigidbody로 게임 오브젝트 이동시키기

    2020.02.22
  • [유니티] Unity 입문하기 3 :: Scripting 기초, Time.deltaTime

    [유니티] Unity 입문하기 3 :: Scripting 기초, Time.deltaTime

    2020.01.04
  • [유니티] Unity 입문하기 1 :: 유니티 설치 및 화면 구성

    [유니티] Unity 입문하기 1 :: 유니티 설치 및 화면 구성

    2019.12.24
다른 글 더 둘러보기

정보

Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

  • Coding Groot의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록
  • 소개
  • 블로그 저작권

카테고리

  • 분류 전체보기 (188)
    • Git (23)
      • Git Tutorial (9)
      • Git Note (7)
      • Git Lecture (7)
    • Programming Language (1)
      • C (2)
      • C Sharp (5)
      • Java (4)
      • JavaScript (7)
      • Julia (5)
      • Python (4)
    • Programming (8)
      • Algorithm (2)
      • Compiler (5)
      • Data Structure (0)
      • Web (12)
      • NestJS (2)
    • DevOps, Infra (36)
      • Apple (6)
      • Cloud (15)
      • Database (1)
      • Network (4)
      • Linux (8)
    • Game Programming (11)
      • Unity Tutorial (5)
      • Unity Note (6)
    • Hardware Design (1)
      • Digital Circuit (1)
    • Note (20)
      • Coffee (2)
      • Retrospect (15)
      • Reading List (14)
    • Mathematics (1)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 서평
  • tutorial
  • git
  • javascript
  • 회고
  • Github
  • 한빛미디어
  • aws
  • 전체 보기…

정보

Coding Groot의 Coding Groot

Coding Groot

Coding Groot

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기

나의 외부 링크

  • GitHub
  • SlideShare
  • 유니티 2020 수업
  • TIL Blog
  • 모도코

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. Copyright © Coding Groot.

티스토리툴바