无法在Unity中使用C# .NET 6 PriorityQueue

问题描述 投票:0回答:1

我正在尝试在 Unity 中通过 C# 使用

PriorityQueue
文档说它在.NET 6命名空间
System.Collections.Generic
中受支持。

我已经尝试过:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class Test : Monobehaviour
{
    void Start()
    {
        var queue = new PriorityQueue<int, int>();
    }
}

但是返回了一个错误:

The type or namespace name 'PriorityQueue<,>' could not be found (are
you missing a using directive or an assembly reference?)
[Assembly-CSharp]

我已经检查了 VS Code 中的 .NET 版本: enter image description here

为什么它在Unity中不起作用?

c# unity-game-engine .net-6.0 priority-queue
1个回答
26
投票

dotnet
报告的版本与Unity的C#/.NET版本完全无关(至少在Unity最终从Mono迁移到然后迁移到CoreCLR等之前)。 虽然支持的语言几乎等于 C# 9.0,但实际使用的是 Mono 提供的松散超集,实际上大致等于 .NET Framework 4.8/.NET Standard 2.0 ATM;因为它们都没有
PriorityQueue
,所以它根本不可用。您可以:

  • 等待向 .NET 6+ 的过渡(请注意,这可能需要几年时间 - 到 2025 年,这仍然是一项持续的努力,CoreCLR 支持被宣布为 ~Unity 7 beta 的“即将到来”:),
  • 使用第三方实施,
  • 自己实现,
  • 复制粘贴官方来源的代码 (需要进行一些小调整才能正常工作)或
  • 使用这个 来自官方 C# 库的直接端口 (单文件直接插入,由我移植,开源,不附加任何条件)。
© www.soinside.com 2019 - 2024. All rights reserved.