본문 바로가기

Unity

게임오브젝트 삭제 함수

반응형

Destroy();

오브젝트 삭제 함수로 오브젝트 or 컴포넌트 삭제 가능

컴포넌트 삭제

public class DestroySample : MonoBehaviour
{
    [SerializeField]
    private GameObject player;
   private void Awake()
    {
        Destroy(player.GetComponent<PlayerController>());
    }

}

오브젝트 삭제

public class DestroySample : MonoBehaviour
{
    [SerializeField]
    private GameObject player;
   private void Awake()
    {
        Destroy(player);
    }

}

빈 Object에 위 스크립트를 넣고 GameObject로 PlayerController 컴포넌트가 적용된 Player 객체를 집어넣으면

Player를 가져와서 삭제시키는 로직이 적용됨

 

Destroy(GameObject, time)으로 일정시간 뒤 삭제하도록 구현 가능

 

위치를 벗어났을 때 오브젝트 삭제

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()
    {
       if(transform.position.x < limitMin.x || transform.position.x > limitMax.x ||
          transform.position.y < limitMin.y || transform.position.y > limitMax.y])
        {
            Destroy(gameObject);
        }
    }

}

소문자 gameObject는 자기자신을 의미한다

 

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

  • 충돌할 두 물체에 Collider 적용 필수
  • 두 물체 중 한개 이상에 RigidBody 적용 필수
  • 두 물체 중 하나 이상에 IsTrigger 체크 필요
    • Collider에서 체크
public class DestroySample : 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;
    }
}

벽에 위 스크립트를 적용하면 자신에게 충돌되는 물체가 collision.gameObject로 들어옴

코루틴

  • 시간의 경과에 따른 명령을 주고싶을 때 사용하게 되는 문법.
  • 코루틴을 사용한다면 일정 시간 멈춰있다가 동작하는 등 작업을 수행할 수 있음
  • Update에서 이걸 수행하려면 Time.deltaTime으로 카운팅 해가면서 작업해야 함 
    • 비용이 많이 든다

 

 

반응형

'Unity' 카테고리의 다른 글

Instantiate 활용 예제  (0) 2023.07.23
게임 오브젝트 생성 함수  (0) 2023.07.23
게임오브젝트 물리와 충돌  (0) 2023.07.23
게임 오브젝트 이동  (0) 2023.07.23
이벤트 함수  (0) 2023.07.23