Unity: 기본 개념, 아키텍처 및 C# 개발

저자: IT Sectr 게시일: 2026-05-02 읽는 시간: 9 분

Unity는 2D 및 3D 애플리케이션을 제작하기 위한 크로스 플랫폼 게임 엔진으로, 모바일 플랫폼, 데스크탑, 콘솔 빌드를 지원합니다. 게임 개발뿐만 아니라 건축, 자동차, 소매 분야의 비게임 애플리케이션에도 사용됩니다. Unity Technologies, 2025에 따르면, App Store 상위 1000개 모바일 게임의 70% 이상이 Unity로 제작되었습니다. C#은 엔진의 주요 프로그래밍 언어로, 게임 로직, 컴포넌트 및 에디터 스크립트를 작성하는 데 사용됩니다.

핵심 요약

  • Unity — 2D, 3D, AR, VR을 지원하는 크로스 플랫폼 게임 엔진
  • C# — 게임 로직, 컴포넌트 및 에디터 스크립트 작성용 주요 언어
  • 컴포넌트 아키텍처 — 객체의 동작은 컴포넌트(MonoBehaviour)로 구성됨
  • Asset Store — 기성 모델, 텍스처, 사운드, 플러그인 마켓플레이스
  • 모바일 빌드 — ARM 아키텍처에 최적화된 iOS 및 Android 빌드

Unity란 무엇인가?

Unity는 Unity Technologies가 2005년에 만든 게임 및 실시간 애플리케이션 개발 환경입니다. 이 엔진은 iOS, Android, Windows, macOS, PlayStation, Xbox, Nintendo Switch, WebGL을 포함한 27개 플랫폼을 지원합니다. Unity Gaming Report(2024)에 따르면, 2023년에는 Unity에서 월간 30억 개 이상의 모바일 게임이 출시되었습니다.

Unity의 주요 특징은 컴포넌트 지향 아키텍처입니다. 씬의 각 오브젝트는 빈 컨테이너(GameObject)이며, 여기에 렌더링, 물리, 사운드, 애니메이션, 사용자 정의 로직 등 동작을 정의하는 컴포넌트가 추가됩니다. 이는 클래스 상속으로 동작이 정의되는 Unreal Engine 같은 계층형 엔진과 차별화됩니다.

Statista(2025)에 따르면, Unity는 모바일 게임 엔진 시장의 48%를 점유하며 Unreal Engine(15%)과 독자 솔루션(37%)을 앞서고 있습니다. 인디 스튜디오는 낮은 진입 장벽으로, 대형 퍼블리셔는 다양한 플랫폼에 걸친 빌드 파이프라인의 유연성으로 이 엔진을 선택합니다.

Unity 아키텍처: 씬, 오브젝트 및 컴포넌트

Unity의 아키텍처는 씬, GameObjects, 컴포넌트, 프리팹의 네 가지 기본 개념으로 구성됩니다. 이 계층 구조를 이해하는 것은 엔진을 효과적으로 사용하는 데 필수적입니다.

씬과 GameObjects

씬(Scene)은 게임 레벨 또는 애플리케이션 상태의 모든 오브젝트를 포함하는 컨테이너입니다. 각 씬에는 고유한 GameObjects, 광원, 카메라, 오디오 소스 세트가 있습니다. 씬 전환은 SceneManager.LoadScene()을 통해 이루어집니다.

GameObject는 Unity의 기본 구성 요소입니다. 기본적으로 시각적 표현이나 동작이 없으며, 씬 계층 구조의 빈 노드입니다. 모든 동작과 외형은 컴포넌트를 통해 추가됩니다. 예를 들어, GameObject를 표시하려면 MeshRenderer를 추가하고, 물리를 적용하려면 Rigidbody를 추가합니다.

MonoBehaviour 컴포넌트

