• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

제대로 이해한건지 확인 부탁드립니다

21.09.16 10:25 작성 조회수 61

0

안녕하세요!

이해를 한 것 같은데 조금 헷갈리는 부분이 있어서, 확인을 부탁드려요

 

강의 중반부에 GameManager에서 적을 생성하는 부분을 수정할 때,

 

EnemyScript enemyPrefabScript = tr.GetComponent<EnemyScript>()

.....

GameObjec enemyObj = ...

...

EnemyScript enemyScript = enemyObj.GetComponent<EnemyScript>()

 

이렇게 나오는 부분에서 처음에 나온 EnemyScript랑 두번째 나온 EnemyScript는 다른 인스턴스에서 나온거죠?

 

예전 강의에서, 프리펩은 유니티 엔진만을 사용해서, 클래스 같은 걸 만들어 둔거라고 하셨잖아요

그리고 이부분에서 프리펩을 적 웨이브의 도안으로 사용하고 계시고요

 

처음에 나온 EnemyScript는 프리펩에서 적 타입을 읽어오기 위한 거지 실제로 게임에서 인스턴스화 되는 EnemyScript 클래스가 아니죠?

두번째로 나온 EnemyScript야 말로, 첫번째 EnemyScript로 만든 실제 EnemyScript 인스턴스에 부착된 EnemyScript인거죠?

답변 1

답변을 작성해보세요.

0

안녕하세요.

프리펩을 클래스로 만들었다는 의미는 폴더에 있는 프리펩이 클래스와 같은 의미로 말씀드린 거고요. 

계층뷰로 올라가는 항목들은 프리펩을 가지고 실제 메모리에 생겨납니다. 

미리 존재하고 있어도 관계없고요. 계층뷰에 존재하게 되는 연결되어 있는 프리펩의 경우에 하나의 메모리, 인스턴스입니다. 그곳에 있는 데이터도 읽어와서 사용하고 두번째 enemyObj 는 Instantiate 를 시키는 인스턴스겠죠.

그래서 프리펩에 있는 정보를 불러와서 enemyObj 의 필요한 부분에 대입을 하고 있습니다.

즉 둘다 인스턴스입니다. 프리펩이 클래스가 된다는 의미는 프로젝트 뷰에 있을때 클래스라는 것으로 말씀드렸고요. 실제로 계층뷰에 그것이 올라가면 다른 하나의 메모리가 생겨나는 것입니다. 

감사합니다.