작성
·
1.4K
2
안녕하세요, 매번 친절하게 답변해 주셔서 감사합니다. 강의에서 6분50초 근처 내용입니다.
public class PrefabTest : MonoBehaviour
{
GameObject prefab;
GameObject tank;
void Start()
{
prefab = Resources.Load<GameObject>("Prefabs/Tank");
tank = Instantiate(prefab);
Destroy(tank, 3.0f);
}
}
위와 같이 하면 정상적으로 작동하는 점 확인했습니다. 그런데 여기서 게임오브젝트 prefab와 tank가 왜 각각 따로 필요한가요?
public class PrefabTest : MonoBehaviour
{
GameObject prefab;
void Start()
{
prefab = Resources.Load<GameObject>("Prefabs/Tank");
Instantiate(prefab);
Destroy(prefab, 3.0f);
}
}
이렇게 해보았더니 생성은 되는데 정상적으로 삭제가 안되더라구요. ㅠㅠ 어떤 차이인가요?
답변 1
6
Resources.Load까지만 했으면
게임 세상에 물체를 배치한 것이 아니라,
프리팹으로 만들어진 물체의 샘플을 생성한 것에 가깝습니다.
즉 public GameObject prefab;으로 만들고
유니티 툴상에서 드래그드롭으로 연결해준 것과 유사합니다.
샘플을 게임 세상에 실제로 생성하려면 Instantiate을 해야 하는데,
그제서야 비로소 게임 세상 (Scene)에 실제 물체가 생기는 것입니다.
Destroy는 거꾸로 게임 세상에 생성된 물체를 삭제하는 것이기 때문에
Instante의 결과물을 저장했다가 그것을 이용해 다시 삭제를 해줘야 합니다.