5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity2017でawaitしないasyncのwarningを消す方法

Posted at

##awaitしないasyncメソッドの警告

Unity2017になって、C#6.0が試験的とはいえ使用できるようになりました。
C#6.0といえば非同期処理としてasync, await記法が使えるバージョンですね!
さて、asyncを利用しているとよく見かけることになる警告があります。

warn.png

warning CS1998: Async block lacks `await' operator and will run synchronously

これは以下のようなコードで再現します。

public async Task NoAwait()
{
    Debug.Log("do something without await...");
}

##警告の対処法

ようは、関数にasyncをつけているのに何もawaitしないで終了するよ!という警告です。
この警告はうざったい!ということで、ググるとこいつを消す方法がいろいろ出てきます。
一例はこちら

#pragma warning disable 1998
public async Task NoAwait()
{
    Debug.Log("do something without await...");
}
#pragma warning restore 1998

はい、警告は出なくなりました。でもこれでは該当する箇所に全部書かないといけません。面倒ですね。
では、プロジェクト設定で無視するようにしましょう。

Visual Studioのプロジェクト設定、ビルドの項目にエラーおよび警告という設定項目があります。
表示しない警告に1998を設定しましょう。

projsetting.png

これで警告が無視できるようになるのであればこれで問題ありません。
ただ、Unityと連携しているとそもそもプロジェクト設定が開けなくなっていたりします。

##mcs.rspについて

mcs.rspというファイルがあります。これは古いバージョンではsmcs.rspという名前でした。
UnityプロジェクトのAssets直下に配置することで、defineシンボルの定義を設定することができます。
defineシンボルを定義する使い方はこちらを参照してください。
ここでは警告を無視する使い方を紹介します。

Assets/mcs.rsp
-nowarn:1998

これだけ書いたmcs.rspファイルをAssets直下に配置するだけで、表題の警告は出なくなります。

##余談

smcsの実体はUnityをインストールしたディレクトリに存在していて、windowsならUnity/Editor/Data/Mono/lib/mono/unity/smcs.exeにあります。
smcs.exe -helpを実行するとその他のオプションも全て出てきます。

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?