반응형
유니티에서 파티클을 자동으로 제거하는 방법에 대해서 알아보자.
스크립트가 무조건 필요하다.
ParticleSystem.IsAlive(true)인지 질의하여 파티클을 삭제하는 스크립트를 추가하면 되는데 아래 에셋에서 더 좋은 기능이 첨부되어 있는 스크립트를 찾았다.
JMO Assets - Cartoon FX - 파티클 프리팹 - CFX_AutoDestructShuriken 스크립트
[RequireComponent(typeof(ParticleSystem))] public class CFX_AutoDestructShuriken : MonoBehaviour { // If true, deactivate the object instead of destroying it public bool OnlyDeactivate; void OnEnable() { StartCoroutine("CheckIfAlive"); } IEnumerator CheckIfAlive () { ParticleSystem ps = this.GetComponent(); while(true && ps != null) { yield return new WaitForSeconds(0.5f); if(!ps.IsAlive(true)) { if(OnlyDeactivate) { #if UNITY_3_5 this.gameObject.SetActiveRecursively(false); #else this.gameObject.SetActive(false); #endif } else GameObject.Destroy(this.gameObject); break; } } } }
요렇게 하면 좋은점은 프리팹에서 OnlyDeactivate를 체크하면 파티클이 플레이가 끝나도 파티클을 삭제하지 않고 비활성화만 해주는 추가적인 기능이 있어서 더 좋다.
반응형
'Unity > 팁' 카테고리의 다른 글
유니티 애드몹 리워드 비디오 보상 설정 (0) | 2019.08.21 |
---|---|
유니티 안드로이드 앱 번들 사용 방법 (2) | 2019.08.13 |
유니티 UI 클릭 영역 확장 (0) | 2019.07.30 |
유니티 MAC Application.persistentDataPath 경로 이동 (0) | 2019.06.19 |
Unity Physics bouncy objects sliding along surfaces (0) | 2019.05.09 |