MonoBehaviour는 Unity의 모든 사용자 정의 스크립트의 기본 클래스입니다. 라이프사이클을 제공합니다: Awake(오브젝트 로드 시 호출), Start(첫 프레임 전), Update(매 프레임), FixedUpdate(매 물리 단계), OnDestroy(소멸 시).

각 컴포넌트는 GetComponent<T>()를 통해 동일한 GameObject의 다른 컴포넌트와 상호 작용할 수 있습니다. 이를 통해 모듈식 시스템을 만들 수 있습니다. 예를 들어, Health 컴포넌트는 Movement 컴포넌트와 독립적일 수 있지만, 둘 다 UnityEvent를 통해 이벤트에 반응할 수 있습니다.

프리팹

프리팹(Prefab)은 프로젝트에 에셋으로 저장된 GameObject 템플릿입니다. 프리팹의 변경 사항은 씬의 모든 인스턴스에 자동으로 적용됩니다. 이는 Unity의 중앙 재사용 메커니즘으로, 반복 작업을 가속화하고 오류를 줄입니다.

프리팹은 중첩(Nested Prefabs)을 지원합니다. 프리팹은 다른 프리팹을 포함하여 계층 구조를 형성할 수 있습니다. 예를 들어, 자동차 프리팹에는 각각 고유한 컴포넌트와 설정이 있는 바퀴, 엔진, 차체 프리팹이 포함될 수 있습니다.

Unity의 C# 코드 예제

C#의 기본 캐릭터 이동 컴포넌트를 살펴보겠습니다. 이 스크립트는 현재 회전을 기준으로 오브젝트를 앞으로 이동시키고 사용자 입력을 처리합니다.

csharp
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float speed = 5f;

    void Update()
    {
        float move = Input.GetAxis("Vertical");
        Vector3 direction = transform.forward * move;
        CharacterController controller = GetComponent<CharacterController>();
        controller.SimpleMove(direction * speed);
    }
}

Update() 메서드는 매 프레임 호출됩니다. Input.GetAxis는 수직 입력을 읽고, SimpleMove는 물리와 함께 이동을 적용합니다. CharacterController는 충돌 물리를 작성하지 않고 충돌을 처리하는 기본 제공 Unity 컴포넌트입니다.

충돌 처리 및 데미지 적용 스크립트 예제:

csharp
using UnityEngine;

public class DamageHandler : MonoBehaviour
{
    public int health = 100;

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Enemy"))
        {
            health -= 10;
            if (health <= 0)
            {
                Destroy(gameObject);
            }
        }
    }
}

OnCollisionEnter 메서드는 GameObject가 다른 오브젝트와 충돌할 때 물리 엔진에 의해 호출됩니다. 태그 비교(CompareTag)는 충돌이 무엇과 발생했는지 결정합니다. 이 접근 방식을 사용하면 코드를 변경하지 않고 DamageHandler 컴포넌트를 플레이어, 적, 파괴 가능한 오브젝트에 재사용할 수 있습니다.

Unity 모바일 게임 개발

Unity는 제한된 리소스를 가진 모바일 기기용 게임 최적화를 위한 특수 도구를 제공합니다. 주요 최적화 영역에는 메모리 관리, 드로우 콜 감소, 다양한 화면 해상도 적응이 포함됩니다.

성능 최적화

모바일 플랫폼을 위해 Unity는 Asset Bundles를 제공합니다. 이는 필요에 따라 리소스를 로드하는 콘텐츠 패키징 시스템으로, 앱의 초기 크기를 줄입니다. 이는 앱 스토어 제한으로 인해 모든 에셋을 한 번에 로드할 수 없는, 많은 레벨이나 캐릭터가 있는 게임에서 특히 중요합니다.

Unity Profiler를 사용하면 ADB(Android) 또는 USB(iOS)를 통해 실제 기기에서 CPU, GPU 및 메모리 사용량을 분석할 수 있습니다. Unity Documentation(2025)에 따르면, 모바일 기기에서 드로우 콜을 100~300개로 최적화하면 중간급 기기에서 안정적인 60 FPS를 얻을 수 있습니다.

