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」配下にインポートされ、プロジェクトウィンドウのフォルダにドラッグ&ドロップすると該当フォルダ配下にインポートされます。
バージョン7.0以降でUniRx.Async(UniTask)をインポートする流れは以上になります。
余談で憶測ですが、そのうちUniTaskという名前に合わせた名前空間に変わるのかもしれません。