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#
복사