Skip to main content

AI와 함께 배우는 최소한의 C#

Views 12약 11분생성형 AI 활용

지난 장에서 우리는 Unity 에디터를 둘러보고, 씬 안에 큐브와 바닥을 배치하며 "보이는 세계"를 만들었습니다. 이제 다음 단계로 넘어갈 차례입니다. 이번에는 그 오브젝트에 행동을 붙입니다. 가만히 서 있는 큐브를 돌리고, 움직이고, 상황에 따라 다르게 반응하게 만드는 힘이 바로 C# 스크립트입니다.

여기서 먼저 마음을 편하게 먹어도 좋습니다. 이 장의 목표는 C# 문법책 한 권을 외우는 것이 아닙니다. 우리는 게임을 만들기 위해 필요한 최소한만 익힐 겁니다. 더 정확히 말하면, AI가 작성한 코드를 읽고, 무슨 뜻인지 이해하고, 조금 고칠 수 있는 정도까지 가는 것이 목표입니다. 그 정도만 되어도 Unity 학습 속도는 확실히 달라집니다.

AI와 함께 배우는 최소한의 C#

코드는 외우는 과목이 아니라 읽는 언어다

처음 코드를 보면 낯섭니다. 영어 비슷한 단어, 중괄호, 세미콜론이 한꺼번에 몰려오니까요. 하지만 게임 스크립트는 생각보다 단순한 패턴을 반복합니다. 대부분의 코드는 결국 이 네 가지 질문으로 읽을 수 있습니다.

  • 지금 무엇을 저장하고 있지?

  • 어떤 상황에서 갈라지지?

  • 무엇을 반복하지?

  • 어떤 일을 이름 붙여 묶었지?

이 네 질문이 바로 변수, 조건문, 반복문, 함수입니다. 이 네 가지를 이해하면 처음 보는 코드도 "완전히 외계어"처럼 보이지 않게 됩니다.

중요한 것은 속도보다 해석입니다. 처음에는 한 줄 한 줄 느리게 읽어도 괜찮습니다. 오히려 그 느린 읽기가 나중에 AI와 협업할 때 큰 힘이 됩니다. AI가 만들어 준 코드가 내 프로젝트에서 왜 돌아가는지, 왜 안 돌아가는지 판단할 수 있기 때문입니다.

게임 로직을 읽는 네 가지 도구

변수: 상태를 붙잡아 두는 이름표

변수는 값을 담아 두는 상자입니다. 게임에서는 거의 모든 것이 변수로 표현됩니다. 플레이어의 체력, 이동 속도, 점수, 남은 시간, 점프 횟수까지 전부 변수입니다.

예를 들어 이런 코드를 봅시다.

int score = 0;
float moveSpeed = 5f;
bool isGameOver = false;
string playerName = "Blue Cube";

처음 보면 복잡해 보여도 읽는 법은 아주 단순합니다.

int는 정수입니다. 점수처럼 0, 1, 2, 3처럼 딱딱 끊기는 숫자에 잘 어울립니다. float는 소수점이 있는 숫자입니다. 이동 속도처럼 3.5, 4.2 같은 값이 필요할 때 씁니다. bool은 참(true)과 거짓(false) 둘 중 하나만 가지는 값입니다. 게임 오버 여부처럼 "맞다/아니다"를 표현할 때 좋습니다. string은 글자입니다. 플레이어 이름이나 메시지를 담을 때 사용합니다.

핵심은 이것입니다. 변수는 게임의 현재 상태를 적어 두는 메모장입니다. 코드를 읽다가 변수를 보면 "아, 이 스크립트는 무엇을 기억하려고 하는구나"라고 받아들이면 됩니다.

처음에는 자료형 이름을 완벽히 외우지 않아도 괜찮습니다. 대신 자주 나오는 네 가지, int, float, bool, string은 눈에 익혀 두세요. 초반 Unity 스크립트의 절반은 여기서 출발합니다.

조건문: 상황에 따라 길이 갈라지는 곳

게임은 늘 선택의 연속입니다. 체력이 0 이하가 되면 죽는다. 점수가 10점을 넘으면 문이 열린다. 땅에 닿아 있을 때만 점프한다. 이런 "만약 ~라면"을 표현하는 문법이 조건문입니다.

if (score >= 10)
{
    Debug.Log("문이 열렸습니다.");
}

