簡體   English   中英

Unity Visual Studio C#版本同步

[英]Unity Visual Studio C# version synchronization

我剛開始在我的Unity游戲中使用委托和事件來在適當的時候更新標簽,而不是每幀更新標簽,盡管大多數時候沒有發生變化。

為了確保,這是一個靜態事件調用

public static event OnSomething onSomething;

實際上有聽眾,我用

if (onSomething!= null) {
    onSomething();
}

這只是一個方便的問題,但Visual Studio 14(2015)說,這可以簡化為

onSomething?.Invoke();

我也更喜歡,因為我熟悉nullables並想使用它們,但如果我確實將代碼更改為建議,Unity表示

error CS1644: Feature `null propagating operator' cannot be used, because it is not part of the C# 4.0 language specification.

那么有沒有辦法讓Unity項目使用C#的v4.0,或者我可以告訴Visual Studio,該項目使用舊版本的C#,所以它會停止這些建議嗎?

編輯:很少澄清:我不一定要使用任何特定的C#版本。 我想使用最新版本來使用這些“酷炫的新功能”,只要沒有主要原因不使用最新版本。

我不一定要使用任何特定的C#版本。 我想使用最新版本來使用這些“酷炫的新功能”,只要沒有主要原因不使用最新版本。

Unity 沒有 正式支持.NET 3以上的任何內容。 雖然,他們目前正在研究這個問題。 他們希望首先支持.NET 4,然后支持其他.NET版本。

你能在Unity中使用最新的C#嗎?

是!

butbucket上有一個專門用於此項目的項目,稱為“Unity C#5.0和6.0集成” 你可以在這里得到它。 它允許您完成此操作,並在該站點上發布使用它所需的說明。

這適用於iOS,Android,Windows和MacOS,但我不會使用它來發布我的游戲只是因為它沒有得到官方支持。


至於你的嘗試使用

onSomething?.Invoke();

我建議你不要在你的Unity中使用它。 如果你養成使用它的習慣,你會遇到很多問題。

這樣做的原因是Unity使用了ComponentsGameObjects 自定義相等運算符 如果您嘗試在ComponentGameObject上執行此操作,它將無法工作。 你只會為自己創造很多問題。 這里是一個的例子, 這里的另一個原因是在Unity工作時要遠離零傳播了。

編輯

2017年團結現在支持 4.6,這將使此功能工作,但我還是會建議你測試和試驗了很多本,以確保不存在大的問題,如期間它釋放你的比賽前的運行時間。

Unity最近發布了.NET 4.6的預覽版本,可以通過以下方式啟用:編輯>項目設置>播放器並將腳本運行時版本設置為'實驗(.NET 4.6等效)'。

但是,您至少需要Unity 2017.1才能使用此功能。

我已經添加了一些鏈接,其中包含更多信息: https//docs.unity3d.com/Manual/ScriptingRuntimeUpgrade.html

我想指出C#4.0與.NET 3.5,4.0,4.5等無關。它是Visual Studio和編譯器的版本。 您從Visual Studio獲得建議的原因是您使用2015或更新版本。

我自己厭倦了這個建議並找到了一種方法來禁用它,不幸的是它會在你曾經使用過的所有項目解決方案中禁用它。 請注意,這是特定於Visual Studio 2015,我有企業版,尚未在Community Edition上進行測試,因此不確定它是否適用於該版本,或者文件的位置可能位於不同的位置,但這是我的方式禁用它:

Visual Studio 2015使用規則集進行代碼分析,現在您可以通過右鍵單擊項目選擇屬性來更改每個項目的項目規則,然后轉到底部的代碼分析選項卡,但每次添加C#時Unity都會游戲腳本將覆蓋您對項目文件所做的任何更改。 所以我做的如下

在文件夾中:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\Rule Sets

是Visual Studio 2015用於代碼分析的所有規則集,如果您編輯文件:

MinimumRecommendedRules.ruleset

並添加:

<Rules AnalyzerId="Microsoft.CodeAnalysis.CSharp.Features" RuleNamespace="Microsoft.CodeAnalysis.CSharp.Features">
    <Rule Id="IDE1005" Action="None" />
</Rules>

在結束</RuleSet> ,它將在所有項目上全局禁用建議。

希望這可以幫助那些也厭倦了Unity項目中的建議的人

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM