아래 코드에서 Instantiate 후 Destroy 할때 GameObject를 두 가지를 생성해야 하는 이유는 무엇인가요?
1476
작성한 질문수 4
안녕하세요, 매번 친절하게 답변해 주셔서 감사합니다. 강의에서 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의 결과물을 저장했다가 그것을 이용해 다시 삭제를 해줘야 합니다.
UI 기능 관련 질문이 있습니다!
0
31
2
픽셀 좌표 스크린 좌표
0
31
0
전체적으로 코드 읽는게 굉장히 오래 걸리네요...
0
71
2
카메라 #2 수업 캐릭터 쓰러짐 해결
0
82
1
플레이어 움직임이 끝날때, 기울어짐 현상
0
81
1
Input 적용과 관련하여 질문 있습니다.
0
73
1
디버그 불가.. Unity에 연결 불가
0
79
1
달리기 애니메이션 에러
0
86
2
오랜만에 게임을 만들다가 사운드 관련해서 뭔가 궁금한게 있어서 봤습니다
0
64
1
GetKey 오류
0
109
2
에셋을 어디에 올려두신지 알 수 있나요?
0
105
1
재귀호출? 오류나는데 왜 이래요 ?
0
168
6
Animation blending 파라미터 계산
0
66
1
newPos와 to지점이 겹쳐져야 하는거 아닌가요?
0
95
3
오브젝트 복제하니까 자꾸 이런게 뜨면서 꺼집니다
0
86
2
질문있습니다
0
142
2
아 이거 소스코드 같은거 없나요?
0
140
3
질문 드립니다. string.IsNullOrEmpty(name)
0
85
2
@Managers 가 씬에 배치되어 있어도 문제가 되지 않나요?
0
134
2
유니티6 NavMesh 안되는분들
1
174
1
Unity6 Unity-Chan Material 마젠타 문제 해결법
7
525
1
GetComponent<Poolable> 질문드립니다.
0
100
2
UI 불러오지 못함
0
116
2
UI 자동화 #1 - Util.cs의 FindChild함수에서 component.name에 컴포넌트 이름이 뜹니다.
0
155
2





