2D,3D 그래픽을 지원하는 다목적 게임엔진, 멀티플랫폼 지원
유니티 허브를 통해 유니티를 설치하는 방식으로 이루어짐

기존의 프로젝트를 불러올때 버전 차이로 경고메시지가 뜨는 경우엔 Confirm, Continue를 누르고 진행해도 무방한 것이, 유니티 엔진이 버전차이를 알아서 해결해주기 때문.

상속을 통해 이미 만들어진 클래스에 새로운 코드 및 기능을 덧붙여 새로운 클래스를 만들어 내는 것
부모 클래스의 기능이 추후 구현한 자식 클래스와 충돌 가능
예를들어 Human Class에 물리 기능을 담아놓고, NPC class 에서 이를 상속하여 사용할 경우, 움직임이 필요 없음에도 물리 기능으로 인해 이동 가능
새로운 오브젝트 생성의 곤란함
부모 클래스의 기능들을 면밀히 따져봐야 하기 때문에 새로운 오브젝트 생성시 생산성이 떨어질 수 있음
미리 만들어진 부품(컴포넌트)를 조립하여 완성된 오브젝트를 만드는 방식
부품마다 대표 기능을 하나씩 몰아넣고 이를 조립하는 방식
따라서 게임 오브젝트는 빈 껍데기이고, 이를 필요한 컴포넌트로 채우며 완성시키는 것이 Unity의 방식
컴포넌트 구조에선 메시지와 브로드 캐스팅 방식을 활용하여 컴포넌트의 특정 기능을 실행
유니티의 모든 컴포넌트는 MonoBehavior 클래스를 상속.
이 클래스를 상속하기 때문에 유니티의 제어를 받아 기본 기능을 제공
메시지 방식은 누가 메시지를 보냈는지, 받는지 신경쓰지 않기 때문에
독립성 유지 가능

메시지와 같은 이름을 가진 메서드가 있다면 이를 실행
유니티에서는 이름 철자만 똑같이 구현해놓으면 메시지에 의해 자동으로 실행