[Unity]UniRx.AsyncはUniTaskに分離されたので別々にインポートする必要がある

  • 更新日:
  • 公開日:

Unityの外部ライブラリ『UniRx』を使うため、サンプルコードを拝借すると以下2つのエラーが発生しました。

error CS0234: The type or namespace name 'Async' does not exist in the namespace 'UniRx' (are you missing an assembly reference?)
error CS0246: The type or namespace name 'UniTask' could not be found (are you missing a using directive or an assembly reference?)

どちらも「”Async(UniTask)”という名前空間は無いよ」との内容です。UniRxの非同期関係のプログラムを使おうとしたときのエラーでした。

エラーの原因

原因はエラーの通り、 UniRxに名前空間「Async」が付いたプログラムが無いことです。どうやらUniRx.Asyncバージョン7.0以降から『UniTask』という外部ライブラリに分離されたようです

以下はGitHubのドキュメント冒頭からの引用です。

Note: async/await integration(UniRx.Async) is separated to Cysharp/UniTask after ver. 7.0.

https://github.com/neuecc/UniRx

アセットストアにはUniRxしか無い

2019年10月24日現在、アセットストアにあるUniRxはバージョンが7.1.0で既に非同期関係のプログラムが切り離されたバージョンなので、UniRx.Asyncのメソッドなどを使用すると上記のエラーが発生してしまいます。(Visual StudioなどのIDEなら構文解析の時点で赤波線が表示されるかと思います。)

UnityのアセットストアにはまだUniTaskがリリースされていないので、現在はGitHubから「UniRx」と「UniTask」両方をダウンロードしてプロジェクトにインポートする方法で対応します。

UniRxとUniTaskを別個でインストールする

各々GitHubのリリースページよりUnityパッケージをダウンロードします。

UniRxは「UniRx.unitypackage」で、UniTaskは「UniRx.unitypackage」という名前でリリースされています。

赤枠部分からダウンロードできます。

後はUnityで該当プロジェクトを開いた状態で、パッケージファイルを開きインポートするだけ。パッケージファイルをそのまま開くと「Plugins」配下にインポートされ、プロジェクトウィンドウのフォルダにドラッグ&ドロップすると該当フォルダ配下にインポートされます。

開くとインポートウインドウが開かれるので”Import”を押して完了

バージョン7.0以降でUniRx.Async(UniTask)をインポートする流れは以上になります。


余談で憶測ですが、そのうちUniTaskという名前に合わせた名前空間に変わるのかもしれません。

書いた人

Symbol Mark

Ryoichi(しつ)

除菌ティッシュを買い込んで使いきれずによく乾かす人。

療養目的で退職し、どうやって生きていくか模索中。最近は勉強目的でLaravelやVue.js弄ったり、趣味で音で遊んでます。

※2019年10月16日現在ブログリニューアル中です。崩れなどが発生していたらすみません。

うぇぶ: @s_ryone