터치 입력 및 UI

모바일 게임을 위해 Unity는 Input System을 사용하여 터치 컨트롤, 가속도계, 자이로스코프를 통합 API로 추상화합니다. 가상 조이스틱, 스와이프, 탭은 터치 처리 코드를 작성하지 않고 Input Action Assets을 통해 구성됩니다.

Unity의 UI 시스템(uGUI)은 다양한 화면 비율에 인터페이스를 자동으로 적응시키는 Canvas Scaler를 지원합니다. Scale With Screen Size 모드의 Canvas Scaler 컴포넌트는 태블릿과 스마트폰에서 버튼이 화면 밖으로 나가지 않도록 보장합니다.

iOS 및 Android 빌드

Unity에서 모바일 게임 빌드는 Build Settings 창을 통해 수행됩니다. Android에는 Android SDK와 NDK가 필요합니다. Unity는 Gradle 프로젝트를 생성하여 APK 또는 AAB로 컴파일합니다. iOS에는 Xcode가 필요합니다. Unity는 Objective-C/Swift 래퍼가 있는 Xcode 프로젝트를 생성하여 Apple을 통해 최종 컴파일됩니다.

IL2CPP는 C# 코드를 C++로 변환한 다음 네이티브 ARM 코드로 변환하는 컴파일 옵션입니다. Unity Benchmark(2024)에 따르면, IL2CPP는 Mono와 비교하여 iOS 및 Android에서 성능을 15~25% 향상시키지만, 빌드 시간과 바이너리 크기가 증가합니다.

Unity와 다른 엔진 비교

Unity는 게임 엔진 시장의 주요 대안으로 Unreal Engine 및 Godot와 비교됩니다. 선택은 프로젝트 유형, 팀의 전문성, 대상 플랫폼에 따라 달라집니다.

기준UnityUnreal Engine 5Godot 4
언어C#C++ / BlueprintsGDScript / C#
그래픽Built-in / URP / HDRPNanite + Lumen자체 렌더러
모바일 최적화우수(모바일 게임의 70%)양호(AAA 포팅)양호(가벼운 엔진)
진입 장벽낮음높음낮음
라이선스Personal / Pro / Enterprise5% 로열티($1M까지)MIT(무료)

모바일 게임의 경우, Unity는 제한된 컴퓨팅 성능의 모바일 GPU용 그래픽을 최적화하는 유연한 렌더링 시스템(URP — Universal Render Pipeline) 덕분에 업계 표준으로 남아 있습니다. URP는 자동으로 렌더링 패스 수를 줄이고 셰이더를 배치하여 GPU 부하를 낮춥니다.

Unreal Engine 5는 최고의 그래픽 품질(형상을 위한 Nanite, 조명을 위한 Lumen)을 제공하지만 더 강력한 하드웨어와 팀 경험이 필요합니다. Godot는 오픈 소스 코드와 작은 엔진 크기로 매력적이지만, 기성 에셋이 적고 전문가 시장도 작습니다.

비게임 애플리케이션을 위한 Unity

Unity는 게임 개발 외에도 건축, 자동차, 소매, 교육 분야에서 활발히 사용됩니다. 실시간 3D 시각화(RT3D)를 통해 대화형 3D 프레젠테이션, 시뮬레이터, 제품 컨피규레이터를 만들 수 있습니다.

자동차 산업에서 Unity는 자동차의 디지털 트윈과 HMI(Human-Machine Interface) 시스템을 만드는 데 사용됩니다. Mercedes-Benz와 BMW는 물리적 프로토타입이 제작되기 전에 대시보드 디스플레이 및 멀티미디어 시스템 프로토타이핑에 Unity를 사용합니다.

