본문 바로가기

전체 글120

7. yield return 에 대해 ( 최종화 : 최적화 ) 이제까지 yield return과 코루틴을 활용하는 방법을 알아보았습니다. 이번 글에서는 코루틴을 더 효율적으로 사용하는 방법과 InvokeRepeating() 과의 차이점을 살펴보겠습니다. WaitForSeconds 캐싱으로 최적화하기코루틴에서 yield return new WaitForSeconds(time);을 반복적으로 호출하면 매번 새로운 객체가 생성되면서 GC(Garbage Collection) 부담이 생길 수 있습니다. 이를 방지하려면 WaitForSeconds 객체를 미리 생성해서 재사용하는 것이 좋습니다. 기존 방식 (비효율적)IEnumerator ExampleCoroutine(){ while (true) { Debug.Log("실행 중"); yield.. 2025. 3. 9.
6. yield return 에 대해 ( Coroutine 을 중지하고자 할 때 ) 이전 글에서는 유니티에서 yield return을 활용하여 2D 스프라이트 애니메이션을 구현하는 방법을 다루었습니다. 이번 글에서는 코루틴을 중지하는 다양한 방법과 yield break 를 활용하는 방법을 살펴보겠습니다. StopCoroutine()을 사용하여 코루틴 중지하기Unity에서는 StopCoroutine()을 사용하여 실행 중인 코루틴을 중지할 수 있습니다. StopCoroutine()에는 두 가지 방식이 있습니다. 1. 코루틴의 이름을 사용하여 중지void Start(){ StartCoroutine("ExampleCoroutine");}IEnumerator ExampleCoroutine(){ while (true) { Debug.Log("코루틴 실행 중"); .. 2025. 3. 9.
5. yield return 에 대해 ( 활용 02 ) 이전 글에서는 유니티에서 yield return을 사용하여 이동 애니메이션, 타이머, 이벤트 대기 같은 기능을 구현하는 방법을 알아보았습니다. 이번 글에서는 yield return 을 활용하여 2D 스프라이트 애니메이션을 구현하는 방법을 다루겠습니다. yield return을 사용한 스프라이트 애니메이션2D 게임에서는 특정 시간 간격마다 스프라이트를 변경하는 방식으로 애니메이션을 구현합니다. 코루틴을 사용하면 별도의 업데이트 로직 없이 자연스럽게 애니메이션을 처리할 수 있습니다. 아래는 yield return을 사용하여 스프라이트 애니메이션을 실행하는 예제입니다.IEnumerator PlaySpriteAnimation(SpriteRenderer renderer, Sprite[] frames, float .. 2025. 3. 9.
4. yield return 에 대해 ( 활용 01 ) 이전 글에서는 yield return이 Unity에서 StartCoroutine()을 통해 어떻게 실행되는지 살펴보았습니다. 이번 글에서는 yield return 을 활용하여 실제 게임에서 자주 사용되는 패턴을 구현해보겠습니다. yield return을 활용한 애니메이션 제어yield return을 사용하면 특정 시간 간격으로 실행되는 애니메이션을 쉽게 만들 수 있습니다. 예를 들어, 일정 간격으로 오브젝트의 위치를 변경하는 간단한 애니메이션을 만들어 보겠습니다.IEnumerator MoveObject(Transform obj, Vector3 target, float duration){ Vector3 s = obj.position; float t = 0f; while (t 코루.. 2025. 3. 9.
3. yield return 에 대해 (유니티에서의 동작) 이전 글에서는 yield return이 내부적으로 IEnumerator 인터페이스를 구현하는 클래스로 변환된다는 것을 알아보았습니다. 이번 글에서는 yield return이 Unity에서 코루틴과 어떻게 연결되는지 살펴보겠습니다. StartCoroutine() 은 IEnumerator 객체를 실행한다Unity 에서 yield return을 활용하려면 StartCoroutine() 을 사용해야 합니다.StartCoroutine() 은 IEnumerator를 인자로 받아 이를 실행하는 역할을 합니다.예제 코드를 보겠습니다void Start(){ StartCoroutine(MyCoroutine());}IEnumerator MyCoroutine(){ Debug.Log("Step 1"); yiel.. 2025. 3. 9.
2. yield return 에 대해 (내부 동작) 이전 글에서 yield return 을 사용하면 함수 실행을 중간에 멈췄다가 다시 실행할 수 있다는 것을 배웠습니다. 그렇다면, C# 은 어떻게 이를 가능하게 할까요? 이번 글에서는 yield return 이 내부적으로 어떻게 동작하는지 알아보겠습니다. yield return 이 포함된 함수는 컴파일 단계에서 변환된다yield return 을 포함한 함수는 일반적인 함수처럼 작동하는 것이 아니라, 컴파일러에 의해 특별한 클래스로 변환됩니다. 즉, C# 컴파일러는 해당 함수를 IEnumerator 인터페이스를 구현하는 클래스로 변환하여 실행 흐름을 제어합니다. 예를 들어, 다음 코드를 보겠습니다:IEnumerator MyCoroutine(){ Console.WriteLine("Step 1"); .. 2025. 3. 9.