이 코드는 이렇게 읽으면 됩니다. "만약 점수가 10 이상이면, 문이 열렸다고 출력한다."

조금 더 자주 보게 될 형태도 있습니다.

if (isGameOver)
{
    Debug.Log("게임 종료");
}
else
{
    Debug.Log("계속 플레이 중");
}

if는 "만약", else는 "그게 아니라면"입니다. 정말 그 정도 감각으로 시작하면 됩니다.

게임 로직을 읽을 때 조건문은 신호등과 비슷합니다. 어떤 상황에서는 지나가고, 어떤 상황에서는 멈춥니다. 코드가 이상하게 동작할 때는 조건문을 먼저 보세요. "지금 이 길로 들어가고 있는가?"를 확인하는 것만으로도 많은 문제가 풀립니다.

반복문: 같은 일을 여러 번 시키는 장치

반복문은 같은 작업을 여러 번 수행할 때 사용합니다. 예를 들어 코인을 5개 만들거나, 적 목록을 하나씩 검사하거나, 총알을 일정 횟수만큼 발사할 때 유용합니다.

for (int i = 0; i < 3; i++)
{
    Debug.Log("코인 생성");
}

처음 읽을 때는 전부 해석하려 하지 말고 이렇게 받아들이세요. "이 코드는 같은 일을 3번 반복한다." 그 감각이면 충분합니다.

반복문은 강력하지만 초반에는 너무 자주 쓰지 않아도 됩니다. 지금 단계에서 중요한 것은 반복문의 문법을 줄줄 외우는 것이 아니라, 코드가 어떤 작업을 여러 번 돌리고 있다는 사실을 알아보는 것입니다.

함수: 자주 하는 일을 이름 붙여 묶는 법

함수는 여러 줄의 작업을 하나의 이름으로 묶는 도구입니다. 같은 동작을 반복해서 써야 할 때 특히 편합니다.

void SayHello()
{
    Debug.Log("안녕하세요!");
}

이제 다른 곳에서 SayHello();라고 쓰면, 안에 들어 있는 작업이 실행됩니다.

게임에서는 함수가 아주 자주 등장합니다. 예를 들어 TakeDamage(), Jump(), GameOver(), CollectCoin() 같은 이름을 많이 보게 됩니다. 이름만 봐도 역할이 어느 정도 읽히죠. 그게 함수의 큰 장점입니다.

아래처럼 값을 받아서 처리하는 함수도 많습니다.

void TakeDamage(int amount)
{
    hp -= amount;
}

이 코드는 "amount라는 값만큼 hp를 깎는다"는 뜻입니다. 전부 다 이해하려 애쓰지 않아도 됩니다. 함수는 일단 행동에 이름을 붙인 묶음이라고 기억하세요.

Unity 스크립트는 왜 조금 다르게 보일까

일반 C#과 Unity C#의 가장 큰 차이는, Unity에서는 스크립트가 혼자 떠다니는 글이 아니라 오브젝트에 붙는 컴포넌트라는 점입니다. 이 감각을 이해하면 스크립트가 갑자기 쉬워집니다.

클래스는 설계도, 컴포넌트는 실제 부품

스크립트를 만들면 보통 이런 형태를 보게 됩니다.

using UnityEngine;

public class Spinner : MonoBehaviour
{
}

여기서 Spinner는 클래스 이름입니다. 클래스를 너무 어렵게 생각할 필요는 없습니다. 지금은 그냥 "이 부품의 이름" 정도로 이해해도 충분합니다.

중요한 것은 이 클래스가 MonoBehaviour를 상속받고 있다는 점입니다. : MonoBehaviour라고 적혀 있으면 "이 스크립트는 Unity가 이해할 수 있는 컴포넌트다"라고 생각하면 됩니다. 그래서 이 스크립트를 GameObject에 붙일 수 있고, Unity가 특정 시점에 자동으로 함수를 호출해 줍니다.

즉, Unity에서 스크립트는 대개 이런 흐름으로 작동합니다.

  1. C# 파일을 만든다.

  2. 그 안에 클래스를 만든다.

  3. 그 클래스가 MonoBehaviour를 상속받는다.

  4. 이 스크립트를 GameObject에 붙인다.

  5. Unity가 그 스크립트를 컴포넌트처럼 실행한다.

