Open Monsoonexe opened 4 weeks ago
But unity said
Record support
C# 9 init and record support comes with a few caveats.
- The type
System.Runtime.CompilerServices.IsExternalInit
is required for full record support as it uses init only setters, but is only available in .NET 5 and later (which Unity doesn’t support). Users can work around this issue by declaring theSystem.Runtime.CompilerServices.IsExternalInit
type in their own projects.- You shouldn’t use C# records in serialized types because Unity’s serialization system doesn’t support C# records.
https://docs.unity3d.com/2021.2/Documentation/Manual/CSharpCompiler.html
Which means unity should supports init when IsExternalInit
is declared.
Maybe you need to set language version to 9 or later.
Or maybe you need to compile it first.
add csc.rsp
in assets folder
-langVersion:preview
then use https://github.com/Cysharp/CsprojModifier set lang version to 11
Describe the bug
The readme claims that this repo can be used in Unity (the game engine, I'm assuming). However, this is not the case (tested in 2020.3). This repo uses the 'init' keyword for properties, which are explicitly not a feature supported by unity: source
Steps to reproduce the bug
Download source. Go through each folder of the 'lib' folder and copy-paste .dll into /Plugins folder in Unity. It'll compile. Now in your code, try to use any property that uses the 'init' keyword (in my case, none of the properties on
DeviceData
are supported. If you try to access these properties in your code, when you recompile in Unity, you'll get an error in the console about "property... is not supported by the language...". Even picking .dll from .net framework 3.5 or 4.5 has same issues.A work-around I use is to re-write the properties as extension methods and use Reflection to call the underlying
get_Name
auto-property functions.Unity 2020.3 (but the Unity 6 doc suggest this feature is still unsupported). Using Mono scripting backend 4.x.
Expected behavior
I expected the claims to be correct -- all features are supported. If some features aren't supported, please notate as such.
Screenshots
NuGet package version
Latest Source
.NET Platform
Others
Platform type
Windows
System version
No response
IDE
Visual Studio 2022
Additional context
No response