소매업에서 Unity는 제품 컨피규레이터에 적용됩니다: IKEA(가상 가구 배치), Nike(운동화 맞춤 설정), Audi(자동차 컨피규레이터) — 이 모든 프로젝트는 Unity로 구축되었습니다. 사용자는 실시간으로 색상, 재질, 옵션을 변경하고 결과를 3D로 확인할 수 있습니다.

비게임 프로젝트를 위해 Unity는 특수 도구를 제공합니다: AR Foundation(ARKit 및 ARCore용), Pixyz Plugin(CAD 모델 가져오기용), Unity Reflect(Revit BIM 모델 동기화용). 회사는 엔터프라이즈 고객을 위한 클라우드 서비스를 포함하는 Unity Industry 방향을 적극적으로 개발하고 있습니다.

자주 묻는 질문

초보자가 Unity를 배우기 어렵나요?

Unity는 방대한 문서, 무료 Unity Learn 코스, 거대한 커뮤니티 덕분에 초보자에게 가장 접근하기 쉬운 게임 엔진 중 하나로 간주됩니다. 시작하려면 C#의 기본과 컴포넌트 아키텍처 원칙을 이해하면 충분합니다. 대부분의 초보자는 2~3개월 안에 첫 번째 게임을 만듭니다.

Unity에서 2D 게임을 만들 수 있나요?

네, Unity에는 완전한 2D 파이프라인이 있습니다: Sprite Renderer, 2D 물리(Box2D), 타일로 레벨을 만드는 Tilemap, 스프라이트의 골격 애니메이션을 위한 2D Animation. Hollow Knight와 Cuphead를 포함한 많은 인기 2D 게임이 Unity로 제작되었습니다. 2D 도구는 플러그인 설치 없이 엔진에 내장되어 있습니다.

모바일 개발용 Unity 가격은 얼마인가요?

Unity Personal은 연간 수익이 $200,000까지 무료입니다. Unity Pro는 개발자당 연간 $2,040이며 고급 프로파일링 도구, 클라우드 빌드, 우선 지원이 포함됩니다. 모바일 개발의 경우 Personal 기능으로 대부분의 인디 프로젝트에 충분합니다.

Unity와 Cocos2d 게임 엔진의 차이점은 무엇인가요?

Cocos2d는 C++, Lua, JavaScript를 지원하는 2D 프레임워크로, 간단한 2D 게임에 중점을 둡니다. Unity는 편집기, 시각적 도구, 27개 플랫폼 지원을 갖춘 본격적인 3D/2D 엔진입니다. Cocos2d는 아시아에서 하이퍼캐주얼 게임에 인기가 있으며, Unity는 모든 장르에 적합한 범용 선택입니다.

Unity는 AR과 VR을 지원하나요?

네, Unity는 AR Foundation(ARKit + ARCore), XR Interaction Toolkit, OpenXR을 통해 AR과 VR을 내장 지원합니다. Half-Life: Alyx(기술 데모)와 VRChat 같은 VR 프로젝트가 Unity로 제작되었습니다. 이 엔진은 Meta Quest, HTC Vive, Valve Index, PlayStation VR 등 주요 VR 헤드셋을 모두 지원합니다.

요약

  • Unity — C#으로 2D/3D 게임 및 실시간 애플리케이션을 위한 크로스 플랫폼 엔진
  • 아키텍처는 씬, GameObjects, MonoBehaviour 컴포넌트, 프리팹 기반
  • C# — 게임 로직, 컴포넌트 및 에디터 확장을 위한 유일한 언어
  • 모바일 최적화 — iOS 및 Android용 IL2CPP, Asset Bundles, URP, Profiler
  • 비교 — Unity 모바일 선도(48%), Unreal AAA, Godot 인디
  • 비게임 용도 — 건축, 자동차, 소매, 인터랙티브 3D 프레젠테이션
  • 진입 장벽 — 낮음, 무료 Unity Learn 코스와 거대한 커뮤니티

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기