이 구조를 이해하면 "스크립트는 코드"가 아니라 "오브젝트에 붙는 행동 부품"처럼 느껴지기 시작합니다.

파일 이름과 클래스 이름은 같아야 한다

초보자가 정말 자주 만나는 함정이 하나 있습니다. 스크립트 파일 이름과 클래스 이름이 다르면 Unity가 헷갈린다는 점입니다.

예를 들어 파일 이름이 Spinner.cs인데 안쪽 클래스 이름이 RotateCube라면 문제가 생길 수 있습니다. 처음에는 귀찮더라도 파일 이름과 클래스 이름을 맞추는 습관을 들이세요.

Spinner.cs 안에는 public class Spinner : MonoBehaviour가 들어 있다고 생각하면 안전합니다.

public은 Inspector와 연결되는 문이다

Unity 스크립트를 배우면서 가장 먼저 체감되는 키워드 중 하나가 public입니다.

public float speed = 90f;

이렇게 적으면 speed 값이 Inspector에 보입니다. 즉, 코드를 열지 않고도 Unity 에디터에서 값을 조절할 수 있습니다. 이게 정말 편합니다. 속도를 조금 빠르게 해보고 싶을 때 숫자만 바꾸면 되니까요.

초반에는 이렇게 이해하면 충분합니다. public은 에디터 밖으로 보이게 하는 창문입니다.

Start, Update, FixedUpdate는 언제 쓰는가

Unity 스크립트가 특별한 이유는, 우리가 함수를 직접 부르지 않아도 Unity가 특정 타이밍에 알아서 호출해 주는 함수들이 있다는 점입니다. 그중 가장 중요한 세 가지가 Start, Update, FixedUpdate입니다.

이 셋은 처음엔 이름만 비슷해 보여서 헷갈립니다. 하지만 역할만 분명히 잡으면 금방 편해집니다.

Start: 시작할 때 한 번

Start()는 오브젝트가 처음 활성화될 때 한 번 실행됩니다.

void Start()
{
    Debug.Log("게임 시작!");
}

초기 설정이 필요할 때 자주 씁니다. 예를 들면 시작 메시지를 띄우거나, 필요한 컴포넌트를 찾아 두거나, 처음 값을 세팅하는 용도입니다.

쉽게 말해 Start는 출근 도장 찍는 시간입니다. 하루 종일 계속 하는 일보다는, 맨 처음 한 번 해두면 되는 일을 넣습니다.

Update: 매 프레임마다

Update()는 화면이 갱신될 때마다 계속 실행됩니다. 그래서 키 입력 확인, 회전, 일반적인 이동처럼 "계속 지켜봐야 하는 일"에 적합합니다.

void Update()
{
    Debug.Log("계속 실행 중");
}

물론 이렇게 쓰면 로그가 너무 많이 찍혀서 정신이 없겠지만, 개념 이해에는 좋습니다. Update는 매 순간 확인하는 루프라고 생각하면 됩니다.

초보자에게 가장 중요한 결론은 이것입니다. 화면에서 계속 변해야 하는 동작의 상당수는 우선 Update에서 시작해도 됩니다.

FixedUpdate: 물리 계산의 리듬

FixedUpdate()는 물리 연산과 더 잘 맞는 주기로 실행됩니다. Rigidbody에 힘을 주거나, 물리 기반 이동을 다룰 때 보통 이쪽을 사용합니다.

void FixedUpdate()
{
    Debug.Log("물리 주기 실행");
}

지금 단계에서는 이렇게 기억하면 충분합니다.

  • Start: 시작할 때 한 번

  • Update: 화면이 갱신될 때마다

  • FixedUpdate: 물리 계산이 중요할 때

아직 물리와 입력이 완전히 몸에 익지 않았다면, 억지로 모든 걸 구분하려 하지 않아도 됩니다. 다만 Rigidbody에 힘을 주는 코드라면 FixedUpdate를 떠올리고, 일반적인 키 입력 확인이나 단순 회전은 Update를 먼저 떠올리면 됩니다.

실습 1: 큐브를 회전시키는 첫 스크립트

이제 직접 해봅시다. 지난 장에서 만든 큐브를 다시 불러오세요. 이번 장의 첫 목표는 아주 단순합니다. 큐브가 천천히 회전하게 만들기입니다.

먼저 Project 창에서 Scripts 폴더를 만들고, 새 C# 스크립트를 생성합니다. 이름은 Spinner로 하겠습니다. 그리고 아래처럼 작성합니다.

