-
[TIL] 5주차 2일 Prefab, Instantiate, Enum개발일지/스파르타 코딩클럽 부트캠프 2024. 5. 14. 20:47
오늘 배운 내용
프리팹 (Prefab)
어 프리팹 개념은 예전부터 알고 있었지만 정확한 개념과 장점 등을 복습했다.
- 프리팹은 Unity 게임 엔진에서 사용되는 게임 오브젝트를 재사용 가능하고 관리하기 쉽게 만들기 위한 템플릿, 프리셋
- 프리팹을 사용하면 게임 오브젝트와 그에 관련된 컴포넌트 및 설정을 미리 정의하고, 여러 장면이나 게임에서 재사용할 수 있다
- 프리팹은 인스턴스화를 통해 실제 게임 오브젝트로 변환될 수 있고, 이 때 모든 프로퍼티와 컴포넌트 설정이 복사된다.
- 프리팹의 변경사항은 모든 인스턴스에 즉시 반영되므로, 일관성을 유지하고 일괄적인 업데이트를 쉽게 할 수 있다.
- 프리팹은 레벨 디자인, 재사용 가능한 게임 요소(캐릭터, 아이템 등)의 생성, 프로토타이핑 등에 주로 사용된다.
여러가지가 있지만 아마 프리팹의 가장 큰 장점은 재사용이 아닐까 싶다.
예를들어서 내가 스퀘어 오브젝트를 100개 만들어놨는데 갑자기 색깔 바꾸라고하면 조졌다. 하는게 아니라
그냥 색 바꾼 프리팹 하나 만들어서 복사만 하면 되니까 얼마나 편리하지?
게임오브젝트를 에셋으로 만든다고 생각하면 될 거 같다.
Instantiate
Instantiate 함수는 Unity에서 제공하는 메소드인데 말 그대로 주어진 원본 개체의 복사본을 생성하고 반환하는
역할을 한다. 알고는 있었지만 사용하기 어려운 메소드라고 개인적으로 생각한다. 아직은
- 이 함수는 주로 게임 오브젝트, 즉 캐릭터, 아이템, 프로젝타일 등을 동적으로 게임 세계에 추가할 때 사용된다.
- Instantiate 함수는 원본 개체의 모든 컴포넌트와 그 프로퍼티를 복사하여 새 게임 오브젝트를 생성한다.
- 이 함수를 통해 생성된 게임 오브젝트는 독립적이며, 원본 개체에 대한 변화는 이에 영향을 주지 않는다.
- Instantiate 함수는 원본 게임 오브젝트, 위치 및 회전 정보를 인자로 받을 수 있다.
기본적인 Instantiate 함수의 형식은 다음과 같다.
public static Object Instantiate(Object original, Transform parent = null, bool instantiateInWorldSpace = false);
여기서
original : 생성할 오브젝트의 원본
parent : 생성된 오브젝트의 부모 Transform인데, 지정안하면 생성된 오브젝트는 부모없이 생성된다.
instantiateInWorldSpace(bool, optional) : 생성된 오브젝트의 위치를 월드 공간 또는 부모의 로컬 공간으로 할지 결정한다.
이번에 화살을 복사한 코드는 다음과 같다.
Instantiate(TestPrefab, projectileSpawnPosition.position, Quaternion.identity);
TestPrefab이 복사할 원본이고, projectileSpawnposition.position에 생성한다.
Quaternion.identity는 '회전 없음' 이다. 즉, 개체가 표준 축 또는 상위 축과 완벽히 정렬된다는 뜻이다.
Enum
Enum 열거형은 숫자에 의미부여를 한다고 생각하면 편하다.
기본 타입은 int를 기반으로, 제일 앞의 값을 0으로 하고 이후 1, 2, 3 .. 번호를 붙인다.
중간에 번호체계 변경도 가능하다. 직접 값을 지정해주면 된다.
그럼 열거형을 대체 왜 쓰는지 궁금해 하는 사람들이 있을거다
숫자에 의미부여를 왜하는데?
만약 아이템이 무기, 방어구, 장신구 등등 여러 타입이 있고
그에 따라서 코드를 작성한다고 쳐보자
아래 예시를 보면 단번에 이해할 수 있다.
if(ItemType == 0) if(ItemType == ItemType.Weapon)
ItemType이 0이라고 하면 내가 나중에 볼때도 다른 사람이 볼때도 대체 없다는건지 뭐라는건지 모를것이다.
'개발일지 > 스파르타 코딩클럽 부트캠프' 카테고리의 다른 글
[TIL] 5주차 5일 팀 프로젝트 진행중 , Scriptable Object (0) 2024.05.17 [TIL] 5주차 4일 팀 프로젝트 시작, 객체지향 특강 , C# 문법 복습 (0) 2024.05.16 [TIL] 5주차 1일 개인 과제 진행 ( Animater Override Controller) (0) 2024.05.13 [TIL] 4주차 5일 개인 프로젝트 진행중 ( 탑 다운 뷰 게임 ) (0) 2024.05.10 [TIL] 4주차 4일 Input System 그리고 게임수학 ( 오일러, 쿼터니언, 짐벌 락, 아크 탄젠트 ) (0) 2024.05.09