유니티에서 필요한 만큼만 코딩 배우기

Unity Master Class • August 07, 2026

유니티의 기초를 다지셨다면, 이제 게임 제작에서 가장 재미있는 파트를 살펴볼 차례입니다.
바로 코딩(Scripting) 입니다!

"코딩"이라는 단어만 들어도 어렵게 느껴지시나요?
사실… 네, 처음 접한다면 어렵고 헤매는 것이 당연합니다.

원래는 유니티를 시작하기 전에 C#을 깊게 배우는 것을 추천하지만, 문법부터 공부하다 보면 시작하기도 전에 지쳐서 게임 만들기를 포기하게 되죠. 결국 알만툴 같은 노코드 툴로 눈을 돌리게 됩니다.

물론 유니티에는 비주얼 스크립팅이나 다양한 에셋이 잘 구비되어 있습니다.
하지만 이러한 도구들의 진가를 제대로 발휘하려면, 최소한 "코딩의 ㅋ" 정도는 알고 계셔야 합니다.

그래서 이번 시간에는 유니티에서 기초적인 개발을 진행하는 데 딱 필요한 만큼만 C# 개념을 쉽게 알려드리겠습니다!

1. C# 스크립트 생성하기

유니티에서 코드는 에셋(Asset) 에 속하므로 Project 뷰에서 관리합니다.

  1. Project 뷰에서 원하는 폴더를 우클릭합니다.
  2. CreateC# Script 메뉴로 들어갑니다.
  3. 여러 옵션 중 MonoBehaviour Script를 선택해 생성합니다.

스크립트 이름 작성 시 주의사항

스크립트를 생성한 뒤 외부 에디터(Visual Studio, Rider, VS Code 등)로 열어보면 여러 코드 줄이 보여 복잡해 보일 수 있습니다.하지만 기본적으로 코드는 규칙에 따라 작성하는 글일 뿐입니다. 정해진 규칙만 잘 지키면 유니티가 알아서 이를 적용해 줍니다.

2. 첫 번째 규칙: 영역({ })의 개념

코드에서 가장 기본적인 규칙은 **"각자의 영역이 있다"**는 점입니다.
C#에서는 중괄호 { }가 하나의 영역(Scope)을 의미합니다.

쉽게 비유하자면, '내가 포함하고 있는 영역은 내 마음대로 관리할 수 있다' 고 이해하시면 됩니다.

이제 클래스 영역 안에 다음 코드를 추가해 봅시다.

public int _myAge;
        

저장(Ctrl + S) 후 유니티로 돌아가면 바뀐 사항이 자동으로 적용됩니다.

만약 문법적 오류가 있다면 유니티 하단 콘솔창에 에러 메시지가 뜨며 적용되지 않습니다. 이럴 때는 작성한 코드와 에러 메시지를 AI에게 질문해 보세요. 대부분 깔끔하게 해결해 줍니다!

3. 클래스와 컴포넌트의 관계

오류 없이 적용되었다면, 이 스크립트를 하이러키(Hierarchy) 창의 게임 오브젝트(Game Object)로 드래그하여 인스펙터(Inspector) 창에 넣어보세요.

축하합니다! 여러분은 방금 나만의 컴포넌트를 직접 제작하신 겁니다.

이 스크립트를 다른 게임 오브젝트에도 넣어보세요. 인스펙터 창에 My Age라는 항목이 보이시나요?

이것이 바로 해당 컴포넌트가 가지는 변수(Variable), 즉 컴포넌트가 소유한 값입니다.

핵심 정리

  1. Scene 안에는 Game Object를 배치할 수 있다.

  2. Game Object 안에는 여러 Component를 추가할 수 있다.

  3. Component는 내부적으로 변수(값)를 가질 수 있다.

  4. Component의 설계도 역할을 하는 것이 바로 Class이다.

4. 변수(Variable)란 무엇인가?

우리 사람들도 저마다의 정보를 가지고 있습니다.

이름: 이상원

나이: 25세

이를 C# 코드(변수)로 표현하면 다음과 같습니다.

string _name = "이상원";
        int _age = 25;
        

아까 두 개 이상의 게임 오브젝트에 컴포넌트를 각각 넣으셨죠?

각 오브젝트의 인스펙터 창에서 My Age 값을 서로 다르게 조작해 보세요. 같은 설계도(클래스)로 만들어졌더라도, 실제로 생성된 컴포넌트들은 서로 독립된 개체이기 때문에 각자 다른 값을 가질 수 있습니다.

5. 변수를 활용해 오브젝트 조작하기 (함수)

이제 나이(_myAge)에 따라 오브젝트의 크기(Scale)가 변경되도록 만들어 보겠습니다.

클래스 영역 안에 아래 코드를 작성해 보세요.

void SetScale(int scaleFactor)
        {
            transform.localScale = new Vector3(scaleFactor, scaleFactor, scaleFactor); 
        }
        
        void Update()
        {
            SetScale(_myAge);
        }
        

코드 작성을 마친 후 저장하고, 유니티 상단의 Play(▶) 버튼을 눌러 게임을 실행해 보세요.

실행 상태에서 인스펙터 창의 My Age 값을 변경해 보면, 나이에 따라 오브젝트의 크기가 실시간으로 커지거나 작아지는 것을 확인할 수 있습니다!

6. 행동을 정의하는 함수(Function / Method)

여기서 사용된 SetScaleUpdate는 무엇일까요? 바로 함수(Function)입니다.

변수가 '상태(값)'라면, 함수는 오브젝트가 수행하는 '행동'에 해당합니다. (예: 글 쓰기, 말하기, 밥 먹기 등)

즉, 위 코드는 "1초에 수십 번씩 _myAge 값을 확인하여, 그 값에 맞게 오브젝트의 Scale을 실시간으로 업데이트하라"는 의미입니다.

마무리하며

이제 코드가 어떤 식으로 동작하고 읽히는지 대략적인 감이 잡히셨나요?

이 기초 구조만 이해해도 AI에게 내가 원하는 기능을 설명하고 코드를 짜달라고 요청할 수 있게 됩니다. AI가 생성해 준 코드를 읽어보며 독학하는 것도 아주 훌륭한 공부법입니다.

더 복잡하고 유용한 기능을 자유자재로 만들고 싶다면 C# 언어를 차근차근 공부하시는 것을 추천합니다. 앞으로 C#을 잘 모르시더라도 블로그 글을 따라오실 수 있도록 알기 쉽게 작성할 예정이니, 부담 없이 즐겁게 도전해 보세요!

읽어주셔서 감사합니다. 궁금한 점이 있다면 언제든 댓글로 남겨주세요!

UnityMasterClass 유니티 Unity 게임엔진 유니티강좌 게임개발 유니티기초 Component 개발자블로그 CSharp 코딩입문

다른 에피소드

이전글: 게임 엔진들의 '개발철학' 읽기

현재글: 유니티에서 필요한 만큼만 코딩 배우기

다음글: [코딩 주의!]유니티 안에서의 코딩
검색