naichi's lab

3日後の自分(他人)への書き置き

【Unity】RiderでUniTask使うとエラー「The return type of an async method must be void, Task or Task<T>」が出る

環境

  • MacOSX Mojave 10.14.2
  • Unity 2018.3.0f2
  • Rider 2018.3

概要

タイトルの通り、RiderでUniTaskを使ってこんな感じのコードを書くと、

async UniTask Hoge()
{
    //コード
}

こういうエラーが出る。

The return type of an async method must be void, Task or Task<T>  

f:id:naichilab:20181227212815p:plain

asyncメソッドは voidTaskTask<T> を返せやコラーってことらしい。

ちなみにUnityエディタ側のコンソールにはエラー出ていないし実行も可能。

解決方法

  1. Unity -> Preference -> Rider -> Override LangVersionにチェックを入れる。
  2. LangVersionを7.3にする。 f:id:naichilab:20181227213512p:plain
  3. Unityを再起動

これでエラー全部消えました。

さすがとりすーぷ先生。

ギルドでポロっと呟いたら即答もらえた。ありがたや〜。

2019.08.26 再発

Unity 2019.2.1f1 と Rider 2019.2.1 を使ってて、突然再発しました。

色々ググった結果、

Rider -> Preferences -> Build, Execution, Deployment -> Toolset and Build

にある Mono executable pathUse MSBuild version が古いUnityのままだったのでこれを選びなおしたらエラーは消えました。

f:id:naichilab:20190826034058p:plain:w320