using UnityEngine;

public class Spinner : MonoBehaviour
{
    public float speed = 90f;

    void Update()
    {
        transform.Rotate(0f, speed * Time.deltaTime, 0f);
    }
}

이 코드를 천천히 읽어봅시다.

using UnityEngine;은 Unity 기능을 사용하겠다는 선언입니다. 지금 단계에서는 "Unity 도구상자를 꺼낸다" 정도로 이해하면 충분합니다.

public class Spinner : MonoBehaviour는 Spinner라는 이름의 Unity 컴포넌트를 만든다는 뜻입니다.

public float speed = 90f;는 회전 속도를 저장하는 변수입니다. public이기 때문에 Inspector에서 값을 조절할 수 있습니다.

void Update()는 매 프레임 실행되는 함수입니다.

transform.Rotate(...)는 이 스크립트가 붙은 오브젝트를 회전시키라는 명령입니다. 여기서 transform은 바로 그 오브젝트의 위치, 회전, 크기를 담당하는 컴포넌트입니다.

Time.deltaTime은 꽤 중요합니다. 프레임마다 걸린 시간을 반영해 주기 때문에, 컴퓨터 성능이 달라도 움직임이 너무 달라지지 않게 도와줍니다. 지금은 "움직임을 초당 기준으로 맞춰 주는 보정값"이라고 이해하면 충분합니다.

이제 CenterCube에 Spinner 스크립트를 붙여 보세요. 플레이 버튼을 누르면 큐브가 회전할 것입니다. 만약 너무 빠르거나 느리다면 Inspector에서 Speed 값을 바꿔 보세요. 이 순간이 중요합니다. 여러분은 이미 "코드 한 줄을 바꾸지 않고도" 스크립트의 동작을 조절하고 있습니다.

실습 2: 키보드로 오브젝트를 움직여 보기

이번에는 조금 더 적극적인 행동을 붙여 보겠습니다. 키를 누르면 오브젝트가 왼쪽과 오른쪽으로 움직이게 만들어 봅시다. 아직 정식 Input System은 다음 파트에서 자세히 배울 예정이므로, 여기서는 가장 단순한 방식으로 감을 잡겠습니다.

새 스크립트 Mover를 만들고 다음처럼 작성합니다.

using UnityEngine;

public class Mover : MonoBehaviour
{
    public float moveSpeed = 3f;

    void Update()
    {
        float x = 0f;

        if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
        {
            x = -1f;
        }

        if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
        {
            x = 1f;
        }

        transform.Translate(x * moveSpeed * Time.deltaTime, 0f, 0f);
    }
}

이제 읽는 법을 배운 눈으로 다시 봅시다.

먼저 moveSpeed라는 변수가 있습니다. 이동 속도를 기억합니다.

그다음 Update() 안에서 x라는 변수를 0으로 시작합니다. 즉, 기본값은 "가만히 있음"입니다.

조건문이 등장합니다. A 키나 왼쪽 화살표를 누르면 x = -1f가 됩니다. D 키나 오른쪽 화살표를 누르면 x = 1f가 됩니다.

마지막으로 transform.Translate(...)가 실행됩니다. x 값에 따라 왼쪽 또는 오른쪽으로 이동합니다.

여기엔 우리가 배운 네 가지가 거의 다 들어 있습니다. 변수, 조건문, 함수 호출, 그리고 매 프레임 반복 실행되는 Update까지 모두 보이죠. 그래서 이 짧은 코드가 아주 좋은 연습문제가 됩니다.

두 스크립트를 함께 붙여 보기

같은 오브젝트에 Spinner와 Mover를 둘 다 붙여 보세요. 그러면 그 오브젝트는 동시에 회전하고, 키 입력에 따라 움직입니다.

이 경험이 중요합니다. Unity에서는 오브젝트 하나가 여러 컴포넌트의 협업으로 동작합니다. "움직임 담당", "회전 담당", "체력 담당", "사운드 담당"처럼 역할을 나눠 붙일 수 있습니다. 이것이 Unity식 사고방식입니다.

코드를 읽을 때는 '줄'보다 '흐름'을 본다

초보자가 코드를 읽으며 가장 많이 지치는 이유는, 한 줄 한 줄을 완벽하게 해석하려 하기 때문입니다. 하지만 게임 스크립트는 보통 흐름으로 읽는 편이 더 쉽습니다.

