Unity
기본 정보
- 이름: Unity
- 분류: 게임 엔진(Game Engine)
- 개발사: Unity Technologies
- 최초 공개: 2005년
- 개발 언어: C#
- 주요 용도: 게임 개발, 모바일 앱, VR/AR, 시뮬레이션
- 관련 주제: #Unity #게임개발 #CSharp #GameEngine #VR
개요
Unity는 전 세계에서 가장 널리 사용되는 게임 엔진 중 하나로, 2D·3D 게임뿐만 아니라 VR, AR, 시뮬레이션, 디지털 트윈, 산업용 애플리케이션 개발에도 사용된다.
특히 인디 게임과 모바일 게임 시장에서 강력한 점유율을 가지고 있으며, C# 언어를 사용하여 개발한다.
대표 게임으로는 Pokémon GO, Hearthstone, Among Us 등이 있다.
Unity 구조
Scene
↓
GameObject
↓
Component
↓
Script(C#)
↓
Game Logic
핵심 개념
Scene
게임의 하나의 화면 또는 맵이다.
예시
MainMenu
GameScene
ShopScene
BattleScene
GameObject
Unity의 모든 객체는 GameObject로 구성된다.
Player
Enemy
Camera
UI
Item
Component
GameObject에 기능을 추가하는 요소이다.
Transform
RigidBody
Collider
AudioSource
Script
Unity 계층 구조
Scene
├─ Main Camera
├─ Directional Light
├─ Player
├─ Enemy
└─ UI
Transform
모든 GameObject가 기본적으로 가지는 컴포넌트
Position
Rotation
Scale
C# 스크립트
using UnityEngine;
public class Player : MonoBehaviour
{
void Start()
{
Debug.Log("게임 시작");
}
void Update()
{
Debug.Log("매 프레임 실행");
}
}
Start()
게임 시작 시 1회 실행
void Start()
{
}
Update()
매 프레임 실행
void Update()
{
}
60FPS라면 초당 60번 호출된다.
FixedUpdate()
물리 연산 전용
void FixedUpdate()
{
}
Rigidbody
물리 엔진 적용
중력
충돌
힘 적용
Collider
충돌 판정
대표 종류
- Box Collider
- Sphere Collider
- Capsule Collider
- Mesh Collider
입력 처리
if(Input.GetKeyDown(KeyCode.Space))
{
Jump();
}
Prefab
재사용 가능한 객체
Enemy
↓
Prefab
↓
100개 생성 가능
UI 시스템
구성 요소
- Canvas
- Button
- Text
- Image
- Slider
- InputField
애니메이션
구성 요소
Animator
Animation Clip
State Machine
NavMesh
AI 이동 시스템
NPC
↓
NavMesh
↓
자동 경로 탐색
A* 알고리즘 개념이 내부적으로 활용된다.
ScriptableObject
데이터 관리용 객체
ItemData
MonsterData
SkillData
대규모 프로젝트에서 자주 사용된다.
씬 전환
using UnityEngine.SceneManagement;
SceneManager.LoadScene(
"GameScene"
);
코루틴(Coroutine)
비동기 처리
IEnumerator Wait()
{
yield return new WaitForSeconds(3);
}
모바일 게임 개발
Unity의 대표 활용 분야
Android
iOS
↓
Unity
↓
APK
IPA
플랫폼 지원
- Windows
- macOS
- Linux
- Android
- iOS
- WebGL
- VR
- AR
- 콘솔
Unity와 Unreal 비교
| Unity | Unreal Engine |
|---|---|
| C# | C++ |
| 진입장벽 낮음 | 상대적으로 높음 |
| 모바일 강세 | AAA 게임 강세 |
| 인디 개발자 인기 | 대형 게임사 선호 |
| 빠른 프로토타입 | 고품질 그래픽 |
Unity와 Godot 비교
| Unity | Godot |
|---|---|
| 상용 엔진 | 오픈소스 |
| 에셋 스토어 강력 | 생태계 성장 중 |
| 기업 사용 많음 | 인디 중심 |
| C# 지원 | GDScript 중심 |
대표 활용 분야
- 모바일 게임
- PC 게임
- VR
- AR
- 시뮬레이션
- 교육 콘텐츠
- 디지털 트윈
- 메타버스
구름님의 활용 사례
과거 대화 기준으로 구름님은 현재:
- 머지 게임 개발 진행 중
- C# 기반 Unity 사용
- 수집형 + Merge 장르 기획
- 동료 시스템 설계
- ScriptableObject 활용 가능성 높음
- 모바일(Android) 출시 방향 검토 중
따라서 우선순위는 다음과 같다.
Unity 기초
↓
Prefab
↓
UI
↓
ScriptableObject
↓
Addressables
↓
최적화
↓
출시
실무 메모
실무에서는 다음과 같은 방식이 권장된다.
- C# 이벤트 적극 활용
- Update 남용 금지
- Object Pooling 적용
- ScriptableObject 사용
- Addressables 적용
- MVC 또는 MVVM 구조 고려
- 모바일 최적화 우선
- GC 발생 최소화
- 싱글톤 남용 금지
- Git으로 버전 관리
Unity와 함께 사용하는 기술
대표 개발 도구
관련 문서
출처
- Unity 공식 문서
- Unity Learn
- Unity Manual