#はじめに
ArduinoをUnityとつなげていろいろしていて,LTS版が出たことを機にUnity2018に環境を移行させようとしたところエラーが発生したのでメモっときます.
2019/10/28 発生していたエラーについて追記しました.
#環境
- OS:Windows10
- Unity2018.4.0f1
- Arduino Uno
なお,UnityとArduinoの接続に関してはこちら「UnityとArduinoをシリアル通信」にお世話になっております.
#エラー内容
いつものようにシリアル通信を行うためにAPI Compatibility Levelを.NET 2.0 Subnetから.NET2.0へ変更
(やり方は,こちらを参考にお願いします.)
(Unity2018.4.0f1ではAPI Compatibility LevelがOptimizationではなくConfigurationにある点に注意)
そして,「UnityとArduinoをシリアル通信」からお借りした「SerialHandler.cs」をAdd Componentしたところ...
Consoleに以下のような表示が
Assets\SerialHandler.cs(3,17): error CS0234: The type or namespace name 'Ports' does not exist in the namespace 'System.IO' (are you missing an assembly reference?) Assets\SerialHandler.cs(20,13): error CS0246: The type or namespace name 'SerialPort' could not be found (are you missing a using directive or an assembly reference?)
また,「SerialHandler.cs」をVS2017で開くと,
思いっきりエラーが出てます.
要約すると「System.IOにPertsってやつなんていないよ!」ってことなので,用意してあげたいと思います.
#解決方法
調べたら,Microsoftの公式でUnityに.NETのdllファイルを新たに入れてあげる方法がありました.
上記リンクの「.NET との互換性を利用する」ってところを参考に行います.
以下の方法を実行する前にBuild Settingsを開いて,プロジェクトのプラットフォームをUWP(Universal Windows Platform)に変更してください(2019/10/28追記)
- このリンクから「system.io.ports.4.6.0-preview5.19224.8」をダウンロード(2019/05/24現在のファイル名です.)して,拡張子を「.nupkg」から「.zip」へ変更し,解凍
- 解凍したフォルダ内の
lib/netstandard2.0
に移動し、System.IO.Ports.dll をコピー - Unity プロジェクトの Assets フォルダに、Plugins という名前の新しいフォルダを作成し,System.IO.Ports.dll ファイルをペースト
- さっきと同じAssetsフォルダに link.xml という以下のファイルを作成
<linker>
<assembly fullname="System.Core">
<type fullname="System.Linq.Expressions.Interpreter.LightLambda" preserve="all" />
</assembly>
</linker>
以上です.
#結果
もう一回「SerialHandler.cs」をVS2017で開くと
エラー表示が消えました~
UnityのConsoleにも表示が消えていると思います!
いやー,無事解決できてよかった!
なお,ビルドした状況で利用してないので,ビルドした場合どうなるかは不明です.
(追記1)
実は, Edit > Project Setting > Player > Inspector > Other Settings > Configuration にある Scripting Runtime Version を .NET 3.5 Equivalent に変更してもエラーは消えます.
.NET 4 にこだわる必要がない方はそっちでもいいかもしれませんね (-_-;)
(追記2)
現在,以下のようなエラーが確認されています.
解決策などありましたらご教授いただけると助かります...(-_-;)
PlatformNotSupportedException: System.IO.Ports is currently only supported on Windows.
2019/7/12
コメント欄で解決策を教えていただきました!
ご一読おねがいします。
2019/10/28
コメントを踏まえて内容を修正しました.