facebook twitter hatena line email

Unity/UniTask

提供: 初心者エンジニアの簡易メモ
2021年9月15日 (水) 03:12時点におけるAdmin (トーク | 投稿記録)による版 (Admin がページ「Unity/UniRx/UniTask」を「Unity/UniTask」に、リダイレクトを残さずに移動しました)

移動: 案内検索

ダウンロード

https://github.com/Cysharp/UniTask/releases

Taskとの比較

UniTaskは、Taskより軽く、SynchronizationContextへの依存がない。

Taskサンプルはこちら

Unity/Csharp/別スレッド [ショートカット]

サンプル

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Threading.Tasks; // Taskサンプル用
// using UniRx.Async; // UniTask ver1
using Cysharp.Threading.Tasks; // UniTask ver2
public class SampleScene : MonoBehaviour
{
    void Start()
    {
        Exec();
    }
    async void Exec()
    {
        var result = await ExecUniTask();
        Debug.Log("Exec " + result); // Exec Hello!!
    }
    async UniTask<string> ExecUniTask()
    {
        return await Task.Run(() => "Hello!!");
    }
}

条件を満たしたら先へ

    async void Exec()
    {
        await UniTask.WaitUntil(() => transform.position.y < 0);
        Debug.Log("ok");
    }

MainCameraにaddComponentしてたら、Yの値を-1にすると先へ進む

参考

UniTask使い方 https://qiita.com/toRisouP/items/4445b6b9bf00e49eb147

UniTask ver2 https://qiita.com/toRisouP/items/8f66fd952eaffeaf3107