• [학생] 유니티5 에서 폭팔효과 만들고, 잠시후에 오브젝트 지우는 방법...2016.06.17 PM 02:43

게시물 주소 FONT글자 작게하기 글자 키우기


되야할거같은데 안되네요..
오브젝트 인스탄시에이트 한다음에 효과 나오고, 3초후에 삭제되게 하고자 하고싶습니다만..
이렇게 하면 바로지울수 없다고 에러가 나옵니다.
Destroying assets is not permitted to avoid data loss.
If you really want to remove an asset use DestroyImmediate (theObject, true);

DestroyImmediate해도 안되네요..
방법이 없을까요?

public class a : MonoBehaviour {
public GameObject spark;
void OnCollisionEnter(Collision col)
{

Debug.Log (col.collider.tag);
if (col.collider.gameObject.tag == "bullet")
{
Destroy(col.collider.gameObject);
Instantiate (spark, col.collider.gameObject.transform.p-osition, col.collider.gameObject.transform.rotation);
//StartCoroutine (Example ());
Destroy (spark 3.2f);
}


}
/*IEnumerator Example(){
yield return new WaitForSeconds (3);
}*/


}

댓글 : 8 개
Destroy (spark 3.2f);
콤마 빠지신거 같은데...
그것도 그거지만 Destroy 함수에 시간 지정이 가능했던가요?
안되는걸로 알고 있는데...
Invoke를 쓰시던 아니면 주석해두신 코루틴을 쓰시던 해야할거 같네요
몇초후에 삭제하라는 인자값이 있습니다
음 있긴 있네요
콤마만 넣으시면 될듯한데요

Destroy(폭발이펙트, 시간);
이렇게 하면 됩니다.
파티클 시스템이면 파티클이 끝났는지 확인하는 함수가 있습니다 그걸로 체크하셔서 지우셔두 됩니다.
ParticleSystem.IsAlive() 라는 함수입니다.
Instantiate 호출할 때 리턴 받는 object의 인스턴스를 참조 안 하시는 거 같은데요...

spark가 리소스 내에 있는 원본이면 Destroy로 바로 시킬 때 에러를 내죠..의도한 거 같지 않다고..

Instantiate 호출 뒤 리턴 받는 object를 Destroy하셔요..아마 그 의도로 쓰실 듯 한데 ㅎㅎ
그리고 Destroy(col.collider.gameObject); 의 위치가,
Instantiate 보다 아래에 놓으셔야...Instantiate 할 때 위치정보를 참조하시네요. 상당히 위험해져요..
친구글 비밀글 댓글 쓰기