I'm trying to use PriorityQueue
in Unity with C#. The documentation says that it's supported in .NET 6 in namespace System.Collections.Generic
.
I've tried:
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>();
}
}
But an error is thrown back:
The type or namespace name 'PriorityQueue<,>' could not be found (are you missing a using directive or an assembly reference?) [Assembly-CSharp]
I've checked the .NET version within VS Code:
Why doesn't it work in Unity?
The version reported by dotnet
is completely unrelated to Unity's C#/.NET version (at least until Unity finally migrates from Mono and then moves to CoreCLR etc.). While the language supported is almost equal to C# 9.0, the actual library that is used is a loose superset of what Mono provides, and actually is roughly equal to .NET Framework 4.8/.NET Standard 2.0 ATM; since neither of those has PriorityQueue
, it's simply not available. You can either: