What is Unity?
Unity는 3D 및 2D 비디오 게임의 개발 환경을 제공하는 게임엔진이자, 3D 애니메이션 건축 시각화, 가상현실, 증강현실 등 인터랙티브 콘텐츠 제작을 위한 통합 저작 도구이다.
다양한 멀티 플랫폼을 지원하고 가볍고 빠른 개발이 가능하여 게임 이외에도 다양한 분야에서 활용된다는 장점을 가지고 있다.
Quick Start
해당 링크를 참조해 설치하자.
Unity 기초
Interface
Unity 화면은 크게 4가지로 구분된다.
- Hierarchy : 게임 오브젝트를 확인하거나 만드는 창
- Scene : 게임 오브젝트를 Scene 창에서 볼 수 있다.
- Project : 게임을 구성하는 파일(그래픽, 사운드 등)이 들어가있는 창
- Inspector : 게임 오브젝트의 속성들을 확인하는 창
단축키
- Q : 화면 이동
- W : 화면에서 오브젝트들을 이동
- E : 오브젝트 회전
- R : 오브젝트 크기 수정
- T : 사각툴 - 크기 변경 (UI나 2D에서 많이 사용)
- 우클릭 : 카메라 회전
- Aly + 좌클릭 : 카메라 축 이동
- 방향키 : 카메라 자유이동
Lift Cycle (생명주기)
1. 초기화
- Awake()
private void Awake()
{
}
Awake() 함수는 게임 오브젝트가 장면 안에 생성될 때, 최초로 한번만 실행된다.
- Start()
void Start()
{
}
업데이트 시작 직전, 최초 실행
2. 물리연산
- FixedUpdate()
void FixedUpdate()
{
}
물리 연산을 하기 전에 실행되는 업데이트 함수, 업데이트 함수는 1초에 여러 번 작동(대략 50번). 고정된 실행 주기로 CPU를 많이 사용한다.
3. 게임로직
- Update()
void Update()
{
}
게임 로직을 업데이트하는 함수, 물리연산 로직을 제외한 나머지 주기적으로 변하는 로직을 넣어준다. 환경에 따라 실행 주기가 떨어질 수도 있다.
-LateUpdate()
void LateUpdate()
{
}
모든 업데이트 영역의 로직이 끝난 후 마지막으로 호출되는 함수, 캐릭터를 따라가는 카메라, 로직의 후처리 등을 담당
4. 해체
-OnDestroy()
void OnDestroy()
{
}
오브젝트가 삭제되기 직전에 무언가를 남기고 삭제할 때
5.활성화/비활성화
- OnEnable()
void OnEnable()
{
}
초기화와 물리 연산 사이에 존재하는 함수. 게임 오브젝트가 활성화 되었을 때 실행
- OnDisable()
void OnDisable()
{
}
모든 업데이트가 끝난 시점에 존재, 게임 오브젝트가 비활성화 되었을 때 실행
키보드 입력
유니티에서 키보드로 입력받을 때는 Input 클래스를 사용하면 된다.
- anyKeyDown
Input.anyKeyDown
실행하고나서 키보드나 마우스의 아무 입력을 최초로 받을 때 호출되며 bool 값을 갖는다.
- anyKey
Input.anyKey
anyKeyDown은 한 번 누르면 적용되는데 비해 anyKey는 키를 누르고 있으면 적용된다.
- GetKey
키보드 버튼을 입력을 받으면 True 상태로 변한다.
1) GetKeyDown()
if (Input.GetKeyDown(KeyCode.Return)
// Return은 엔터를 의미, KeypadEnter은 숫자패드의 엔터
//ESC는 Escape
Debug.Log("아이템을 구입하였습니다.");
키보드 버튼을 누를 때 True
2) GetKey()
if (Input.GetKey(KeyCode.LeftArrow)
Debug.Log("왼쪽으로 이동 중");
키보드 버튼을 누르고 있으면 True
3) GetKeyUp()
if (Input.GetKeyUp(KeyCode.RightArrow)
Debug.Log("오른쪽으로 이동을 멈추었습니다");
키보드 오른쪽 화살표 키를 누르고 있는 상태에서 떼면 True
- GetMouseButton
마우스 버튼을 입력받으면 True, 작동원리는 키보드와 같으며 매개변수로는 숫자를 받는다.(0은 마우스 왼쪽버튼, 1은 마우스 오른쪽 버튼을 의미)
if (Input.GetMouseButtonDown(0))
Debug.Log("미사일 발사!");
마우스 버튼을 누를 때 True
if (Input.GetMouseButton(0))
Debug.Log("미사일 모으는중...");
마우스 버튼을 누르고 있는 중일 때 True
if (Input.GetMouseButtonUp(0))
Debug.Log("슈퍼 미사일 발사!!");
마우스 버튼에서 뗄 때 True
- GetButton
마우스와 키보드 외에도 Unity에서 제공해주는 Button이 있다.
Unity 상단 Edit > Project Setting > Input Manager
에서 이를 확인할 수 있다.