[TIL-260122] 코루틴과 유니티이벤트

데비·2026년 1월 22일

본과정

목록 보기
38/64

오늘 배운 내용

- 코루틴(Coroutine)

- 유니티 이벤트


코루틴(Coroutine)

  • 유니티에서 함수의 실행을 일시중지하고, 나중에 다시 이어서 실행할 수 있는 아주 유용하고 범용적인 개념이다.
  • 이러한 동작 방식 때문에 마치 비동기적으로 작업을 처리하는 것 같지만 코루틴은 라이프 사이클 내에서 직렬적으로 일을 처리하는 동기 작업이다.

- 코루틴의 중요한 개념

  1. 사용이 끝나면 반드시 중지할 것

    • 코루틴을 실행하면 클래스 객체가 생성되며 메모리가 할당된다. 이를 별도로 해제하지 않는 상태로 반복/누적이 될 경우, 메모리 누수가 발생할 수 있다.
  2. 코루틴을 변수에 담아 사용하기

    • 코루틴을 실행하면 클래스 객체가 생성되기 때문에, 힙 메로리에 클래스 인스턴스가 할당된다.
    • 주기적으로 실행되어야 하는 코루틴의 경우 변수를 선언해 미리 힙에 할당하고, 해당 변수에 생성되는 코루틴 객체를 할당하는 방식을 사용하면 메모리 공간을 절약하면서 사용할 수 있기 때문에 메모리 단편화를 방지할 수 있다.
private IEnumerator TestCoroutine()
{
}
// 코루틴이 들어가게되면 중간에 로직을 일시정지 시키고
// 다음 예약된 순간에 다시 중단된 지점부터 이어서 수행하게 된다.

유니티 이벤트

  • 유니티 이벤트는 델리게이트와 비슷한 용도로 사용할 수 있지만 유니티엔진에서 더 편리하게 사용할 수 있도록 고안된 기능이다.
using UnityEngine;
using UnityEngine.Events;

public class PlayerController : MonoBehaviour
{
	[field: serializeFied]public UnityEvent OnPetCalled { get; private set; } = new();

	private void Update()
    {
    	if(Input.GetKeyDown(KeyCode.Space))
        {
        	CallPet();
        }
    }
	
    private void CallPet()
    {
    	OnPetCalled.Invoke();
    }
}

0개의 댓글