예를 들어 방금 본 Mover 스크립트는 이렇게 요약할 수 있습니다.

  1. 속도를 저장한다.

  2. 매 프레임 입력을 확인한다.

  3. 왼쪽인지 오른쪽인지 판단한다.

  4. 그 방향으로 이동한다.

이렇게 읽으면 훨씬 편합니다. 세부 문법은 나중에 붙여도 됩니다. AI가 만든 코드도 똑같이 읽으면 됩니다. "이 코드는 무엇을 저장하고, 무엇을 판단하고, 무엇을 실행하는가?"만 먼저 잡아도 절반은 해석한 셈입니다.

자주 하는 실수는 대부분 사소하다

처음 스크립트를 붙였는데 안 돌아가면 괜히 겁이 납니다. 하지만 초반 오류는 놀랄 만큼 단순한 경우가 많습니다.

  • 스크립트를 오브젝트에 붙이지 않았다.

  • 파일 이름과 클래스 이름이 다르다.

  • 세미콜론 ;을 빼먹었다.

  • 중괄호 { } 짝이 맞지 않는다.

  • Update를 update처럼 소문자로 써서 Unity가 못 알아본다.

  • 다른 오브젝트를 움직이고 싶었는데 현재 오브젝트의 transform을 건드리고 있다.

이럴 때는 패닉에 빠지지 말고 순서를 정해 확인하세요. 오류 메시지 확인 → 빨간 줄 위치 확인 → 파일 이름 확인 → 클래스 이름 확인 → 스크립트가 붙어 있는지 확인. 이 다섯 가지만 점검해도 많은 문제가 해결됩니다.

AI와 함께 코드를 읽고 고치는 법

이 장의 핵심은 "AI가 코드를 대신 써준다"가 아닙니다. 그보다 더 중요한 것은 AI를 설명가, 리뷰어, 디버깅 파트너로 쓰는 법입니다.

AI에게 잘 물으려면 막연한 질문보다 맥락이 있는 질문이 훨씬 좋습니다. 예를 들어 "왜 안 돼?"보다 "Unity 6에서 이 스크립트를 큐브에 붙였는데 회전하지 않는다. Console 오류는 없고, Inspector에서 speed는 90이다. 무엇부터 확인해야 하나?"가 훨씬 강한 질문입니다.

AI를 잘 쓰는 사람은 대개 코드를 더 많이 아는 사람이 아니라, 문제를 더 잘 설명하는 사람입니다.

AI에게 묻자: 코드 설명을 받는 프롬프트

AI에게 묻자
아래 Unity C# 코드를 초보자 눈높이로 설명해줘. 각 줄이 무슨 역할을 하는지, 특히 Update, transform, Time.deltaTime이 왜 필요한지 알려줘.

이 질문은 "정답을 달라"가 아니라 "이해를 도와달라"는 요청입니다. 초반에는 이런 질문이 가장 강력합니다.

AI에게 묻자: 오류 원인을 좁히는 프롬프트

AI에게 묻자
Unity 6에서 Spinner 스크립트를 만들었는데 오브젝트가 회전하지 않아. 스크립트는 오브젝트에 붙였고 Console에 오류는 없어. 이런 상황에서 초보자가 가장 먼저 확인할 5가지를 순서대로 알려줘.

이 프롬프트의 장점은, AI가 추상적인 설명 대신 점검 순서를 주도록 만든다는 점입니다. 초보자에게는 이 순서가 정말 중요합니다.

AI에게 묻자: 실전 프롬프트 7가지

