C # 6 코드가 Unity에서 컴파일되지 않는 이유는 무엇입니까?


9

C # 6 코드로 Unity를 사용할 수없는 이유는 무엇 입니까? 항상 컴파일러 오류가 발생합니다. 다음은 몇 가지 코드 예입니다.

using static System.Convert;
using static System.Environment;

$"€{punten}{NewLine}€{Money}{NewLine}€{KilledEnemies}{NewLine}€{bonus}{NewLine}€{total}";

Visual Studio를 코드 편집기로 사용하고 오류없이 빌드합니다. Unity에서 play를 누르면 빌드되지 않습니다.


unity .net profile upgradeGoogle 검색
Matth

답변:


18

Unity는 .NET3.5를 기반으로하는 이전 버전의 Mono 런타임을 사용합니다. 기능면에서 C # 3과 4 사이의 무언가를 사용합니다.

나는 인터넷 검색으로 이것을 발견 했다. 작동하는지 확실하지 않지만 조사 할 가치가있는 것일 수 있습니다.


향후 언젠가 새로운 .NET 프로파일로 업그레이드 할 계획이 있습니다 ( unity3d.com/unity/roadmap ). 그러나 로드맵에 명시된 전제 조건을 감안할 때 가장 이른 2016 년 말에야 2017 년 언젠가까지 일어날 가능성이 가장 높습니다.
evilcandybag

7
이 답변의 링크가 사라지고 이제 404를 반환합니다. (
ashes999

7
이것이 사람들이 시놉시스를 제공하지 않고 stackexchange에 링크를 게시해서는 안되는 이유입니다.
Philipp

해당 도구는 더 이상 ( forum.unity3d.com/threads/… ) 개발 / 지원되지 않습니다. 대안은 ( bitbucket.org/alexzzzz/unity-c-5.0-and-6.0-integration/src )이며, Visual Studio에서 잊어 버리는 것과 같은 결함이 있지만 @ BenAdams의 답변을 보더라도 개인적으로 사용합니다. 더 나은 소식을 보려면 아래를 참조하십시오.
Khale_Kitha


4

YouTube 의이 비디오 는 새 프로젝트를 만들고 대상 .Net Framework를 다시 3.5로 변경하고 빌드 및 릴리스 출력 디렉토리를 Unity 프로젝트 자산 폴더로 설정하고 Unity 프로젝트 자산 폴더를 추가하여 누군가가 Unity에서 C # 6 구문을 사용하는 방법을 보여줍니다. UnityEngine dll에 대한 참조입니다. 디버깅도 동일하게 작동합니다.


2

Visual Studio의 컴파일러에는 Unity의 컴파일러보다 많은 기능이 있습니다. 즉, 일부 코드 (특히 최신 c # 기능)는 Unity에서는 오류를 발생 시키지만 Visual Studio에서는 오류가 발생하지 않습니다.

그러나 Unity가 에디터에서 사용하는 것과 가장 유사한 타겟 프레임 워크를 변경할 수 있습니다. Unity 용 라이브러리를 개발할 때 Xamarin 에서이 작업을 수행했지만 Visual Studio에서도 가능합니다.

Visual Studio의 DLL 프로젝트 속성에서 대상 프레임 워크 속성을 사용중인 Unity 프레임 워크 버전으로 설정하십시오. Unity 전체, 마이크로 또는 웹 기반 클래스 라이브러리와 같이 프로젝트가 대상으로하는 API 호환성과 일치하는 Unity 기본 클래스 라이브러리입니다. 이렇게하면 DLL이 다른 프레임 워크 또는 호환성 수준에는 있지만 사용중인 Unity 프레임 워크 버전에는없는 프레임 워크 메서드를 호출 할 수 없습니다.

https://msdn.microsoft.com/en-us/library/dn940020.aspx


다른 대상 프레임 워크를 사용하면 Windows 이외의 다른 플랫폼을 빌드 할 때 문제가 발생할 수 있음을 지적 할 수 있습니다.
Philipp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.