<유니티> 게임 오브젝트 삭제 함수

상태
시작 전
담당자
날짜
숫자
0

Destroy();

오브젝트 삭제 함수로 매개변수에 입력되어있는 오브젝트 or 컴포넌트를 삭제한다.

Destroy(Component);

using UnityEngine; public class Destroysample : MonoBehaviour { [SerializeField] private GameObject playerObject; private void Awake() { // playerObject 게임오브젝트의 "Player" 컴포넌트 삭제 Destroy(playerObject.GetComponent<Player>()); } }
C#
복사
게임을 진행하는 도중 플레이어의 공격을 받아 사망하는 적 오브젝트, 플레이어와 부딪혀 플레이어가 획득하게 되는 아이템 오브젝트와 같이 게임에서 영구적으로 사라져야 할 때, Destroy() 함수를 이용해 삭제하게 된다.

Destroy(GameObject)

using UnityEngine; public class Destroysample : MonoBehaviour { [SerializeField] private GameObject playerObject; private void Awake() { // playerObject 게임오브젝트 삭제 Destroy(playerObject); } }
C#
복사

Destroy(GameObject, time);

게임 오브젝트를 time 시간만큼 흐른 뒤에 삭제한다.
using UnityEngine; public class Destroysample : MonoBehaviour { [SerializeField] private GameObject playerObject; private void Awake() { // playerObject 게임오브젝트 2초 뒤에 삭제 Destroy(playerObject, 2.0f;); } }
C#
복사

특정 범위(위치)를 벗어났을 때 오브젝트 삭제

using UnityEngine; public class Destroysample : MonoBehaviour { private Vector2 limitMin = new Vector2(-7.5f,-4.5f); private Vector2 limitMax = new Vector2(7.5f,4.5f); private void Update() { // 이 스크립트를 가지고 있는 게임오브젝트의 x,y 좌표가 범위 밖으로 벗어나면 오브젝트 삭제 if(transform.position.x<limitMin.x||transform.position.x>limitMin.x|| transform.position.y<limitMin.y||transform.position.y>limitMin.y) { // 소문자 gameObject는 본인이 소속된 게임 오브젝트 Destroy(gameObject); } } }
C#
복사

특정 오브젝트와 충돌했을 때 오브젝트 삭제

using System.Collections; using UnityEngine; public class Wall : MonoBehaviour { private SpriteRenderer spriteRenderer; private void Awake() { spriteRenderer = GetComponent<SpriteRenderer>(); } private void OnTriggerEnter2D(Collider2D collision) { // 벽에 부딪힌 오브젝트를 삭제 Destroy(collision.gameObject); // 충돌이 일어나면 벽의 색상을 잠깐 변경한다 StartCoroutine("HitAnimation"); } private IEnumerator HitAnimation() { spriteRenderer.color = Color.red; yield return new WaitForSeconds(0.1f); spriteRenderer.color = Color.white; } }
C#
복사