在 Unity 中实现 Span<T>
Posted
技术标签:
【中文标题】在 Unity 中实现 Span<T>【英文标题】:Implement Span<T> in Unity 【发布时间】:2019-07-04 09:52:07 【问题描述】:我正在尝试在 Unity 中使用 Span。
我知道 System.Memory
尚不支持,但我还是想实现它。
我直接从NuGet下载了库。我从nuget包中的netstandard2.0文件夹中得到System.Memory.dll
并将其拖到项目Assets/Scripts文件夹中。
但我收到此错误,我无法在我的 IDE (Rider) 中使用它。
程序集“Assets/System.Memory.dll”将不会被加载,因为 到错误:无法解析参考 'System.Runtime.CompilerServices.Unsafe'。装配是否丢失或 与当前平台不兼容?
我的问题是:如何在 Unity 中使用 Span?
Unity 版本:Unity 2019.1.7f。操作系统:Windows
【问题讨论】:
正如错误所说,您缺少System.Runtime.CompilerServices.Unsafe
。查看“依赖项”选项卡on NuGet 以了解它需要哪些依赖项。您还需要检查所有依赖项的依赖项。可能更容易关注***.com/a/53458099/1086121
为什么是-1?经过几个小时的搜索,我在这里提出了我的问题,然后在其他几个小时后我找到了答案(我注意到这个答案在 Unity 论坛的多个地方被问到,所以这不仅仅是我的问题)。这里的答案可能为我节省了第二部分搜索的时间。这有什么问题吗?
【参考方案1】:
Nuget may generate issues in Unity.
解决办法是直接下载dll。
从direct download 获取库 => 下载包
将 lib/netstandartd2.0 文件夹中的 System.Memory.dll
导入项目窗口
在项目窗口中选择System.Memory.dll
,然后禁用“验证引用”
我从unity forum 获取信息并应用于我的情况。 (在论坛中他们使用 Unity Packages,而我只是在 Assets 上设置库)
【讨论】:
谢谢你。从那时起,您在使用 Spans 时遇到过任何问题吗? 我在 Windows 服务器上将它用于 unity 2019.1.something,它可以正常工作几个月。从未在移动或其他应用程序上尝试过。有时统一因未知原因崩溃,但我将其与 Enet C# Wrapper 库相关(不能完全确定)。【参考方案2】:我遇到了同样的问题。
通过下载missing package解决了
并将lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll
复制到我的游戏资源文件夹中。
【讨论】:
以上是关于在 Unity 中实现 Span<T>的主要内容,如果未能解决你的问题,请参考以下文章