- LTS : 장기적으로 지원하는 버전
- Asset : 소스코드, 리소스 등을 저장하는 폴더
유니티 허브
- 유니티 에디터 버전과 프로젝트를 하나로 관리하는 프로그램
씬
- 유니티는 1개 이상의 씬이 계속 열려있다.
- Hierarchy 상단에서 현재 열려있는 씬의 이름을 확인할 수 있다.
- 씬을 새로 생성하면 자동 저장되지 않는다.
- Save를 직접 하지 않는다면 편집한 내용이 삭제된다.
- Hierarchy에서 씬 여러개의 요소를 한번에 확인하고싶다면 Hierarchy 창에 씬 아이콘을 드래그 앤 드롭하면 한번에 확인할 수 있다.
- 씬 : 게임 오브젝트들의 집합 + 씬 고유 설정들
게임 오브젝트
- 씬에 속하는 객체
- 컴포넌트들의 집합
- 모든 게임오브젝트는 Transform 컴포넌트를 가지고 있다.
- 게임 오브젝트안에 오브젝트를 끌어다 놓으면 자식 오브젝트가 된다.
- MeFilter : 오브젝트의 외곽선을 지정하는 컴포넌트다.
- Mesh Renderersh : 메쉬를 화면에 실제로 그리는 컴포넌트다.
- Material : 텍스쳐와 색을 오브젝트에 그리는 정보를 저장한 컴포넌트다.
- MAT 파일과 META 파일이 한번에 Material이라는 컴포넌트로 보여지는 것이다.
인스펙터
- 에셋(게임 오브젝트 등)을 선택할때 해당 해셋의 정보를 확인 및 편집할 수 있게하는 창이다.
- AddComponent : 선택한 게임오브젝트에 Component를 추가하는 버튼이다.
기즈모
- 디버깅을 위해 시각적으로 확인할 수 있는 도형이다.
컴포넌트
- 범용 컴포넌트 : RigidBody, Collider같이 유니티 엔진 내에서 쓸 수 있는 기본 컴포넌트들이 있다.
- 사용자 컴포넌트 : 스크립트 또한 컴포넌트다.
- RigidBody : 물리적인 작용을 구현한 컴포넌트다.
- 게임오브젝트에 추가하면 중력이 작용하고 다른 게임 오브젝트와의 Collider와 ‘충돌’이 적용되어 물리적인 작용도 적용된다.
- Collider : 충돌 작용을 구현한 컴포넌트다.
- 메인 카메라 : Camera 컴포넌트가 있고, Tag가 MainCamera인 게임 오브젝트가 메인 카메라다.
- 이 오브젝트를 비활성화하면 게임뷰가 렌더링되지 않는다.
- light : 게임상의 빛을 비추는 컴포넌트다.
- 스크립트에서 다른 컴포넌트를 레퍼런스로 변수를 선언해서 해당 컴포넌트를 조작할 수 있다.
- RigidBody 컴포넌트 변수를 선언하여 AddForce로 힘을 줄 수 있다.
좌표계
- Global : 씬 뷰의 좌표게에서의 오브젝트 Transform을 반환한다.
- 절대 좌표계 라고 부른다.
- Local : 선택한 오브젝트를 기준으로 화면에서의 좌표를 반환한다.
원근 투영
- 같은 사이즈의 오브젝트가 있을때 가까이 있는것은 크게, 먼것은 작게 그려지는 투영법이다.
- 3D 게임이 원근 투영을 사용한다.
직교 투영
- 같은 사이즈라면 멀리 있든 작게 있든 같은 크기로 그려지는 투영법이다.
- 2D 게임이 직교투영이다.
Meta 파일
- 인스펙터에서 수정되는 정보들이 저장되는 파일이다.
- 원본 파일 또는 폴더와 함께 생성된다.
유니티 프로젝트 저장방법
- Assets 폴더, Packages 폴더, ProjectSettings 폴더 3개를 압축해서 저장한다.
Asset
- Project에서 생성되는것은 ‘에셋’이고, Hierarchy에서 생성되는 것은 ‘게임 오브젝트’ 다.
- 구별해야한다.
유니티가 동작하는 원리
상속과 재사용
- 게임 엔진은 이미 완성된 기반 코드를 제공한다.
- 게임 엔진의 코드를 재사용 하므로 생산성이 올라간다.
- 유니티의 컴포넌트 기반 구조를 이해하려면 코드를 재사용하는 전통적 방법인 상속을 알아야한다.
- 재사용이라는것은 스크립트 하나만 만들면 그것을 컴포넌트로써 다른 게임 오브젝트에 추가하면 스크립트의 기능을 그대로 사용할 수 있다는것이다.
- 스크립트를 게임오브젝트에 컴포넌트로 추가하면 게임이 실행될때 해당 스크립트의 인스턴스가 생성되는 것이다.
- 한 오브젝트에 같은 스크립트가 여러개 붙어도 붙인만큼 인스턴스가 계속 생성된다.
- Monobehavior를 상속한 스크립트를 생성하면 해당 스크립트를 게임오브젝트의 컴포넌트로 사용할 수 있게된다.
상속의 한계
- 부모에서 정의한 기능이 필요없는 자식 클래스가 있을 수 있다.
- 부모 클래스의 기존 기능이 자식 클래스의 기능과 충돌할 수 있다.
- 해결방안 : 컴포넌트 패턴
컴포넌트 패턴
- 유니티는 게임 오브젝트를 컴포넌트 패턴을 사용해 만든다.
- 컴포넌트 패턴 혹은 컴포지션 패턴이란 : 미리 만들어진 부품을 조립하여 하나의 완성품을 만드는 패턴이다.
- 유연한 재사용이 가능하다.
- 기획자의 프로그래머 의존도가 낮아진다.
- 만들어진 컴포넌트를 조립하여 의도된 게임오브젝트를 만들 수 있다.
유니티 이벤트 함수
- 가상 함수가 아니다.
- 특정 순간에 호출하면 기능하는것을 예약하는 함수다.
- 생성자, 소멸자는 작성하면 안된다.
Start
- 게임 오브젝트가 생성되고 첫 Update 전에 실행되는 이벤트 함수다.
- 단 1번만 실행된다.
- 생성자의 역할을 하는 함수다.
Update
- 매 프레임 실행되는 함수다.
- 게임오브젝트에 넣게되면 해당 게임오브젝트를 기준으로 매 프레임 기능이 실행된다.
이벤트 함수 실행 순서
- Awake : 컴포넌트가 맨 처음 생성될 때 1번만 호출되는 함수다.
- OnEnable : 활성화되었을때 호출되는 함수 - 여러번 호출 가능
- Start
- Update
- FixedUpdate
- LateUpdate : 씬의 모든 업데이트 함수가 호출된 다음에 호출되는 함수다.
- OnDisable : 비활성화 될때 호출되는 함수다.
- OnDestroy : 오브젝트가 삭제될때 호출되는 함수다.
- 주의 : 오브젝트가 삭제되는것이지 오브젝트가 생성된 메모리가 삭제되는것이 아니다.
- 메모리의 삭제는 가비지 컬렉터가 작동할때 뿐이다.
Monobehaviour
- Monobehavior를 상속한 스크립트를 생성하면 해당 스크립트를 게임오브젝트의 컴포넌트로 사용할 수 있게된다.
- 해당 클래스는 유니티의 제어를 받을 수 있게 된다.
메시지 기반 방식
- 누가 메시지를 보냈는지, 누가 받게 될지 신경쓰지 않는 방식이다.
- 메시지를 받았을떄 메시지에 명시된 기능이 있다면 실행하고, 관련이 없으면 무시하는 방식이다.
브로드 캐스팅
- 특정 오브젝트를 가리지 않고 모든 오브젝트에 메시지를 보내는 방식이다.
- Start(), Update(), OnTriggerEnter() 등 유니티 이벤트 메서드가 동작하는 원리이다.
'공부 > Unity' 카테고리의 다른 글
| 플레이어 추적 후 발사, 게임판 회전, UI 추가, 플레이어 사망 후 정지, PlayerPrefs (1) | 2025.08.18 |
|---|---|
| Plane 아랫면이 안보이는 이유, 카메라, 메테리얼 생성, 컴포넌트 참조, 프리펩 (1) | 2025.08.18 |
| 25.05.28 - 게임 직무 설명, 공부해야하는 것들, 개발 환경 준비, 비주얼 스튜디오 기타 설명 (1) | 2025.05.28 |
| 24.06.14 (0) | 2024.06.14 |
| 24.06.13 (2) | 2024.06.13 |