C#25 8. yield return 에 대해 ( 그 외 ) IEnumerator 와 yield return 은 이해가 완벽히 되지 않더라도 사용하는데는 크게 지장이 없습니다.다만, 이게 왜 이렇게 될까 ? 기존 문법에도 안맞는것 같고 ... 그러다보면 코드가 잘 눈에 안들어옵니다.그러다보니, 내용이 좀 길어졌습니다. 그리고 아직 다 전달하지 못한 내용들은 여기에 두서없이 적어놓겠습니다. 보충편 : 코루틴과 IEnumerator의 숨겨진 개념들이전 글에서는 코루틴의 기본적인 개념과 활용법을 다루었습니다. 하지만 코루틴을 배우면서 헷갈릴 수 있는 개념들이 몇 가지 있습니다. 이번 보충편에서는 그동안 다루지 못했던 중요한 개념들을 정리해 보겠습니다. IEnumerator는 함수 호출이 곧 객체 생성이다?코루틴을 처음 배울 때 가장 헷갈릴 수 있는 개념 중 하나가 바.. 2025. 3. 9. 7. yield return 에 대해 ( 최종화 : 최적화 ) 이제까지 yield return과 코루틴을 활용하는 방법을 알아보았습니다. 이번 글에서는 코루틴을 더 효율적으로 사용하는 방법과 InvokeRepeating() 과의 차이점을 살펴보겠습니다. WaitForSeconds 캐싱으로 최적화하기코루틴에서 yield return new WaitForSeconds(time);을 반복적으로 호출하면 매번 새로운 객체가 생성되면서 GC(Garbage Collection) 부담이 생길 수 있습니다. 이를 방지하려면 WaitForSeconds 객체를 미리 생성해서 재사용하는 것이 좋습니다. 기존 방식 (비효율적)IEnumerator ExampleCoroutine(){ while (true) { Debug.Log("실행 중"); yiel.. 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 frameT.. 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"); yie.. 2025. 3. 9. 이전 1 2 3 4 5 다음