아래 일곱 가지 패턴은 이 장에서 바로 써먹을 수 있는 질문들입니다. 그대로 복사해도 좋고, 자신의 상황에 맞게 조금 바꿔도 좋습니다.

  1. 코드 설명 요청

    이 Unity C# 코드를 초보자도 이해하게 설명해줘. 문법 설명보다 "무슨 흐름으로 동작하는지"를 먼저 알려줘.

  2. 줄 단위 해설 요청

    아래 코드의 각 줄 옆에 주석을 달아 설명해줘. 특히 변수, 조건문, 함수가 어디인지 표시해줘.

  3. 오류 원인 추적 요청

    이 스크립트가 동작하지 않는 이유를 추측하지 말고, 확인할 항목을 우선순위대로 체크리스트로 알려줘.

  4. 최소 수정 요청

    코드를 처음부터 새로 쓰지 말고, 지금 코드에서 최소한만 고쳐서 동작하게 만들어줘. 바뀐 줄만 따로 보여줘.

  5. 쉬운 말 변환 요청

    MonoBehaviour, Update, transform을 프로그래밍 비유 말고 게임 제작 비유로 설명해줘.

  6. 학습용 문제 변환 요청

    이 회전 스크립트를 연습용 과제로 바꿔줘. 난이도는 초보 기준으로 하고, 정답을 바로 주지 말고 힌트부터 줘.

  7. 디버깅 대화 요청

    내가 하나씩 확인해 볼 테니 질문 형식으로 디버깅을 도와줘. 한 번에 답을 다 주지 말고, 다음 확인 단계만 알려줘.

이 일곱 가지를 써보면 곧 알게 됩니다. AI는 정답 자판기가 아니라, 설명을 조절할 수 있는 개인 과외 선생님에 가깝습니다. 특히 4번과 7번은 실전에서 매우 강력합니다. 처음부터 전부 다시 짜게 하지 않고, 지금 내 코드를 중심으로 문제를 풀어가게 해주기 때문입니다.

좋은 질문은 좋은 코드를 부른다

AI에게 물을 때는 세 가지만 기억하면 됩니다.

  • 무엇을 만들고 싶은지 말한다.

  • 지금 어떤 상태인지 말한다.

  • 어디서 막혔는지 말한다.

예를 들어 "Unity 스크립트 짜줘"는 너무 넓습니다. 반면 "큐브를 Y축으로 초당 90도 회전시키고 싶어. Inspector에서 속도를 바꾸고 싶어. 초보자용으로 짧게 써줘"는 훨씬 좋은 요청입니다.

좋은 질문은 좋은 답을 부릅니다. 그리고 좋은 답을 여러 번 보다 보면, 어느 순간부터는 AI가 쓴 코드의 구조가 눈에 들어오기 시작합니다. 그때부터는 학습 속도가 확실히 빨라집니다.

이번 장에서 꼭 남겨야 할 감각

이번 장의 핵심은 문법 암기가 아닙니다. 여러분이 꼭 가져가야 할 것은 세 가지 감각입니다.

첫째, 코드는 상태를 저장하고, 상황을 판단하고, 행동을 실행하는 흐름이라는 감각입니다.

둘째, Unity 스크립트는 혼자 있는 글이 아니라 GameObject에 붙는 컴포넌트라는 감각입니다.

셋째, AI는 코드를 대신 외워주는 존재가 아니라, 내가 읽고 고칠 수 있도록 설명을 도와주는 파트너라는 감각입니다.

이 세 가지가 잡히면 다음 장부터는 훨씬 가볍게 나아갈 수 있습니다. 이제 코드는 두려운 벽이 아니라, 오브젝트를 움직이게 만드는 레버처럼 보이기 시작할 것입니다.

이 장에서 배운 것

  • 변수, 조건문, 반복문, 함수가 게임 로직을 읽는 기본 틀이라는 것을 이해했다.

  • 클래스와 컴포넌트의 관계를 알고, MonoBehaviour가 Unity 스크립트의 출발점이라는 감을 잡았다.

  • Start, Update, FixedUpdate의 차이와 쓰임새를 구분할 수 있게 되었다.

  • 오브젝트를 회전시키고 이동시키는 첫 스크립트를 직접 작성해 봤다.

  • AI에게 코드 설명, 오류 원인, 수정 방향을 묻는 실전 프롬프트 패턴을 익혔다.

다음 장에서 만들 것

다음 장부터는 본격적으로 첫 2D 게임의 뼈대를 세웁니다. 스프라이트를 배치하고, 타일맵으로 발판을 만들고, 물리 컴포넌트를 붙여 캐릭터가 바닥 위에 제대로 서게 만들 것입니다. 지금까지 배운 C#은 그때부터 본격적으로 살아납니다.

이제 우리는 단순히 장면을 꾸미는 사람에서, 움직이는 게임을 만드는 사람으로 넘어가려는 바로 직전에 서 있습니다.

책 목록

AI와 함께 만드는 Unity 6: 코드 한 줄 모르던 사람도 30일 안에 첫 게임을 출시하는 법

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기