繁体   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