using System.Collections; using UnityEngine; public class CoroutineExample : MonoBehaviour { private void Start() { StartCoroutine(WaitAndPrint()); } private IEnumerator WaitAndPrint() { yield return new WaitForSeconds(1); Debug.Log("Hello after 1 second!"); } }
using System.Collections; using UnityEngine; public class CoroutineExample : MonoBehaviour { private void Start() { StartCoroutine(Process1()); } private IEnumerator Process1() { yield return new WaitForSeconds(1f); Debug.Log("Process1 finished!"); StartCoroutine(Process2()); } private IEnumerator Process2() { yield return new WaitUntil(() => Input.GetButtonDown("Fire1")); Debug.Log("Process2 finished!"); StartCoroutine(Process3()); } private IEnumerator Process3() { yield return new WaitForSeconds(1f); Debug.Log("Process3 finished!"); } }
using Cysharp.Threading.Tasks; using UnityEngine; public class UniTaskExample : MonoBehaviour { private async void Start() { await Process1(); await Process2(); await Process3(); } private async UniTask Process1() { await UniTask.Delay(1000); Debug.Log("Process1 finished!"); } private async UniTask Process2() { await UniTask.WaitUntil(() => Input.GetButtonDown("Fire1")); Debug.Log("Process2 finished!"); } private async UniTask Process3() { await UniTask.DelayFrame(60); Debug.Log("Process3 finished!"); } }
using Cysharp.Threading.Tasks; using UnityEngine; using System.Threading; public class UniTaskCancellationTokenExample : MonoBehaviour { public GameObject button; public GameObject cancelButton; private CancellationTokenSource cancellationTokenSource; private async void Start() { using (cancellationTokenSource = new CancellationTokenSource()) { await WaitUntilButtonPressed(); } } private async UniTask WaitUntilButtonPressed() { try { await UniTask.WaitUntil(() => button.GetComponent<Button>().IsPressed(), cancellationToken: cancellationTokenSource.Token); Debug.Log("Button pressed!"); } catch (OperationCanceledException) { Debug.Log("Waiting for button press cancelled!"); } } public void OnCancelButtonPressed() { cancellationTokenSource.Cancel(); } }
using Cysharp.Threading.Tasks; using UnityEngine; public class UniTaskExample : MonoBehaviour { private CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); private async void Start() { await Process1(); await Process2(); await Process3(); } private async UniTask Process1() { await UniTask.Delay(1000, cancellationToken: cancellationTokenSource.Token); Debug.Log("Process1 finished!"); } private async UniTask Process2() { await UniTask.WaitUntil(() => Input.GetButtonDown("Fire1"), cancellationToken: cancellationTokenSource.Token); Debug.Log("Process2 finished!"); } private async UniTask Process3() { await UniTask.DelayFrame(60, cancellationToken: cancellationTokenSource.Token); Debug.Log("Process3 finished!"); } public void CancelAllProcesses() { cancellationTokenSource.Cancel(); } }
using Cysharp.Threading.Tasks; using UnityEngine; public class UniTaskErrorHandlingExample : MonoBehaviour { private async void Start() { try { await Process(); } catch (System.Exception e) { Debug.Log("An error occurred: " + e.Message); } } private async UniTask Process() { // Here, something might throw an exception... } }
using Cysharp.Threading.Tasks; using UnityEngine; public class UniTaskExample : MonoBehaviour { private CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); private async void Start() { try { await Process1(); await Process2(); await Process3(); } catch (OperationCanceledException) { Debug.Log("Task was cancelled!"); } } private async UniTask Process1() { await UniTask.Delay(1000, cancellationToken: cancellationTokenSource.Token); Debug.Log("Process1 finished!"); } private async UniTask Process2() { await UniTask.WaitUntil(() => Input.GetButtonDown("Fire1"), cancellationToken: cancellationTokenSource.Token); Debug.Log("Process2 finished!"); } private async UniTask Process3() { await UniTask.DelayFrame(60, cancellationToken: cancellationTokenSource.Token); Debug.Log("Process3 finished!"); } public void CancelAllProcesses() { cancellationTokenSource.Cancel(); } }¡¡
using Cysharp.Threading.Tasks; using UnityEngine; using DG.Tweening; public class UniTaskDOTweenExample : MonoBehaviour { public GameObject target; private async void Start() { var token = this.GetCancellationTokenOnDestroy(); try { await target.transform.DOMove(new Vector3(10, 0, 0), 1).ToUniTask(cancellationToken: token); Debug.Log("Move completed!"); } catch (OperationCanceledException) { Debug.Log("Move cancelled!"); } } }
¡¡await target.transform.DOMove(new Vector3(10, 0, 0), 1).ToUniTask(cancellationToken: token);
¡¡await target.DOMove(new Vector3(10, 0, 0), 1).AsyncWaitForCompletion(cancellationToken: token);
Tween tween = target.DOMove(new Vector3(10, 0, 0), 1); await tween.ToUniTask(cancellationToken: token);