멋쟁이사자처럼/유니티 게임 개발 3기

[멋쟁이사자처럼 부트캠프 TIL 회고] 유니티 게임 개발 3기 2일차

MaterialStone 2024. 11. 22. 21:11
namespace UnityGameDevelopment.Day2 {
    public class Outline {
    	public static string Chapter1 = "게임 엔진과 유니티";
        public static string Chapter2 = "게임 수학 기초";
        public static string Chapter3 = "유니티 C# 프로그래밍 기초 1";
        public static string Chapter4 = "유니티 에디터: 레이아웃";
    }
}

 

 

1. 게임 엔진과 유니티

유니티를 배우기 이전에 게임 엔진이 무엇인지, 유니티는 어떤 게임 엔진인지 알아보겠습니다.


게임 엔진

비디오 게임 같은 실시간 그래픽 표시 기능을 갖춘 상호 작용 응용 프로그램을 구현하는 핵심 소프트웨어 구성 요소를 말한다.

위키피디아

 

위키피디아에 따르면, 컴퓨터 게임 개발에 바탕이 되는 기술을 제공하여 개발 과정을 단축시켜 줄 뿐 아니라, 게임을 다양한 플랫폼에서 실행할 수 있게 해주기도 한다고 합니다. 근래에 와서 게임 엔진이 제공하는 기능이 정말 많아져서, 이제는 게임 개발할 때 게임 엔진은 필수적인 요소로 자리잡았습니다.

유니티 게임 엔진

유니티

 

유니티는 Unity Technologies가 2005년 6월 8일 처음으로 출시된 게임 엔진입니다. 주로 저사양/소규모 게임의 개발에 적합하고, 특히 가벼운 모바일 게임에 많이 사용됩니다. 프로그램은 C++로 구현되었고, 내부에서 사용하는 스크립트는 C#으로 구현할 수 있습니다.

 

유니티는 렌더링, 물리, UI, 애니메이션, 사운드 등의 다양한 기능들을 포함하고 있습니다. 지원하는 플랫폼은 윈도우, 맥, 리눅스뿐만이 아니라 모바일, 플레이스테이션, 닌텐도 등 다양한 플랫폼을 지원합니다.

 

유니티는 에셋 스토어도 지원하고 있으므로, 개발에 필요한 에셋을 쉽게 얻을 수 있습니다.

 

2. 게임 수학 기초

게임을 개발할 때는 수학이 필수입니다. 이번 장에서는 게임 개발에 필요한 수학의 기초를 간략히 알아보겠습니다.


수의 표현

수의 체계

수는 위와 같은 체계로 구성되어 있습니다.

 

자연수는 수를 셀 때나 순서를 매길 때 사용하는 수입니다. 자연수에는 1, 2, 3 등이 있습니다.

정수는 양의 정수(자연수), 0, 음의 정수로 이루어진 수입니다. 음의 정수는 -1, -2, -3 등이 있습니다.

유리수는 두 정수의 비율 혹은 분수의 형식으로 나타낼 수 있는 수입니다. 단, 분모가 0이 어야합니다. 분모가 1일 수 있으므로 정수는 모두 유리수입니다.

무리수는 소수점 이하로 같은 수의 배열이 반복적으로 나타나지 않는 무한소수입니다. 무한소수는 소수점 아래에 0이 아닌 숫자가 무한히 나타나는 소수입니다. 이 수는 분수의 형태로 나타낼 수 없습니다. 무리수에는 파이, e 등이 있습니다.

 

수직선

유리수와 무리수를 통틀어 실수라고 합니다. 좌표축을 꽉 채울 수 있는 수의 집합이라고도 합니다.

60분법은 한 바퀴를 360도로 표현하는 방법입니다. 단위는 °(도)를 사용합니다.

호도법

호도법은 한 바퀴를 2π로 표현하는 방법입니다. 단위는 rad(라디안)을 사용하거나 생략 가능합니다.

1rad은 반지름의 길이가 R일 때 호의 길이를 R로 만드는 각의 크기입니다. 위 그림에서는 반지름의 길이 R이 1일 때를 나타냅니다. R은 1이 아닌 수이어도 됩니다. 그 이유는 각 θ는 반지름과 호의 길이의 비로 표현되기 때문입니다.

삼각비

삼각비

삼각비는 삼각형의 세 변의 길이 중 두 변의 길이간의 비례 관계를 나타내는 값입니다.

삼각함수

단위원과 삼각함수

삼각함수는 삼각비에서 쓰이는 정의역을 예각에서 일반각으로 확장한 것입니다.

벡터와 차원

벡터는 수학과 물리학에서 벡터는 단일 숫자로 표현할 수 없는 양이나 일부 벡터 공간의 요소를 가리키는 용어입니다. 크기와 방향 모두로 표현되어야합니다.

 

차원은 벡터의 성분의 개수입니다. 다시 말해서, 벡터가 몇개의 숫자로 표현되는지에 대한 값입니다. 2차원 벡터는 두 개의 숫자로 표현되고, 3차원 벡터는 3개의 숫자로 표현됩니다.

 

3. 유니티 C# 프로그래밍 기초 1

예약어

예약어는 컴파일러에 대해 특별한 의미를 갖는, 미리 정의되어 있는 예약된 식별자입니다. 이를 키워드(keyword)라고도 합니다.

 

