중첩 프리펩

Cyclic nesting detected 에러

프리펩은 자기 자신의 자식이 되지 못한다. 

- 인스턴스에서는 가능하지만 프리펩에서 하면 연결점들이 다 고장나서 불가능하게 되어있음 (자기 자신 아래에 자기 자신이 있어야하고 그 아래에 자기자신이 있어야하고.....)

에러

 

부모 프리펩의 스케일이 1이 아닐 때

프리펩의 부모 오브젝트에서 가능하다면 스케일을 모두 1로 고정하는 게 좋다. 왜냐

부모 프리펩 스케일이 1이 아닐 때

자식 프리펩을 회전하면 깨지기 때문이다. 부모 스케일을 1로 어떻게 만들까?

자식을 회전

월드에 Empty Object를 생성하여(스케일 1,1,1) 그 자식으로 Cube와 Capsule을 놓으면 된다.

부모 스케일이 1이니 깨지지 않고 회전할 수 있다.

* 프리펩 월드로 갔을 때 Context : Normal을 선택하면 기본 씬에 있는 것처럼 보이게 된다.

Context : Normal

 

모든 프리펩의 속성을 수정하고 싶을 때

부모에 있는 자식 캡슐에 그냥 색을 입히고 Override 하더라도 독립적인 원본 프리펩에는 그 정보가 적용되지 않는다.

프리펩의 전체를 수정할 때는 해당 오브젝트의 프리펩 모드로 들어가 수정하는 게 좋다.

프리펩 전체 수정하기
수정 후

 

기존 프리펩으로 새 프리펩 만들기

캡슐을 변형하고 프로젝트 창으로 드래그 앤 드롭을 하여 Original Prefab을 만들었을 때 이전에 있던 원본 프리펩을 삭제해도 원본 인스턴스는 씬에 남아있다.

Capsule 1 생성 후 Capsule 삭제
프리펩이 아닌 인스턴스로 남아있음

이 게임 오브젝트를 프로젝트 창에 드래그 앤 드롭하면 다시 프리펩으로 만들 수 있음

다시 프리펩화하기

씬에 있는 프리펩을 Unpack을 하면 이 해당 오브젝트는 인스턴스가 되고 프로젝트 창에 프리펩은 남아있음 

해당 오브젝트만 인스턴스화 하는 것임

Unpack
인스턴스화

 

복습

프리펩 인스턴스에서 많은 걸 바꾸고 부모에서 Override 하더라도 프로젝트 창 기존 프리펩에는 연동이 안 될 경우 인스턴스를 Original Prefab으로 만들고 이것을 기준으로 다른 프리펩도 설정해준 뒤 (왼쪽 프리펩이라면 오른쪽 프리펩도 Original Prefab으로 만든 걸로 복사해줘야함) 기존에 있던 프로젝트 창의 프리펩은 제거해준다. => 옛것을 버리고 최근거를 원본 프리펩으로 만드는 것 

구버전 프리펩 교체

프리펩에서 컬러 변경시 같이 바뀜

교체 완료

 

'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 아르곤 침공' 카테고리의 다른 글

배열과 foreach문  (0) 2022.08.29
발사 Input System  (0) 2022.08.26
레이저 총알 파티클  (0) 2022.08.26
게임 플레이 조율하기  (0) 2022.08.26
플레이어 회전  (0) 2022.08.26

+ Recent posts