2024-03-20
유니티로 만드는 게임개발 종합반 강의를 사전 캠프의 Unity 강의 자료로 제공 받았다.
작년에 유니티로 만드는 게임개발 종합반 강의를 이미 수강했기에 큰 어려움은 없었지만,
당시에 "그런가보다" 하고 넘어갔던 부분에 집중하며 강의를 들을 수 있었다.
전체적인 강의의 흐름과 강의에서는 다루지 않았지만 궁금했던 내용 위주로 포스팅하고,
앞으로도 쓸 일이 많은 C# 코드와 컴포넌트는 다른 글에 포스팅 해야겠다.
Animation 을 생성하면 Inspector 창에 다음과 같은 정보가 표기된다.
강의에서는 Loop Time 을 체크하여 Rtan이 걸어다니는 애니메이션이 반복되게 설정해주었다.
| 기능 | 설명 |
|---|---|
| Loop Time | 애니메이션 클립을 끝까지 재생하고, 끝에 도달하면 다시 재생을 시작 |
| Loop Pose | 모션을 자연스럽게 반복 |
| Cycle Offset | 반복 재생 애니메이션의 사이클 오프셋. 애니메이션이 다른 시간에 시작하는 경우 설정 |
Inspector 하단 공간에 Hierarchy 창에서 Rtan을 끌어다 놓으면 애니메이션이 적용된 모습을 볼 수 있다.
| Insepector 하단 | 실행 화면 |
|---|---|
![]() | ![]() |
모든 게임 오브젝트의 작동과 관련된 부품.
각 컴포넌트마다 게임 오브젝트의 동작을 정의하기 위해 편집할 수 있는 속성이 포함되어 있다.
게임 오브젝트의 움직임과 위치를 제어하는 물리 기반 법칙을 제공한다.
게임 오브젝트에 비치는 광원의 강도, 방향, 색상 등의 정보를 제공한다.
물리적 충돌을 위해 2D 게임 오브젝트 모양을 정의한다.
충돌을 구현하기 위해서는 한 쪽에 Rigidbody 2D 컴포넌트를, 양 쪽에 Collider 2D 컴포넌트를 부여
씬의 게임 오브젝트에 애니메이션을 할당한다.
오브젝트에 스크립트를 추가하여 동작이나 역할을 부여할 수 있다.
Create - C# Script 를 통해 스크립트를 생성하면 다음과 같은 기본 코드가 생성된다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
Start( ) 는 오브젝트가 생성될 때, Update( ) 는 프레임 마다 호출된다고 주석이 달려있다.
Awake( ), FixedUpdate( ) 등의 함수는 이벤트 함수가 맞긴 하지만, 보통 라이프 사이클 이라고 부르고, OnCollisionEnter 과 같은 함수를 이벤트 함수 라고 한다. (By 매니저님 )
게임플레이 중에 발생하는 이벤트에 대응하여 Unity에서 활성화되기 때문에 이벤트 함수라고 한다.
강의 후반부에 Awake( ), FixedUpdate( ) 등의 이벤트 함수가 쓰이길래, 어떤 차이가 있는지 찾아보고 자주 사용될 것 같은 함수 위주로 정리해보았다.
| 이벤트 함수 | 설명 |
|---|---|
| Awake( ) | Start( ) 보다 먼저 실행 , 프리팹이 인스턴스화 된 직후에 호출 |
| Start( ) | 스크립트 인스턴스가 활성화된 경우에만 첫 번째 프레임 업데이트 전에 호출 |
| Update( ) | 프레임 당 한 번 호출 , 프레임 업데이트를 위한 주요 작업 함수 (불규칙한 호출) |
| FixedUpdate( ) | Fixed Timestep 에 설정된 값에 따라 일정한 간격으로 호출 (물리 효과가 적용된 오브젝트 조정 시 사용) |
| LateUpdate( ) | Update( ) 가 끝난 후 프레임 당 한 번 호출 (일반적으로 3인칭 카메라에 사용) |
| Reset( ) | 오브젝트에 처음 연결하거나 스크립트의 속성을 초기화하기 위해 호출 |
| OnDestroy( ) | 오브젝트 존재의 마지막 프레임에 대해 모든 프레임 업데이트를 마친 후 호출 |
| OnApplicationQuit( ) | 애플리케이션 종료 전 모든 게임 오브젝트에서 호출 , 플레이 모드를 중지할 때 호출 |
| OnDisable( ) | 동작이 비활성화되거나 비활성 상태일 때 호출 |
프로젝트가 실행되는 동안 어떤 일이 일어나고 있는지 파악하거나 조사하는 데 도움이 되는 정보를 에디터에서 시각화하는데 사용한다.
Debug.Log("This is a log message.");
Debug.LogWarning("This is a warning message!");
Debug.LogError("This is an error message!");
하나의 인스턴스만 생성하여 사용하는 디자인 패턴.
결과물
Unity Documentation 에 많은 정보가 있으니 참고하면 좋을 것 같다.