白黒羊

【Unity】 error CS0518: Predefined type `System.Range` is not defined or imported

環境

Unity Editor 2021.2.0b4

状況

Unity 2021.2ではC# 9.0の機能が使えるということで、JetBrains Riderに勧められるがままに Substring をC#8.0の新機能を使ってこんな感じに書いてみたら、

var sub = text[number..];

IDEではエラーが出なかったが、Unity Editorでエラーが出た。

What’s new in C# 8.0 – C# Guide _ Microsoft Docs

Unityのマニュアルを見ると C# 8.0 の Unsupported features として Indices and ranges が書かれている。使えないらしいです。

Unity – Manual_ C# compiler

エラーメッセージ

error CS0518: Predefined type System.Range is not defined or imported

解決策

① 元に戻す。

var sub = text.Substring(number);

② Unity Editorのバージョンをあげる。

2021.2.0b6のリリースノートに

Scripting: Allow user code to build against .NET Standard 2.1 and .NET Framework 4.8

https://unity3d.com/jp/unity/beta/2021.2.0b6

とあります。マニュアルには Unsupported Features に残っているままなのですが、これによって以降のバージョンでは Indices and Ranges が使えるようになっているようです。

今のところ2021.2.0b14まですべてのベータ版で使えています。