You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
The text was updated successfully, but these errors were encountered:
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 the System.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.
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.
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
The text was updated successfully, but these errors were encountered: