Unity2018에서 직렬 통신할 수 없는 문제
4504 단어 .NETFrameworkC#Unity
소개
Arduino를 Unity와 연결하여 여러가지로 하고, LTS판이 나온 것을 계기로 Unity2018에 환경을 이행시키려고 했는데 에러가 발생했기 때문에 메모 때입니다.
2019/10/28 발생하고 있던 에러에 대해서 추기했습니다.
환경
또한 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 파일을 새롭게 넣어주는 방법이있었습니다.
Unity에서 .NET 4.x 사용
위 링크의 「.NET과의 호환성을 이용한다」라고 곳을 참고로 실시합니다.
다음 방법을 실행하기 전에 Build Settings를 열고 프로젝트 플랫폼을 UWP (Universal Windows Platform)로 변경하십시오 (2019/10/28 추가)
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?)
조사했을 때, Microsoft의 공식으로 Unity에 .NET의 dll 파일을 새롭게 넣어주는 방법이있었습니다.
Unity에서 .NET 4.x 사용
위 링크의 「.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 복사 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
코멘트를 근거로 내용을 수정했습니다.
Reference
이 문제에 관하여(Unity2018에서 직렬 통신할 수 없는 문제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Fox_Kei/items/dbe10141e36f6a91ee83
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Unity2018에서 직렬 통신할 수 없는 문제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Fox_Kei/items/dbe10141e36f6a91ee83텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)