void Update
{
timer+= Time.deltaTime;
shittimer += Time.deltaTime;
if (timer > speed)
{
timer = 0f;
Shit();
}
if (shittimer > 2f)
{
shittimer = 1f;
if (transform.childCount > 4)
{
Destroy(transform.GetChild(0).gameObject, 0.0f);
}
else if (transform.childCount <= 4)
{
Shit();
}
}
}
void Shit()
{
Transform bullet;
bullet = GameManager.Instance.pool.Get(prefabId).transform; //개수만큼 무기 생성
bullet.position = transform.position;
bullet.parent = transform; //부모옵젝
}
골든메탈님 강의 들으면서 만들다가 이제는 무기를 여러개 만들어야겠다는 생각에 무기를 추가하려했습니다.
제가 원하는건 카오스 칸젤 블레이즈 스탭처럼 걸어 다니면서 불길을 만들어내고 몇초후에 자동으로 없어지는 그런 매커니즘을 만들고 싶은데
destroy를 해버리니 이후에 오브젝트가 모두 생성이 안되더라고요.
그러다보니 코드가 꼬여서 저렇게 됐는데 경고창에는 GameObject가 이미 파괴됐는데 계속 접근하려고 한다고 하고 어떻게 해야할지 모르겠네요.
혹시 이런 스크립트 관련해서 잘 아시는분이 있는지 여쭤봅니다.
풀링시스템에서 생성된 오브젝트를 없애는게 아니라 꺼야될 것 같아요
생성된 오브젝트의 지속시간 관리는 해당 오브젝트에서 관리하는 게 편할 수도 있어요.
저도 잘 모르는 입장이지만 같은 비기너로써 보자면 Using after free 현상 같은데 크래시 나는 게 당연하지 않을까요? 오브젝트를 파괴하면 주소를 날리셨다는건데 그 날아간 주소를 다시 불러오는 건 불가능하지 않을까 싶습니다 그냥 흘려들으셔도 좋습니다만 oop에 대해서 다시 한 번 고찰해보심이 어떠실지요?
코루틴 한번 써보세요
다들 감사합니다