第一步是检查 Unity 是否可以识别这 2 个基本的 C# 6 功能MS site https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-6#null-conditional-operators.
1.尝试“索引初始化器”功能:
private Dictionary<int, string> webErrors = new Dictionary<int, string>
{
[404] = "Page not Found",
[302] = "Page moved, but left a forwarding address.",
[500] = "The web server can't come out to play today."
};
2。然后是“字符串插值”功能:
private string FirstName = "";
private string LastName = "";
public string FullName => $"{FirstName} {LastName}";
如果他们给你错误那么问题是not只是dynamic
关键字但是Visual Studio无法识别的问题.NET版本由Unity设置。
从评论部分来看,您的 Unity 无法编译第一个示例。
逐一完成这些步骤以找到可能的修复方法。做not跳过他们。
1.转到编辑-->项目设置-->播放器-->其他设置-->配置-->脚本运行时版本-->实验(.Net 4.6等效)。
2.转到编辑 --> 项目设置 --> 播放器 --> 其他设置 --> 配置 --> Api 兼容性级别 --> .NET 4.6
3.重新启动Unity编辑器和Visual Studio。您必须重新启动两者。
测试上面的两个 C# 功能。如果它们有效,那么dynamic
关键字也应该如此。如果他们不这样做,则继续执行#4。
4.更新Visual Studio。这个非常重要。将 Visual Studio 更新到最新版本/补丁。
5如果您仍然无法编译上述两个 C#6 功能,请重新安装 Visual Studio 和 Unity,然后执行步骤#1 and #2再次因为某些文件丢失。
6最后,如果您使 C#6 的两个功能都正常工作,但动态关键字仍然不起作用,则从统一2017.1 to 统一2017.2 https://unity3d.com/unity/beta。此版本修复了许多 .NET 问题。
请注意,我正在使用统一2017.2 https://unity3d.com/unity/beta与dynamic
关键字没有任何问题。还,GraphQL
工作正常。