레트로의 유니티 게임 프로그래밍 에센스 - 4.3

Cosmos·2023년 3월 28일
0

학습 매체 : 책

책이름 : 레트로의 유니티 게임 프로그래밍 에센스

저자 : 이제민


본 내용은 해당 강의 내용을 공부하면서 정리한 글입니다.


4.3 첫 스크립트 작성하기


4.3.1 새 프로젝트 생성하기

  • 프로젝트 이름 : 'Hello Coding'

  • Windows > General > Console : 콘솔창 띄우기

  • 콘솔 창에서 Collapse 탭 비활성화 하기 : Collapse가 활성화 되어 있으면 같은 내용의 로그들이 하나로 묶인다. 따라서 로그 출력 순서를 확인하기 불편하다.


4.3.2 첫 C# 스크립트 파일 작성하기

  1. 프로젝트 창 왼쪽 상단의 + > C# Script 클릭

  2. 생성된 스크립트 파일의 이름HelloCode로 변경

  • 생성한 HelloCode 스크립트 파일을 프로젝트 창에서 더블 클릭한다. 그러면 코드 편집기(비쥬얼 스튜디오)에서 코드가 열린다.

  • 열린 HelloCode 스크립트에는 다음과 같이 자동 생성된 코드가 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HelloCode : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

C# 스크립트 파일명을 변경할 때 주의할 점

  • 새로운 C# 스크립트를 생성하면 파일명에 맞춰 스크립트의 클래스명이 자동으로 결정된다. 예를 들어, HelloCode라는 C# 스크립트 파일을 생성하면 스크립트 내의 클래스명 또한 public class HelloCode 같은 형식으로 자동 설정된다.
  • 따라서 새 스크립트를 생성하면 파일명 NewBehaviourScript에서 다른 이름으로 즉시 변경하는 게 좋다.
  • 나중에 C# 스크립트의 파일명을 변경하면 변경한 파일명에 맞춰 기존 코드의 내용이 자동 수정되지 않는다. 유니티 C# 스크립트는 파일명과 스크립트 내의 클래스명이 다르면 제대로 동작하지 않는다. 이미 생성된 C# 스크립트의 파일명을 나중에 바꾸면 스크립트에 선언된 클래스명도 파일명과 일치하도록 직접 수정해야 한다.


4.3.3 스크립트 구성 살펴보기

  • 코딩을 하기 전 자동으로 생성된 스크립트가 어떻게 구성되어 있는지 살펴본다. HelloCode 스크립트에서 지금은 사용하지 않을 부분을 지워서 정리하자.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HelloCode : MonoBehaviour
{
    void Start()
    {
        
    }
}
  • 전체 스크립트가 using, class Start() 세 부분으로 구성되어 있다.

  • class는 5장에서 다룬다. 여기서는 using과 Start()를 살펴보겠다.

using

  • using 키워드를 이용하여 사용할 라이브러리의 경로를 지정하면 해당 라이브러리에 들어 있는 코드를 가져와서 사용할 수 있다. 여기서 using 뒤의 경로를 네임스페이스(namespace)라고 한다.
  • C#과 유니티는 개발에 필요한 여러 라이브러리를 네임스페이스로 제공한다. 예제 코드의 using UnityEngine;은 UnityEngine 네임스페이스에 존재하는 코드를 가져와서 사용한다는 의미이다.

Start() 메서드

  • Start() 메서드는 코드 실행이 시작되는 시발점을 제공한다.
  • 유니티에는 상황에 맞춰 자동으로 실행되는 메서드인 유니티 이벤트 메서드가 있다. Start() 메서드가 대표적인 유니티 이벤트 메서드이다. Start()는 게임이 시작될 때 자동으로 한 번 실행된다. 따라서 게임 시작과 함께 실행될 코드를 Start() 메서드 안에 넣으면 된다.

4.3.4 Hello World!

  • 프로그래밍을 처음 배울 때는 Hello World!라는 문장을 화면에 출력하는 전통이 있다. Hello World!를 출력해보자.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HelloCode : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("Hello World!");
    }
}
  • Start() 메서드 안에 Debug.Log("Hello World!");를 추가했다. 세미 콜론을 빼먹지 않도록 주의하자.

  • 변경된 코드를 저장하지 않으면 유니티 프로젝트에 반영되지 않는다. 따라서 반드시 저장해야 한다.


  • HelloCode 스크립트 저장

  1. 코드 편집 창에서 스크립트 저장(단축키 : [Ctrl + s])

  2. 코드 편집 창을 닫거나 최소화 > 유니티 에디터 창으로 돌아가기

  • 스크립트를 완성했다고 해서 코드가 동작하는 것은 아니다. 이 상태로는 HelloCode 스크립트가 단순한 텍스트 파일이기 때문이다.

  • 완성된 스크립트를 동작하고 싶다면 '게임 월드에 존재하는 오브젝트'로 만들어야 한다. 그러기 위해서는 스크립트를 게임 오브젝트에 컴포넌트로 붙여 넣어야 한다. 빈 게임 오브젝트를 생성하고 작성한 HelloCode 스크립트를 붙인다.


  • HelloCode 스크립트를 게임 오브젝트에 추가

  1. 하이어라키 창에서 + > Create Empty 클릭
    -> 빈 게임 오브젝트(GameObject)가 생성됨

  2. 프로젝트 창의 HelloCode 스크립트를 하이어라키 창GameObject드래그&드롭


  • HelloCode 스크립트 실행

  1. 플레이 버튼을 클릭하여 씬을 시작
    -> 콘솔 창에서 "Hello World!" 확인


  • HelloCode 스크립트 편집 창으로 돌아가기

  1. 실행 결과를 확인한 후 플레이 버튼을 다시 눌러 플레이 모드 해제

  2. 프로젝트 창에서 HelloCode 스크립트를 더블 클릭하여 편집 창 열기

타임스태프

  • 본래 콘솔 창의 로그에는 출력 시점(타임스탬프)과 같이 출력된다. 이 책에서는 로그 내용에 좀 더 집중하기 위해 타임스탬프 출력을 해제했다. 타임스탬프 활성화/비활성화는 콘솔 창 우측 상단의 컨텍스트 메뉴 버튼 > Show Timestamp로 전환할 수 있다.

다음 강의에서 계속~

profile
게임 개발을 목적으로 공부하고 있는 대학생입니다.

0개의 댓글