using System.Collections; using UnityEngine; public class CoroutineExample : MonoBehaviour { private void Start() { StartCoroutine(MyCoroutine()); } private IEnumerator MyCoroutine() { Debug.Log("Coroutine Started"); yield return new WaitForSeconds(2.0f); Debug.Log("Coroutine Finished"); } }
using Cysharp.Threading.Tasks; using UnityEngine; public class UniTaskExample : MonoBehaviour { private async void Start() { Debug.Log("UniTask Started"); await UniTask.Delay(TimeSpan.FromSeconds(2)); Debug.Log("UniTask Finished"); } }
using System.Collections; using UnityEngine; public class CoroutineExample : MonoBehaviour { private void Start() { StartCoroutine(MyCoroutine()); } private IEnumerator MyCoroutine() { Debug.Log("Coroutine Started"); yield return new WaitForSeconds(2.0f); Debug.Log("Waited for 2 seconds in Coroutine"); yield return new WaitForEndOfFrame(); // ¸½ºß¤Î¥Õ¥ì¡¼¥à¤Î½ªÎ»¤òÂÔ¤Ä Debug.Log("Waited for EndOfFrame in Coroutine"); yield return new WaitForFixedUpdate(); // ¼¡¤ÎFixedUpdate¤òÂÔ¤Ä Debug.Log("Waited for FixedUpdate in Coroutine"); yield return new WaitUntil(() => Input.GetKeyDown(KeyCode.Space)); // ¾ò·ï¤¬Ëþ¤¿¤µ¤ì¤ë¤Þ¤ÇÂÔ¤Ä Debug.Log("Waited until Space key is pressed in Coroutine"); yield return null; // 1¥Õ¥ì¡¼¥àÂÔµ¡ Debug.Log("Waited for 1 frame in Coroutine"); } }
using Cysharp.Threading.Tasks; using UnityEngine; public class UniTaskExample : MonoBehaviour { private async void Start() { Debug.Log("UniTask Started"); await UniTask.Delay(TimeSpan.FromSeconds(2)); Debug.Log("Waited for 2 seconds in UniTask"); await UniTask.NextFrame(); // ¸½ºß¤Î¥Õ¥ì¡¼¥à¤Î½ªÎ»¤òÂÔ¤Ä Debug.Log("Waited for EndOfFrame in UniTask"); await UniTask.WaitForFixedUpdate(); // ¼¡¤ÎFixedUpdate¤òÂÔ¤Ä Debug.Log("Waited for FixedUpdate in UniTask"); await UniTask.WaitUntil(() => Input.GetKeyDown(KeyCode.Space)); // ¾ò·ï¤¬Ëþ¤¿¤µ¤ì¤ë¤Þ¤ÇÂÔ¤Ä Debug.Log("Waited until Space key is pressed in UniTask"); await UniTask.Yield(PlayerLoopTiming.PostLateUpdate); // 1¥Õ¥ì¡¼¥àÂÔµ¡ Debug.Log("Waited for 1 frame in UniTask"); } }
using System.Collections; using UnityEngine; public class CoroutineErrorHandling : MonoBehaviour { private void Start() { StartCoroutine(MyCoroutine()); } private IEnumerator MyCoroutine() { Debug.Log("Coroutine Started"); yield return new WaitForSeconds(2.0f); Debug.LogError("Coroutine Error"); } }
using Cysharp.Threading.Tasks; using UnityEngine; public class UniTaskErrorHandling : MonoBehaviour { private async void Start() { Debug.Log("UniTask Started"); await UniTask.Delay(TimeSpan.FromSeconds(2)); Debug.LogError("UniTask Error"); } }
using System.Collections; using UnityEngine; public class CoroutineCancellationExample : MonoBehaviour { private Coroutine myCoroutine; private void Start() { myCoroutine = StartCoroutine(MyCoroutine()); // 2Éøå¤Ë¥³¥ë¡¼¥Á¥ó¤ò¥¥ã¥ó¥»¥ë StartCoroutine(CancelCoroutineAfterDelay(2.0f)); } private IEnumerator MyCoroutine() { Debug.Log("Coroutine Started"); while (true) { yield return null; } } private IEnumerator CancelCoroutineAfterDelay(float delay) { yield return new WaitForSeconds(delay); StopCoroutine(myCoroutine); // ¥³¥ë¡¼¥Á¥ó¤ò¥¥ã¥ó¥»¥ë Debug.Log("Coroutine Canceled"); } }
using Cysharp.Threading.Tasks; using UnityEngine; public class UniTaskCancellationExample : MonoBehaviour { private async void Start() { // UniTask¤ò»ÈÍѤ·¤ÆÈóƱ´ü¥¿¥¹¥¯¤ò³«»Ï var task = MyUniTask(); // 2Éøå¤Ë¥¿¥¹¥¯¤ò¥¥ã¥ó¥»¥ë await UniTask.Delay(2000); task.Cancel(); Debug.Log("UniTask Canceled"); } private async UniTask MyUniTask() { Debug.Log("UniTask Started"); while (true) { await UniTask.Yield(); } } }
using System.Collections; using UnityEngine; public class CoroutineMultipleTasks : MonoBehaviour { private void Start() { StartCoroutine(DoMultipleTasks()); } private IEnumerator DoMultipleTasks() { Debug.Log("Coroutine Started"); yield return StartCoroutine(Task1()); yield return StartCoroutine(Task2()); Debug.Log("All Coroutine Tasks Finished"); } private IEnumerator Task1() { yield return new WaitForSeconds(2.0f); Debug.Log("Coroutine Task 1 Finished"); } private IEnumerator Task2() { yield return new WaitForSeconds(1.0f); Debug.Log("Coroutine Task 2 Finished"); } }
using Cysharp.Threading.Tasks; using UnityEngine; public class UniTaskMultipleTasks : MonoBehaviour { private async void Start() { Debug.Log("UniTask Started"); await Task1().ToUniTask(); await Task2().ToUniTask(); Debug.Log("All UniTask Tasks Finished"); } private async UniTaskVoid Task1() { await UniTask.Delay(TimeSpan.FromSeconds(2)); Debug.Log("UniTask Task 1 Finished"); } private async UniTaskVoid Task2() { await UniTask.Delay(TimeSpan.FromSeconds(1)); Debug.Log("UniTask Task 2 Finished"); } }