Help us understand the problem. What is going on with this article?

UnityのWebSocket-Sharpを使用する際、error CS0246になる場合。

More than 1 year has passed since last update.

Unityでwebsocketを使用する方法は、多くの記事に書かれています。
UnityでWebSocketを使用する
などの記事をご参照ください。
本記事ではMonoDevelopでなくVisualStudioを使用しております。

多くの記事ではwebsocket-sharpを使用していますが、C#でサーバーやクライアントの処理を書いた際にUnity側でerror CS0246: The type or namespace WebSocketSharp could not found. Are you missing an assembly reference?というエラーが出ることがあります。その時の対処法についてです。


エラーメッセージ

  1. UnityのConsoleでerror CS0246: The type or namespace WebSocketSharp could not found. Are you missing an assembly reference?error CS0246: The type or namespace WebSocket could not found. Are you missing an assembly reference?がでる。

  2. Assets配下、もしくはAssets/Plugins配下にあるwebsocket.sharpファイル(これはwebsocket-sharp/bin/Release/websocket-sharp.dllファイルをUnityにインポートしたファイルです)をInspectorで見た際、Plugin targets .NET 4.x and is marked as compatible with Editor, Editor can only use assemblies targeting .NET 3.5 or lower, please unselect Editor as compatible platformがでる。

解決法

エラーの原因は.NETのバージョンが異なっていることです。どうやら.NET 4.x と.NET 3.5以下は全く別の種類らしく、websocket-sharpでは.NET 3.5以下を使用する必要があるそうです。そこでもう一度dllファイルを.NET 3.5形式で作り直します。

  1. GitHubからもう一度websocket-sharpをダウンロードし、解凍。
  2. websocket-sharp-master配下のwebsocket-sharp.slnを開く、その後いくつかのポップアップメッセージの後に 、ターゲットを .NET Framework 4.5 に変更する。.NET Framework <バージョン> のターゲット パックをダウンロードします。プロジェクトは変更されません。プロジェクトをロードしない。の3つの選択肢が出てくると思います。その時に.NET Framework <バージョン> のターゲット パックをダウンロードします。プロジェクトは変更されません。を選択します。
  3. 検索エンジンが開き、.NETのページが開くと思います。その場所で.NET Framework 3.5 SP1を選択し、ダウンロードします。このダウンロードには少し時間がかかります。
  4. .NET 3.5がダウンロードできたら、もう一度websocket-sharp.slnを開きます。するとそのままポップアップメッセージがでることなく開けると思うので、ソリューションエクスプローラーからExample系4つを削除し、Releaseモードにしてデバッグを行います。
  5. websocket-sharp/bin/Release/websocket-sharp.dllができると思うので、そのファイルをUnityのAssets配下もしくはAssets/Plugins配下にインポートします。そうすると問題なくUnityで実行できるようになるはずです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away