环境
Unity 2019.4.18f1
第三方插件
unity.webp@0.3.9
https://github.com/netpyoung/unity.webp
问题
导入后C#报错:
the name "unsafe" does not exist in the current context
查看https://github.com/netpyoung/unity.webp/blob/master/unity_project/Packages/manifest.json
发现插件依赖于org.nuget.system.runtime.compilerservices.unsafe@6.0.0
,应该是与我这个版本的unity的unsafe版本不一致
解决方法一
升级unity版本,不过我没测试过哪个版本可以,你可以试试2022.2
解决方法二
从NuGet下载对应版本的dll:
https://www.nuget.org/packages/System.Runtime.CompilerServices.Unsafe/6.0.0
点击右侧的Download Package或者直接下载:
https://www.nuget.org/api/v2/package/System.Runtime.CompilerServices.Unsafe/6.0.0
将下载下来的system.runtime.compilerservices.unsafe.6.0.0.unpkg
重命名为system.runtime.compilerservices.unsafe.6.0.0.zip
,解压后,将其中的lib/{xxx}/System.Runtime.CompilerServices.Unsafe.dll
放入你的工程中。
{xxx}
视你的项目project setting而定。
进一步的问题
假如你使用了微信小游戏插件,那上面这个做法会带来另外的报错,因微信小游戏插件也依赖System.Runtime.CompilerServices.Unsafe.dll
。解决方法是不要按上面说法把下载下来的dll放入工程中,而是直接将微信小游戏插件里的dll挪出来作为公共库,即将Assets/WX-WASM-SDK/Editor/TextureEditor/Release/System.Runtime.CompilerServices.Unsafe.dll
和对应的xml文件一起挪出来放到Assets/Plugins/xxx
里。此时unity会有个新的报错:
Assembly 'Assets/WX-WASM-SDK/Editor/TextureEditor/Release/SixLabors.ImageSharp.dll' will not be loaded due to errors:
Reference has errors 'System.Memory'.
Assembly 'Assets/WX-WASM-SDK/Editor/TextureEditor/Release/System.Memory.dll' will not be loaded due to errors:
System.Memory references strong named System.Runtime.CompilerServices.Unsafe Assembly references: 4.0.4.1 Found in project: 5.0.0.0.
Assembly Version Validation can be disabled in Player Settings "Assembly Version Validation"
按照提示,在Player Settings里关闭Assembly Version Validation
即可。
网友评论