UnityでC#6コードがコンパイルされないのはなぜですか?


9

UnityがC#6コードで動作しないのはなぜですか?常にコンパイラエラーが発生します。以下にいくつかのコード例を示します。

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

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

コードエディターとしてVisual Studioを使用し、エラーなしでビルドしています。Unityで再生を押してもビルドされません。


unity .net profile upgradeGoogleで検索
2017年

回答:


18

Unityは.NET3.5に基づく古いバージョンのMonoランタイムを使用します。機能の点でC#3と4の間の何かを使用します。

私はぐるぐる回ってこれを見つけました。それが機能するかどうかはわかりませんが、調査する価値があるかもしれません。


将来、新しい.NETプロファイルにアップグレードする計画があることは注目に値します(unity3d.com/unity/roadmap)。ただし、ロードマップに記載されている前提条件を考慮すると、2016年後半にのみ発生することがわかります。最も可能性が高いのは2017
いつか

7
この回答のリンクは
腐り

7
これが、概要を提供せずに人々がstackexchangeにリンクを投稿してはならない理由です。
Philipp

forum.unity3d.com/threads/…)ごとに、そのツールはもはや開発/サポートされていません。別の方法は(bitbucket.org/alexzzzz/unity-c-5.0-and-6.0-integration/src)ですが、これは個人的に使用しますが、(Visual Studioがそれを忘れるなどの)欠陥があるか、@ BenAdamsの回答を調べますより良いニュースのために、以下。
Khale_Kitha 2016


4

この YouTubeのビデオは、新しいプロジェクトを作成し、ターゲットの.Net Frameworkを3.5に戻し、ビルドとリリースの出力ディレクトリをUnityプロジェクトアセットフォルダーに設定し、 UnityEngine dllへの参照。デバッグは同じように機能するようです。


2

Visual StudioのコンパイラーはUnityのコンパイラーよりも多くの機能を備えています。つまり、一部のコード(特に新しいc#機能)は、Visual StudioではなくUnityでエラーを発生させます。

ただし、Unityがエディターで使用するものに最も近いものに一致するようにターゲットフレームワークを変更できます。Unity用のライブラリを開発するときにXamarinでこれを行いましたが、Visual Studioでも可能であるようです。

Visual StudioのDLLプロジェクトのプロパティで、ターゲットフレームワークプロパティを、使用しているUnityフレームワークのバージョンに設定します。これは、Unityフル、マイクロ、Webベースクラスライブラリなど、プロジェクトがターゲットとするAPI互換性に一致するUnityベースクラスライブラリです。これにより、DLLが他のフレームワークまたは互換性レベルに存在するが、使用しているUnityフレームワークバージョンには存在しない可能性があるフレームワークメソッドを呼び出せなくなります。

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


別のターゲットフレームワークを使用すると、Windows以外のプラットフォーム用にビルドするときに問題が発生する可能性があることを指摘しておくとよいでしょう。
フィリップ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.