sound sepher's PASTIME

ゲーム開発で思ったことや、趣味などの話を書き綴っていきます。

【Unity】UniTask の復習

UniTaskの概要

非同期処理を行う Task を Unity に最適化したもの。
AsyncOperation(LoadAsync等) や DOTween なんかが、await できるようになる。

下記の記事がとてもわかりやすいので忘れたら読む。

qiita.com

qiita.com

await と Task

await はただ処理待ちするだけ。
Task は非同期処理を行う。

await Task~ と続けるのは、非同期処理が終わるまで待つ、という意味。

async と Task

「async Task メソッド名()」

async は非同期処理ですよ、と明示する修飾子。await を使うためのもの。
Task は非同期処理中の状態を示す戻り値。

async void…と続けると、戻り値がないので「await メソッド()」ができない。

ちなみに Task.Run (() => アクション) は、public static Task Run (Action action)

UniTaskの補足

UniTaskでDOTweenを使えるんですけども、初心者には使用方法がちょっとわかりにくい。
Scripting Define Symbols ってなんじゃらほい。

OpenUPMからDOTweenを導入する、またはScripting Define Symbolsに
「UNITASK_DOTWEEN_SUPPORT」を定義する

 Edit → ProjectSettings → PlayerSetting のタブ一番左の OtherSettings にある
(Icon、Resolution、Splash の次)

f:id:Ashtarte:20200712021140p:plain

ちなみにOdinを使ってる場合はこんな感じの表記

f:id:Ashtarte:20200712031444p:plain

UniTaskのネスト

下記はUIイメージにアタッチしたスクリプト
ボタンを押すと、このイメージをDOTweenで右方向へ1秒、左方向へ1秒動かします。

なお、移動完了するまでボタンを押しても無視されます。
あとホントはasync系はメソッド名の最後に Async とつけるのがマナーらしい。

f:id:Ashtarte:20200712021339p:plain

f:id:Ashtarte:20200712035413p:plain