[Unity] Introduction

Lingtea_luv·2025년 4월 14일
0

Unity

목록 보기
1/30
post-thumbnail

Engine


게임 엔진은 개발에 필요한 다양한 기능을 제공해주는 도구이자 프레임워크 즉, 프로그래밍에 필요한 기능 모듈을 의미한다. 범용적으로 많이 사용되는 기능과 재사용성이 있는 코드를 모아 놓은 엔진은 주기적인 업데이트를 통해 새로운 기능이 지속적으로 추가되고 보완된다.

상용 게임 엔진

과거 doom이라는 게임이 나오면서부터 서서히 고급 기술의 필요성을 체감하기 시작했고, 이는 게임 엔진만을 개발하는 회사가 나오게 된 계기가 되었다. 이후 자사 게임 개발 목적이 아닌 게임 엔진 자체를 판매하기 위한 목적을 가진 상용 게임 엔진 개념이 도입되었다.

상용 게임 엔진을 사용하는 이유는 3가지로 볼 수 있다.

  1. 비용 절감
  2. 통일된 개발 환경
  3. 전문적 기술 도입

게임 엔진에 대한 이해의 필요성

게임 프레임 워크

단순히 게임이 돌아간다가 아닌 게임이 어떻게 해서 돌아가는지 파악해야한다.
게임 루프, 컴포넌트 구조, 랜더링 파이프라인 등 게임에 필요한 핵심 로직을 기반으로 프로그래밍할 필요가 있다.

생산성 향상

게임 엔진에는 게임에 공통적으로 필요한 기능인 라이브러리가 존재한다. 이 경우 최적화를 위해 시스템 코드가 포함된 경우가 있으며 이를 사용하기 위해서는 게임 엔진에 대한 이해도가 필요할 것이다.

기능 변경

보통 게임 엔진의 기능을 매뉴얼에 맞추어 사용하겠지만, 프로젝트에 따라 기존 기능을 변경해야하는 경우도 다수 발생한다. 당연히 이 경우도 게임 엔진에 대한 이해가 수반된다.

Unity


굉장히 많은 상용 게임 엔진이 존재하지만, 우리는 게임을 만들기 위한 툴로써 유니티 엔진을 사용할 것이다.

Version [ 2022.3.61f1 LTS ]

f : 안정화가 이루어진 버전

LTS : Long Term Surport

Interface

1. Scene

게임 내 공간을 개발자가 시각적으로 탐색하고 편집할 수 있는 공간이다.

2. Game

실행 시 실제로 게임 화면으로 렌더링되는 화면이다. 게임 내의 카메라를 통해 렌더링 되며, 카메라는 Scene에서 조정이 가능하다.

3. Hiearchy

scene에 있는 모든 오브젝트들을 계층 구조로 관리하는 창이다.

4. Inspector

오브젝트 선택 시 해당 오브젝트의 속성 및 설정을 볼 수 있는 창으로 여기서 컴포넌트를 추가하여 오브젝트를 수정할 수 있다.

5. Console

테스트 진행 중 발생하는 모든 로그 및 에러의 이력을 확인할 수 있다.

6. Project

해당 프로젝트 내의 모든 파일과 에셋을 보여주는 창이다. 유니티 프로젝트에 파일을 추가할 때는 반드시 프로젝트 창에서 추가한다.

GameObject

게임 내의 모든 것을 게임 오브젝트라고 칭하며, 게임 오브젝트는 고유의 컴포넌트를 가지고 있다. 우리는 오브젝트마다 컴포넌트를 추가하거나 수정하며 각 오브젝트의 특징을 살려 게임의 유니크한 재미를 더할 수 있다.

Component

게임 오브젝트가 가지고 있는 기능 및 속성을 의미한다. 컴포넌트마다 독립적인 속성을 가질 수 있도록 하여 오브젝트에 컴포넌트를 추가함으로써 유연한 생성이 가능하다.

MonoBehaviour

드래그를 통해 컴포넌트로 붙여 동작시킬 수 있다.

Serializion

데이터 구조 또는 게임오브젝트를 보관하고 관리하는 기법.
인스펙터 창에서 오브젝트의 직렬화된 멤버변수 값을 보여주며 소스코드의 수정없이 유니티 에디터에서 값을 바꿀 수 있다

Message Method

유니티가 보내는 메세지에 반응하는 함수로 각 컴포넌트는 메세지 함수에서 자신의 행동을 정의하여 기능을 구성한다.

스크립트는 유니티 엔진이 보내는 메세지를 받아 사건 타이밍을 확인하고 MonoBehaviour 클래스의 메세지와 같은 이름의 함수가 반응한다.

Life Cycle


게임은 체계적이고 복잡한 연산을 통해 이루어지는 프로그램이다. 유니티는 라이프 사이클을 통해 프레임 단위로 이루어질 동작, 연산들을 수행하고 플레이어에게 그래픽으로 결과를 보여준다.

게임 성능 최적화란 적은 자원을 소모하면서 더 큰 퍼포먼스를 보여주는 것으로 라이프 사이클을 잘 이해한다면 최적화를 어떻게 수행할지 알 수 있을 것이다.

이벤트 함수

유니티 엔진은 1프레임 단위로 내부의 동작이 실행되며, 어떤 동작을 수행할지 이벤트 함수로 정할 수 있다.

1. Awake()

스크립트가 씬에 포함되어있을 때, 비활성화 되어있어도 반드시 1회 호출된다.
외부 게임 상황과 무관한 초기화 작업을 위해 사용된다.

2. Start()

씬의 모든 오브젝트의 Awake가 진행된 후 활성화되어있는 경우에 호출된다.
씬 내 다른 오브젝트와의 상호작용을 고려한 초기화 작업을 위해 사용된다.

3. OnEnable()

스크립트가 활성화 되었을 때 호출된다.

4. OnDisable()

스크립트가 비활성화 되었을 때 호출된다.

5. Update()

매 프레임마다 1회 호출되며, 오브젝트와 스크립트의 생존 및 활성화 시에만 동작한다.

6. LateUpdate()

씬의 모든 오브젝트의 Update가 진행된 후 호출된다.
게임 프레임의 진행 결과가 필요한 동작이 있는 기능 구현에 사용된다.

7. FixedUpdate()

일정한 시간마다 호출되어 프레임당 연산과 단위시간이 일정하다.
물리 엔진과 같이 게임의 프레임과 무관하게 일정해야하는 작업에'만' 사용된다.

8. Ondestroy()

오브젝트가 파괴되었을 때 1회 호출된다.

profile
뚠뚠뚠뚠

0개의 댓글