🦔
UniTaskの導入
この記事で得られること
・UniTaskとはなんぞや
・コルーチンからの変換
・その他動画で知ったC#の小技
以下の動画で学んだことをまとめています
「【勉強配信】UniTaskを勉強します。 メリット/デメリット おすすめの使い方あれば教えてください」
UniTaskとはなんぞや
・コルーチンの強化版(詳しいことは他の人が書いているので略)
・例えば戻り値が使える(関数を実行して数字や文字列を返す)
導入方法
・Unityのプロジェクトを開いてこちら からunitypackageをインポート
コルーチンからの変換
まずはコルーチン:2秒経ったらログを出すコード
HogeHoge.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HogeHoge : MonoBehaviour
{
private void Start()
{
StartCoroutine(CorCor(2));
}
IEnumerator CorCor(float waitTime)
{
Debug.Log("CorCor初め");
yield return new WaitForSeconds(waitTime);
Debug.Log("CorCor終わり");
}
}
続いてUniTask:2秒経ったらログを出せるし、戻り値も受け取れる
HogeHoge.cs
using System.Collections;
using System.Collections.Generic;
using Cysharp.Threading.Tasks; // これがいるよ
using UnityEngine;
public class HogeHoge : MonoBehaviour
{
// async(えいしんく)をつける
private async void Start()
{
// 待機処理はawait(あうぇいと)
string studioName = await UniTaskWait(2);
Debug.Log($"studioName: {studioName}");
}
// asyncをつける
private async UniTask<string> UniTaskWait(float waitTime)
{
Debug.Log("UniTaskWait初め");
// 待機処理はawait
await UniTask.Delay((int)(waitTime * 1000));
Debug.Log("UniTaskWait終わり");
return "スタジオしまづ";
}
}
UniTaskとは関係ないプログラミングの小技
- $をつけるとログを出すとき+を書かなくてても綺麗にかける
Debug.Log($"studioName: {studioName}");
- 配列やリストのログはJoinで一発表示できる
int[] a = new int[3] { 34, 54, 1 };
string log = string.Join(",", a);
Debug.Log(log);
// 34,54,1
動画で田村村長が教えてくれました!
参考文献
・https://www.slideshare.net/torisoup/unitask-174974080
・http://negi-lab.blog.jp/MoveByUniTask
Discussion