아래 표는 C#에서 사용하는 예약어를 나열한 표입니다.

abstract event namespace static as explicit new string
base extern null struct bool false object switch
break finally operator this byte fixed out throw
case float override ture catch for params try
char foreach private typeof checked goto protected uint
class if public ulong const implicit readonly unchecked
continue in ref unsafe decimal int return ushort
default interface sbyte using delegate internal sealed virtual
do is short void double lock sizeof volatile
else long stackalloc while enum      

 

이외에도 몇가지 예약어는 여기에서 확인할 수 있습니다.

 

네임스페이스

네임스페이스(Namespace)는 관련 개체 집합을 포함하는 범위를 선언하는 데 사용됩니다. 네임스페이스를 사용하여 코드 요소를 구성하고 전역적으로 고유한 형식을 만들 수 있습니다.

유니티 공식 문서

 

namespace SampleNamespace
{
    class SampleClass { }

    interface ISampleInterface { }

    struct SampleStruct { }

    enum SampleEnum { a, b }

    delegate void SampleDelegate(int i);

    namespace Nested
    {
        class SampleClass2 { }
    }
}

 

위와 같이 네임스페이스를 만들고 안에 클래스나 인터페이스 등 여러가지 코드 요소를 담을 수 있습니다.

 

코드 블럭과 들여쓰기

코드 블럭

코드 블럭은 특정한 동작을 위해서 코드가 모여 있는 상태를 의미합니다. 간단히 말해서, 코드 집합을 말합니다.

{
    // 여기에 코드를 작성합니다.
    // 중괄호 문자는 키보드에서 영문자 'p'의 오른쪽에 있습니다.
}

 

코드 줄을 그룹화하거나 변수의 접근성을 제어하거나 제한합니다. 변수의 접근성은 변수를 설명할 때 자세하게 다룹니다.

들여쓰기

가독성을 위해, 코드 블럭 내부에서는 바깥쪽의 들여쓰기 정도보다 한번 더 들여씁니다.

{
    // 바깥쪽 코드
    {
    	// 안쪽 코드
    }
}

 

주석

주석은 코드 상에 작성하는 메모입니다. 한 줄 주석과 여러 줄 주석이 있습니다.

한 줄 주석은 //로 시작하고 해당 코드 줄의 끝에서 끝납니다.

여러 줄 주석은 /*로 시작하고 */로 끝납니다. 코드의 중간에 작성할 수도 있습니다.

// 한 줄 주석
/*
    여러 줄 주석
    여러 줄을 작성할 수 있습니다.
*/

int totalCount = 1 /* apple count */ + 5 /* banana count */;

 

식별자

식별자는 형식(클래스, 인터페이스, 구조체, 대리자 또는 열거형), 멤버, 변수 또는 네임스페이스에 할당하는 이름입니다.

유니티 공식 문서

 

식별자는 클래스, 인터페이스 등을 구분지을 수 있게 붙이는 이름입니다. 길이 제한이 없고 대소문자를 구분합니다. 숫자로 시작하면 안된다는 규칙이 있으며, underscore(_) 문자 이외의 특수문자는 사용할 수 없습니다.

int _value;
bool is_digit;
float healthRatio;
double legAngle2;

 

식별자 표기법에는 다음과 같이 대표적으로 4가지가 있습니다.

  • 카멜 표기법
  • 파스칼 표기법
  • 스네이크 표기법
  • 헝가리안 표기법

카멜 표기법은 첫 문자를 소문자로 표기하고 이후 단어들의 첫 문자를 대문자로 표기합니다.

int camelCase;

 

파스칼 표기법은 단어의 첫 시작은 항상 대문자를 사용하는 표기법입니다. '쌍봉낙타표기법'이라고 불립니다.

class PascalCase {}

 

스네이크 표기법은 단어 사이에 underscore(_)를 활용하는 표기법입니다.

string user_name;

 

헝가리안 표기법은 변수 및 함수의 인자 이름 앞에 데이터 타입을 명시하는 표기법입니다.

int nAppleCount; // n은 int형 변수를 나타냅니다.
class Test {
    string m_Title; // m_은 멤버 변수를 나타냅니다.
}

 

 

4. 유니티 에디터: 레이아웃 설정

유니티 에디터 기본 레이아웃

유니티 에디터를 처음 실행하면 위와 같은 레이아웃을 보여줍니다.

레이아웃 선택

유니티에서 제공하는 레이아웃이 몇가지 있습니다. 화면 오른쪽 상단에 레이아웃을 선택할 수 있는 드롭다운 상자가 있습니다.

레이아웃 선택

위 6가지 레이아웃 중 하나를 골라서 레이아웃을 변경할 수 있습니다.

 

탭을 드래그하는 모습

또한 위 이미지처럼 각 탭의 제목 부분을 마우스로 드래그하여 레이아웃을 이동하여 변경할 수 있습니다.


실습 및 응용

▶ 유니티 에디터에서 자신의 스타일에 맞는 레이아웃으로 변경해보기

레이아웃 커스터마이징

처음에 2 by 3로 레이아웃을 변경했습니다. 스크립트로 출력하는 로그를 확인할 수 있는 콘솔 뷰를 보기 위해 단축키 Ctrl+Shift+C로 추가하고 아래에 배치하였습니다.