1

我在 Unity 项目的代码中重复出现以下错误

Assets/App/Models/AnnotationModel.cs(39,17): error CS1644: Feature `dictionary initializer' 不能使用,因为它不是 C# 4.0 语言规范的一部分

触发这些错误块的代码如下

["CameraPose"] = ConvertToken(CameraPose),
["Aspect"] = Aspect,
["Image"] = Image.Id,
["Fov"] = Fov,
["IsAnchored"] = IsAnchored,
["AnchorPosition"] = ConvertToken(AnchorPosition),
["DrawLines"] = ConvertToken(DrawLines),
["SurfaceDrawLines"] = ConvertToken(SurfaceDrawLines)

初始化 C# 字典的新方法是什么?我已尝试(未成功)在 C# 4.0 语言规范中找到初始化的更新版本。
如果有帮助,下面的代码显示了这些对象是什么

public Pose CameraPose;
public float Aspect;
public ImageModel Image;
[Range(0, 120)] public float Fov = 60;
public bool IsAnchored;
public Vector3 AnchorPosition;
public List<List<Vector2>> DrawLines;
public List<List<Vector3>> SurfaceDrawLines;  

任何帮助将不胜感激!我对 Unity 和 C# 完全陌生。

4

1 回答 1

5

初始化 C# 字典的新方法是什么?我已尝试(未成功)在 C# 4.0 语言规范中找到初始化的更新版本。

似乎您认为初始化字典的方式已经过时,您需要找到新的方法。正好相反!初始化字典的方式是一个新功能,添加到版本 c#6.0 中的语言中。但是 Unity3d 默认使用 c#4.0 的旧版本语言。

您在这里有 2 个选项:

  1. 调整您的代码以使用c#4.0 之前可用的语法。

大概是这样的:

{"CameraPose", ConvertToken(CameraPose)},
{"Aspect", Aspect},
{"Image", Image.Id},
{"Fov", Fov},
{"IsAnchored", IsAnchored},
{"AnchorPosition", ConvertToken(AnchorPosition)},
{"DrawLines", ConvertToken(DrawLines)},
{"SurfaceDrawLines", ConvertToken(SurfaceDrawLines)}
  1. 在 Unity 中配置您的项目以使用该语言的更新版本。

请遵循以下说明

Edit->Project Settings->Player->Other Settings->Configuration->Scripting Runtime Version
于 2018-06-29T00:19:37.077 回答