ZLoggerはC#10以上を前提としてるのでそのままではUnityでは使えず軽くhackする必要があります。
Unity2022あたりだとだいたい公式に書いてある通りやればOKなんですがUnity6ではちょっと手順が違ったので備忘録としてメモしときます。
Unity 6000.1.4f1
IDE Rider 2025.2.2
まず公式にある以下の手順から、CsorojModifierが不要になります。
Install NuGetForUnity
- Required to install the dlls of ZLogger and its dependencies.
- Install CsprojModifier
Required to develop in the IDE with a new language version.- Install ZLogger.Unity package via git url.
Add https://github.com/Cysharp/ZLogger.git?path=src/ZLogger.Unity/Assets/ZLogger.Unity to Package Manager
ZLogger入れただけではUnityからもIDEからもC#9じゃだめだよ〜って怒られます。
Hoge.cs(10,1): error CS8773: Feature 'file-scoped namespace' is not available in C# 9.0. Please use language version 10.0 or greater.
それぞれ別の対応をしていきます。
Unity側
ZLogger公式に書いてあるとおりcsc.rspを置けばOKです。Assembly Definition使ってる場合は使ってるディレクトリ毎に置く必要があります。
-langVersion:10.0
余談:11を指定するとerror CS1617: Invalid option '11' for /langversion. Use '/langversion:?' to list supported values. とエラー。Unity 6000.1.2fで使えるC#バージョンを調べた所以下の感じでした・
latestmajor, preview, latest共に10を指すようです。というわけで大人しく-langVersion:10.0にしときます。
$ /Applications/Unity/Hub/Editor/6000.1.4f1/Unity.app/Contents/NetCoreRuntime/dotnet \
exec /Applications/Unity/Hub/Editor/6000.1.4f1/Unity.app/Contents/DotNetSdkRoslyn/csc.dll "/langversion:?"
サポートされる言語バージョン:
default
1
2
3
4
5
6
7.0
7.1
7.2
7.3
8.0
9.0
10.0 (default)
latestmajor
preview
latest
IDE側(Rider)
Unity2022などではIDE側の対応のためにCsprojModifierを使って*.csprojを書き換える感じでしたがこの手順は不要でAssetsと同階層にDirectory.Build.targetsというファイルを置きます。
<Project>
<PropertyGroup>
<LangVersion>10.0</LangVersion>
</PropertyGroup>
</Project>
これがあればcsprojの設定を上書きしてくれるようです。
ちなみにDirectory.Build.targetsというのもあってこちらはcsprojの設定より前に読まれるらしいですが、実がこのファイルを置いてもIDEのエラーが解消されてしまいました。謎。
余談1:Unity 6000.1.2fでもCsprojModifierを使ってみたんですけど書き換えが効いてくれませんでした。issueに上がってるのと同じ状況です。
余談2: Unity2022.3.61f1でもCsprojModifier使わずDirectory.Build.targetsで対応出来ました。このあたりはUnityがどうのこうのというよりはIDE(Rider)側がDirectory.Build.targetsに対応したってことなんでしょうか?ふんわり理解なのでよくわからず。
おわりに
Unity 6.3からUnity LoggingパッケージがDeprecatedになった
Unity公式のUnity LoggingパッケージがまさかのDeprecatedってことで移行が必要になる方はZLogger使っていきましょう。
Cysharp様いつも最高のSolutionをありがとうございます!死ぬほどお世話になってます。