Unity C#脚本字典初始化器不属于C#4.0语言规范

Car*_* S. 1 c# dictionary initializer unity-game-engine

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

Assets / App / Models / AnnotationModel.cs(39,17):错误CS1644:无法使用功能“字典初始化程序”,因为它不属于C#4.0语言规范

以下是触发这些错误块的代码:

["CameraPose"] = ConvertToken(CameraPose),
["Aspect"] = Aspect,
["Image"] = Image.Id,
["Fov"] = Fov,
["IsAnchored"] = IsAnchored,
["AnchorPosition"] = ConvertToken(AnchorPosition),
["DrawLines"] = ConvertToken(DrawLines),
["SurfaceDrawLines"] = ConvertToken(SurfaceDrawLines)
Run Code Online (Sandbox Code Playgroud)

初始化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;  
Run Code Online (Sandbox Code Playgroud)

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

Rod*_*ues 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)}
Run Code Online (Sandbox Code Playgroud)
  1. 在Unity中配置您的项目以使用该语言的最新版本。

请遵循以下指示

Edit->Project Settings->Player->Other Settings->Configuration->Scripting Runtime Version
Run Code Online (Sandbox Code Playgroud)